<?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>8163</bug_id>
          
          <creation_ts>2006-04-03 15:25:20 -0700</creation_ts>
          <short_desc>autogenerate bindings for all of the methods and properties of Document</short_desc>
          <delta_ts>2019-02-06 09:04:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38430</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-03 15:25:20 -0700</bug_when>
    <thetext>I did all the ones that actually map to Document impl methods, and do not involve types not handled by the bindings generator yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38431</commentid>
    <comment_count>1</comment_count>
      <attachid>7492</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-03 15:26:25 -0700</bug_when>
    <thetext>Created attachment 7492
autogenerate many Document methods and attributes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38432</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-04-03 15:33:37 -0700</bug_when>
    <thetext>The diff doesn&apos;t contain Document.idl. Please attach or make a new diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38433</commentid>
    <comment_count>3</comment_count>
      <attachid>7492</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-04-03 15:34:10 -0700</bug_when>
    <thetext>Comment on attachment 7492
autogenerate many Document methods and attributes

Document.idl missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38489</commentid>
    <comment_count>4</comment_count>
      <attachid>7498</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-04 02:27:39 -0700</bug_when>
    <thetext>Created attachment 7498
fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38490</commentid>
    <comment_count>5</comment_count>
      <attachid>7498</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-04-04 02:46:34 -0700</bug_when>
    <thetext>Comment on attachment 7498
fixed patch

So I think this is fine to land as-is.  However, I also think it would be even better to move more of Document to the idl before landing.  I&apos;m going to trust you that all the tests pass.  Now we just have to hope that we have enough testing coverage. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38586</commentid>
    <comment_count>6</comment_count>
      <attachid>7520</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-05 02:00:32 -0700</bug_when>
    <thetext>Created attachment 7520
patch that does all of it, but doesn&apos;t work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38589</commentid>
    <comment_count>7</comment_count>
      <attachid>7522</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-04-05 03:41:28 -0700</bug_when>
    <thetext>Created attachment 7522
a version that does the whole thing and actually works!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38590</commentid>
    <comment_count>8</comment_count>
      <attachid>7522</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-04-05 03:44:56 -0700</bug_when>
    <thetext>Comment on attachment 7522
a version that does the whole thing and actually works!

r=me

I&apos;d like to see a comment in CodeGeneratorJS.pm about why Document needs a special destructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503147</commentid>
    <comment_count>9</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:04:19 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7492</attachid>
            <date>2006-04-03 15:26:25 -0700</date>
            <delta_ts>2006-04-04 02:27:39 -0700</delta_ts>
            <desc>autogenerate many Document methods and attributes</desc>
            <filename>document-autogen.patch.txt</filename>
            <type>text/plain</type>
            <size>23710</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VjbWEva2pzX2h0bWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2VjbWEv
a2pzX2h0bWwuY3BwCShyZXZpc2lvbiAxMzY1OCkKKysrIGtodG1sL2VjbWEva2pzX2h0bWwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVh
RWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaCIKKyNpbmNsdWRlICJKU0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5v
ZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImNzc19ydWxlaW1wbC5oIgpA
QCAtMTM1LDggKzEzNiw5IEBAIEpTVmFsdWUgKkhUTUxEb2NGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rp
b24KICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKKy8vIEZJWE1FOiBmdW5jdGlvbnMgc2hv
dWxkIGJlIGluIHRoZSBwcm90b3R5cGUKIGNvbnN0IENsYXNzSW5mbyBKU0hUTUxEb2N1bWVudDo6
aW5mbyA9Ci0gIHsgIkhUTUxEb2N1bWVudCIsICZET01Eb2N1bWVudDo6aW5mbywgJkhUTUxEb2N1
bWVudFRhYmxlLCAwIH07CisgIHsgIkhUTUxEb2N1bWVudCIsICZKU0RvY3VtZW50OjppbmZvLCAm
SFRNTERvY3VtZW50VGFibGUsIDAgfTsKIC8qIFNvdXJjZSBmb3IgSFRNTERvY3VtZW50VGFibGUu
IFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIEhUTUxEb2N1bWVu
dFRhYmxlIDMwCiAgIHRpdGxlICAgICAgICAgICAgICAgICBKU0hUTUxEb2N1bWVudDo6VGl0bGUg
ICAgICAgICAgICAgRG9udERlbGV0ZQpAQCAtMTg0LDcgKzE4Niw3IEBAIGNvbnN0IENsYXNzSW5m
byBKU0hUTUxEb2N1bWVudDo6aW5mbyA9CiAqLwogCiBKU0hUTUxEb2N1bWVudDo6SlNIVE1MRG9j
dW1lbnQoRXhlY1N0YXRlICpleGVjLCBIVE1MRG9jdW1lbnQgKmQpCi0gIDogRE9NRG9jdW1lbnQo
ZXhlYywgZCkKKyAgOiBKU0RvY3VtZW50KGV4ZWMsIGQpCiB7CiB9CiAKQEAgLTMxNiwxMiArMzE4
LDEyIEBAIGJvb2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdCgKICAgICByZXR1
cm4gdHJ1ZTsKICAgfQogCi0gIHJldHVybiBET01Eb2N1bWVudDo6Z2V0T3duUHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgIHJldHVybiBKU0RvY3VtZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBKU0hUTUxE
b2N1bWVudDo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlO
YW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIpCiB7Ci0gICAgbG9va3VwUHV0PEpTSFRNTERv
Y3VtZW50LCBET01Eb2N1bWVudD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgJkhU
TUxEb2N1bWVudFRhYmxlLCB0aGlzKTsKKyAgICBsb29rdXBQdXQ8SlNIVE1MRG9jdW1lbnQsIEpT
RG9jdW1lbnQ+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZIVE1MRG9jdW1lbnRU
YWJsZSwgdGhpcyk7CiB9CiAKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnB1dFZhbHVlUHJvcGVydHko
RXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZhbHVlLCBpbnQgLyphdHRyKi8p
CkluZGV4OiBraHRtbC9lY21hL2tqc19odG1sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9r
anNfaHRtbC5oCShyZXZpc2lvbiAxMzY1OCkKKysrIGtodG1sL2VjbWEva2pzX2h0bWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogI2lmbmRlZiBLSlNfSFRNTF9IXwogI2RlZmlu
ZSBLSlNfSFRNTF9IXwogCisjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRWxl
bWVudC5oIgotI2luY2x1ZGUgImtqc19kb20uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDsKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIEtKUyB7CiAKICAgY2xhc3MgSlNBYnN0cmFjdEV2ZW50TGlzdGVuZXI7CiAKLSAgY2xhc3Mg
SlNIVE1MRG9jdW1lbnQgOiBwdWJsaWMgRE9NRG9jdW1lbnQgeworICBjbGFzcyBKU0hUTUxEb2N1
bWVudCA6IHB1YmxpYyBXZWJDb3JlOjpKU0RvY3VtZW50IHsKICAgcHVibGljOgogICAgIEpTSFRN
TERvY3VtZW50KEV4ZWNTdGF0ZSAqZXhlYywgV2ViQ29yZTo6SFRNTERvY3VtZW50ICpkKTsKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMTM2
NTgpCisrKyBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4
LDYgKzI0OCwxMyBAQCBKU1ZhbHVlICpqc1N0cmluZ09yVW5kZWZpbmVkKGNvbnN0IFN0cmluCiAg
ICAgcmV0dXJuIGpzU3RyaW5nKHMpOwogfQogCitKU1ZhbHVlICpqc1N0cmluZ09yRmFsc2UoY29u
c3QgU3RyaW5nICZzKQoreworICAgIGlmIChzLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4ganNC
b29sZWFuKGZhbHNlKTsKKyAgICByZXR1cm4ganNTdHJpbmcocyk7Cit9CisKIFN0cmluZyB2YWx1
ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhFeGVjU3RhdGUgKmV4ZWMsIEpTVmFsdWUgKnZhbCkKIHsK
ICAgICBpZiAodmFsLT5pc051bGwoKSkKSW5kZXg6IGtodG1sL2VjbWEva2pzX2RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfZG9tLmNwcAkocmV2aXNpb24gMTM2NTgpCisrKyBr
aHRtbC9lY21hL2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsMzYgKzgwNCwxNiBA
QCBBdHRyKiB0b0F0dHIoSlNWYWx1ZSogdmFsLCBib29sJiBvaykKIAogLyogU291cmNlIGZvciBE
T01Eb2N1bWVudFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRl
LgogQGJlZ2luIERPTURvY3VtZW50UHJvdG9UYWJsZSAyOQotICBhZG9wdE5vZGUgICAgICAgRE9N
RG9jdW1lbnQ6OkFkb3B0Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAxCi0gIGNyZWF0ZUVsZW1lbnQgICBET01Eb2N1bWVudDo6Q3JlYXRlRWxlbWVudCAgICAg
ICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICAgY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCBET01Eb2N1bWVudDo6Q3JlYXRlRG9jdW1lbnRGcmFnbWVudCAgIERvbnREZWxldGV8RnVu
Y3Rpb24gMQotICBjcmVhdGVUZXh0Tm9kZSAgRE9NRG9jdW1lbnQ6OkNyZWF0ZVRleHROb2RlICAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiAgIGNyZWF0ZUNvbW1lbnQgICBE
T01Eb2N1bWVudDo6Q3JlYXRlQ29tbWVudCAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDEKICAgY3JlYXRlQ0RBVEFTZWN0aW9uIERPTURvY3VtZW50OjpDcmVhdGVDREFUQVNl
Y3Rpb24gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBjcmVhdGVQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24gRE9NRG9jdW1lbnQ6OkNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBEb250
RGVsZXRlfEZ1bmN0aW9uIDEKLSAgY3JlYXRlQXR0cmlidXRlIERPTURvY3VtZW50OjpDcmVhdGVB
dHRyaWJ1dGUgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogICBjcmVhdGVF
bnRpdHlSZWZlcmVuY2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUVudGl0eVJlZmVyZW5jZSAgICAgRG9u
dERlbGV0ZXxGdW5jdGlvbiAxCi0gIGVsZW1lbnRGcm9tUG9pbnQgICAgIERPTURvY3VtZW50OjpF
bGVtZW50RnJvbVBvaW50ICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgZ2V0RWxl
bWVudHNCeVRhZ05hbWUgIERPTURvY3VtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZSAgICAgIERv
bnREZWxldGV8RnVuY3Rpb24gMQotICBpbXBvcnROb2RlICAgICAgICAgICBET01Eb2N1bWVudDo6
SW1wb3J0Tm9kZSAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGNyZWF0
ZUVsZW1lbnROUyAgICAgIERPTURvY3VtZW50OjpDcmVhdGVFbGVtZW50TlMgICAgICAgICAgICBE
b250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgY3JlYXRlQXR0cmlidXRlTlMgICAgRE9NRG9jdW1lbnQ6
OkNyZWF0ZUF0dHJpYnV0ZU5TICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgotICBnZXRF
bGVtZW50c0J5VGFnTmFtZU5TICBET01Eb2N1bWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWVOUyAg
RG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGdldEVsZW1lbnRCeUlkICAgICBET01Eb2N1bWVudDo6
R2V0RWxlbWVudEJ5SWQgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgY3Jl
YXRlUmFuZ2UgICAgICAgIERPTURvY3VtZW50OjpDcmVhdGVSYW5nZSAgICAgICAgICAgICAgICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMAogICBjcmVhdGVOb2RlSXRlcmF0b3IgRE9NRG9jdW1lbnQ6
OkNyZWF0ZU5vZGVJdGVyYXRvciAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCiAgIGNy
ZWF0ZVRyZWVXYWxrZXIgICBET01Eb2N1bWVudDo6Q3JlYXRlVHJlZVdhbGtlciAgICAgICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDQKICAgY3JlYXRlRXZlbnQgICAgICAgIERPTURvY3VtZW50
OjpDcmVhdGVFdmVudCAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogICBn
ZXRPdmVycmlkZVN0eWxlICAgRE9NRG9jdW1lbnQ6OkdldE92ZXJyaWRlU3R5bGUgICAgICAgICAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGV4ZWNDb21tYW5kICAgICAgICBET01Eb2N1bWVu
dDo6RXhlY0NvbW1hbmQgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKLSAg
cXVlcnlDb21tYW5kRW5hYmxlZCBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kRW5hYmxlZCAgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBxdWVyeUNvbW1hbmRJbmRldGVybSBET01Eb2N1
bWVudDo6UXVlcnlDb21tYW5kSW5kZXRlcm0gICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0g
IHF1ZXJ5Q29tbWFuZFN0YXRlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRTdGF0ZSAgICAgICAg
ICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgcXVlcnlDb21tYW5kU3VwcG9ydGVkIERPTURv
Y3VtZW50OjpRdWVyeUNvbW1hbmRTdXBwb3J0ZWQgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQot
ICBxdWVyeUNvbW1hbmRWYWx1ZSBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kVmFsdWUgICAgICAg
ICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiBAZW5kCiAqLwotS0pTX0RFRklORV9QUk9UT1RZ
UEVfV0lUSF9QUk9UT1RZUEUoRE9NRG9jdW1lbnRQcm90bywgRE9NRXZlbnRUYXJnZXROb2RlUHJv
dG8pCiBLSlNfSU1QTEVNRU5UX1BST1RPRlVOQyhET01Eb2N1bWVudFByb3RvRnVuYykKIEtKU19J
TVBMRU1FTlRfUFJPVE9UWVBFKCJET01Eb2N1bWVudCIsIERPTURvY3VtZW50UHJvdG8sIERPTURv
Y3VtZW50UHJvdG9GdW5jKQogCkBAIC04NDEsMTcgKzgyMSwxMiBAQCBjb25zdCBDbGFzc0luZm8g
RE9NRG9jdW1lbnQ6OmluZm8gPSB7ICJECiAKIC8qIFNvdXJjZSBmb3IgRE9NRG9jdW1lbnRUYWJs
ZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9NRG9jdW1l
bnRUYWJsZSAxNwotICBkb2N0eXBlICAgICAgICAgRE9NRG9jdW1lbnQ6OkRvY1R5cGUgICAgICAg
ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBpbXBsZW1lbnRhdGlvbiAg
RE9NRG9jdW1lbnQ6OkltcGxlbWVudGF0aW9uICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQotICBkb2N1bWVudEVsZW1lbnQgRE9NRG9jdW1lbnQ6OkRvY3VtZW50RWxlbWVudCAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBjaGFyc2V0ICAgICAgICAgRE9N
RG9jdW1lbnQ6OkNoYXJzZXQgICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQogICBk
ZWZhdWx0Q2hhcnNldCAgRE9NRG9jdW1lbnQ6OkRlZmF1bHRDaGFyc2V0ICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQogICBjaGFyYWN0ZXJTZXQgICAgRE9NRG9jdW1lbnQ6OkNo
YXJhY3RlclNldCAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBhY3R1
YWxFbmNvZGluZyAgRE9NRG9jdW1lbnQ6OkFjdHVhbEVuY29kaW5nICAgICAgICAgICAgICAgICAg
RG9udERlbGV0ZXxSZWFkT25seQogICBpbnB1dEVuY29kaW5nICAgRE9NRG9jdW1lbnQ6OklucHV0
RW5jb2RpbmcgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBzdHlsZVNo
ZWV0cyAgICAgRE9NRG9jdW1lbnQ6OlN0eWxlU2hlZXRzICAgICAgICAgICAgICAgICAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQotICBwcmVmZXJyZWRTdHlsZXNoZWV0U2V0ICBET01Eb2N1bWVudDo6
UHJlZmVycmVkU3R5bGVzaGVldFNldCAgRG9udERlbGV0ZXxSZWFkT25seQotICBzZWxlY3RlZFN0
eWxlc2hlZXRTZXQgIERPTURvY3VtZW50OjpTZWxlY3RlZFN0eWxlc2hlZXRTZXQgICAgRG9udERl
bGV0ZQogICByZWFkeVN0YXRlICAgICAgRE9NRG9jdW1lbnQ6OlJlYWR5U3RhdGUgICAgICAgICAg
ICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBkZWZhdWx0VmlldyAgICAgICAgRE9N
RG9jdW1lbnQ6OkRlZmF1bHRWaWV3ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25s
eQogQGVuZApAQCAtODgzLDEyICs4NTgsNiBAQCBKU1ZhbHVlICpET01Eb2N1bWVudDo6Z2V0VmFs
dWVQcm9wZXJ0eShFCiAgIERvY3VtZW50ICZkb2MgPSAqc3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4o
aW1wbCgpKTsKIAogICBzd2l0Y2godG9rZW4pIHsKLSAgY2FzZSBEb2NUeXBlOgotICAgIHJldHVy
biB0b0pTKGV4ZWMsZG9jLmRvY3R5cGUoKSk7Ci0gIGNhc2UgSW1wbGVtZW50YXRpb246Ci0gICAg
cmV0dXJuIHRvSlMoZXhlYywgZG9jLmltcGxlbWVudGF0aW9uKCkpOwotICBjYXNlIERvY3VtZW50
RWxlbWVudDoKLSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5kb2N1bWVudEVsZW1lbnQoKSk7CiAg
IGNhc2UgQ2hhcnNldDoKICAgY2FzZSBDaGFyYWN0ZXJTZXQ6CiAgIGNhc2UgQWN0dWFsRW5jb2Rp
bmc6CkBAIC05MDIsMTAgKzg3MSw2IEBAIEpTVmFsdWUgKkRPTURvY3VtZW50OjpnZXRWYWx1ZVBy
b3BlcnR5KEUKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgY2FzZSBTdHlsZVNoZWV0czoK
ICAgICByZXR1cm4gZ2V0RE9NU3R5bGVTaGVldExpc3QoZXhlYywgZG9jLnN0eWxlU2hlZXRzKCks
ICZkb2MpOwotICBjYXNlIFByZWZlcnJlZFN0eWxlc2hlZXRTZXQ6Ci0gICAgcmV0dXJuIGpzU3Ry
aW5nT3JOdWxsKGRvYy5wcmVmZXJyZWRTdHlsZXNoZWV0U2V0KCkpOwotICBjYXNlIFNlbGVjdGVk
U3R5bGVzaGVldFNldDoKLSAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZG9jLnNlbGVjdGVkU3R5
bGVzaGVldFNldCgpKTsKICAgY2FzZSBSZWFkeVN0YXRlOgogICAgIGlmIChGcmFtZSAqZnJhbWUg
PSBkb2MuZnJhbWUoKSkgewogICAgICAgaWYgKGZyYW1lLT5pc0NvbXBsZXRlKCkpIHJldHVybiBq
c1N0cmluZygiY29tcGxldGUiKTsKQEAgLTkzMSw5ICs4OTYsNiBAQCB2b2lkIERPTURvY3VtZW50
OjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTCiB7CiAgIERvY3VtZW50ICZkb2MgPSAqc3RhdGljX2Nh
c3Q8RG9jdW1lbnQgKj4oaW1wbCgpKTsKICAgc3dpdGNoICh0b2tlbikgewotICAgIGNhc2UgU2Vs
ZWN0ZWRTdHlsZXNoZWV0U2V0OgotICAgICAgZG9jLnNldFNlbGVjdGVkU3R5bGVzaGVldFNldCh2
YWx1ZS0+dG9TdHJpbmcoZXhlYykpOwotICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyc2V0Ogog
ICAgICAgZG9jLmRlY29kZXIoKS0+c2V0RW5jb2RpbmdOYW1lKHZhbHVlLT50b1N0cmluZyhleGVj
KS5jc3RyaW5nKCkuY19zdHIoKSwgRGVjb2Rlcjo6VXNlckNob3NlbkVuY29kaW5nKTsKICAgICAg
IGJyZWFrOwpAQCAtOTUxLDQwICs5MTMsMTQgQEAgSlNWYWx1ZSAqRE9NRG9jdW1lbnRQcm90b0Z1
bmM6OmNhbGxBc0Z1bgogICBXZWJDb3JlOjpTdHJpbmcgcyA9IHN0cjsKIAogICBzd2l0Y2goaWQp
IHsKLSAgY2FzZSBET01Eb2N1bWVudDo6QWRvcHROb2RlOgotICAgIHJldHVybiB0b0pTKGV4ZWMs
ZG9jLmFkb3B0Tm9kZSh0b05vZGUoYXJnc1swXSksZXhjZXB0aW9uKSk7Ci0gIGNhc2UgRE9NRG9j
dW1lbnQ6OkNyZWF0ZUVsZW1lbnQ6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlRWxl
bWVudChzLCBleGNlcHRpb24pKTsKICAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlRG9jdW1lbnRG
cmFnbWVudDoKICAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5jcmVhdGVEb2N1bWVudEZyYWdtZW50
KCkpOwotICBjYXNlIERPTURvY3VtZW50OjpDcmVhdGVUZXh0Tm9kZToKLSAgICByZXR1cm4gdG9K
UyhleGVjLGRvYy5jcmVhdGVUZXh0Tm9kZShzKSk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0
ZUNvbW1lbnQ6CiAgICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlQ29tbWVudChzKSk7CiAg
IGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUNEQVRBU2VjdGlvbjoKICAgICByZXR1cm4gdG9KUyhl
eGVjLCBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKHMsIGV4Y2VwdGlvbikpOwotICBjYXNlIERPTURv
Y3VtZW50OjpDcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Ci0gICAgcmV0dXJuIHRvSlMoZXhl
YywgZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihhcmdzWzBdLT50b1N0cmluZyhleGVj
KSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYyksIGV4Y2VwdGlvbikpOwotICBjYXNlIERPTURvY3Vt
ZW50OjpDcmVhdGVBdHRyaWJ1dGU6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlQXR0
cmlidXRlKHMsIGV4Y2VwdGlvbikpOwogICBjYXNlIERPTURvY3VtZW50OjpDcmVhdGVFbnRpdHlS
ZWZlcmVuY2U6CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZG9jLmNyZWF0ZUVudGl0eVJlZmVyZW5j
ZShzLCBleGNlcHRpb24pKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6RWxlbWVudEZyb21Qb2ludDoK
LSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5lbGVtZW50RnJvbVBvaW50KChpbnQpYXJnc1swXS0+
dG9OdW1iZXIoZXhlYyksIChpbnQpYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykpKTsKLSAgY2FzZSBE
T01Eb2N1bWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWU6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxk
b2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUocykuZ2V0KCkpOwotICBjYXNlIERPTURvY3VtZW50OjpJ
bXBvcnROb2RlOiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuaW1wb3J0Tm9kZSh0
b05vZGUoYXJnc1swXSksIGFyZ3NbMV0tPnRvQm9vbGVhbihleGVjKSwgZXhjZXB0aW9uKSk7Ci0g
IGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUVsZW1lbnROUzogLy8gRE9NMgotICAgIHJldHVybiB0
b0pTKGV4ZWMsZG9jLmNyZWF0ZUVsZW1lbnROUyhzLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSwg
ZXhjZXB0aW9uKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUF0dHJpYnV0ZU5TOiAvLyBE
T00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlQXR0cmlidXRlTlMocywgYXJnc1sx
XS0+dG9TdHJpbmcoZXhlYyksIGV4Y2VwdGlvbikpOwotICBjYXNlIERPTURvY3VtZW50OjpHZXRF
bGVtZW50c0J5VGFnTmFtZU5TOiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuZ2V0
RWxlbWVudHNCeVRhZ05hbWVOUyhzLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSkuZ2V0KCkpOwot
ICBjYXNlIERPTURvY3VtZW50OjpHZXRFbGVtZW50QnlJZDoKLSAgICByZXR1cm4gdG9KUyhleGVj
LGRvYy5nZXRFbGVtZW50QnlJZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICBjYXNlIERP
TURvY3VtZW50OjpDcmVhdGVSYW5nZToKLSAgICByZXR1cm4gdG9KUyhleGVjLCBkb2MuY3JlYXRl
UmFuZ2UoKS5nZXQoKSk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZU5vZGVJdGVyYXRvcjog
ewogICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXI7CiAgICAgSlNWYWx1ZSogYXJnMiA9IGFy
Z3NbMl07CkBAIC0xMDEyLDMxICs5NDgsNiBAQCBKU1ZhbHVlICpET01Eb2N1bWVudFByb3RvRnVu
Yzo6Y2FsbEFzRnVuCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmdldE92ZXJyaWRlU3R5
bGUoZWxlbWVudDAsIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgLy8gRklYTUU6IElz
IHVuZGVmaW5lZCByaWdodCBoZXJlLCBvciBzaG91bGQgd2UgcmFpc2UgYW4gZXhjZXB0aW9uPwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICBjYXNlIERPTURvY3VtZW50OjpFeGVjQ29tbWFu
ZDogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLmV4ZWNDb21tYW5kKGFyZ3NbMF0tPnRvU3Ry
aW5nKGV4ZWMpLCBhcmdzWzFdLT50b0Jvb2xlYW4oZXhlYyksIGFyZ3NbMl0tPnRvU3RyaW5nKGV4
ZWMpKSk7Ci0gIH0KLSAgY2FzZSBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kRW5hYmxlZDogewot
ICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLnF1ZXJ5Q29tbWFuZEVuYWJsZWQoYXJnc1swXS0+dG9T
dHJpbmcoZXhlYykpKTsKLSAgfQotICBjYXNlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRJbmRl
dGVybTogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLnF1ZXJ5Q29tbWFuZEluZGV0ZXJtKGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSk7Ci0gIH0KLSAgY2FzZSBET01Eb2N1bWVudDo6UXVlcnlD
b21tYW5kU3RhdGU6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNvbW1hbmRTdGF0
ZShhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICB9Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OlF1
ZXJ5Q29tbWFuZFN1cHBvcnRlZDogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLnF1ZXJ5Q29t
bWFuZFN1cHBvcnRlZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICB9Ci0gIGNhc2UgRE9N
RG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZFZhbHVlOiB7Ci0gICAgV2ViQ29yZTo6U3RyaW5nIGNvbW1h
bmRWYWx1ZShkb2MucXVlcnlDb21tYW5kVmFsdWUoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKTsK
LSAgICAvLyBNZXRob2QgcmV0dXJucyBudWxsIFN0cmluZyB0byBzaWduYWwgY29tbWFuZCBpcyB1
bnN1cHBvcnRlZC4KLSAgICAvLyBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBtZXRo
b2Qgc2F5czoKLSAgICAvLyAiSWYgbm90IHN1cHBvcnRlZCBbZm9yIGEgY29tbWFuZCBpZGVudGlm
aWVyXSwgdGhpcyBtZXRob2QgcmV0dXJucyBhIEJvb2xlYW4gc2V0IHRvIGZhbHNlLiIKLSAgICBp
ZiAoY29tbWFuZFZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4ganNCb29sZWFuKGZhbHNl
KTsKLSAgICBlbHNlIAotICAgICAgICByZXR1cm4ganNTdHJpbmcoY29tbWFuZFZhbHVlKTsKLSAg
fQogICBkZWZhdWx0OgogICAgIGJyZWFrOwogICB9CkBAIC0xMzUyLDE2ICsxMjYzLDE2IEBAIEpT
VmFsdWUqIHRvSlMoRXhlY1N0YXRlICpleGVjLCBEb2N1bWVudCAKICAgaWYgKCFuKQogICAgIHJl
dHVybiBqc051bGwoKTsKIAotICBET01Eb2N1bWVudCAqcmV0ID0gMDsKKyAgSlNEb2N1bWVudCAq
cmV0ID0gMDsKICAgU2NyaXB0SW50ZXJwcmV0ZXIqIGludGVycCA9IHN0YXRpY19jYXN0PFNjcmlw
dEludGVycHJldGVyICo+KGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpKTsKIAotICBpZiAoKHJl
dCA9IHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KGludGVycC0+Z2V0RE9NT2JqZWN0KG4pKSkp
CisgIGlmICgocmV0ID0gc3RhdGljX2Nhc3Q8SlNEb2N1bWVudCAqPihpbnRlcnAtPmdldERPTU9i
amVjdChuKSkpKQogICAgIHJldHVybiByZXQ7CiAKICAgaWYgKG4tPmlzSFRNTERvY3VtZW50KCkp
CiAgICAgcmV0ID0gbmV3IEpTSFRNTERvY3VtZW50KGV4ZWMsIHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCAqPihuKSk7CiAgIGVsc2UKLSAgICByZXQgPSBuZXcgRE9NRG9jdW1lbnQoZXhlYywgbik7
CisgICAgcmV0ID0gbmV3IEpTRG9jdW1lbnQoZXhlYywgbik7CiAKICAgLy8gTWFrZSBzdXJlIHRo
ZSBkb2N1bWVudCBpcyBrZXB0IGFyb3VuZCBieSB0aGUgd2luZG93IG9iamVjdCwgYW5kIHdvcmtz
IHJpZ2h0IHdpdGggdGhlCiAgIC8vIGJhY2svZm9yd2FyZCBjYWNoZS4KSW5kZXg6IGtodG1sL2Vj
bWEva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19iaW5kaW5nLmgJ
KHJldmlzaW9uIDEzNjU4KQorKysga2h0bWwvZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTAsNiArMTUwLDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAqLwogICBKU1ZhbHVl
ICpqc1N0cmluZ09yVW5kZWZpbmVkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCisgIEpTVmFs
dWUgKmpzU3RyaW5nT3JGYWxzZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKworCiAgIC8qKgog
ICAgKiAgR2V0IGEgU3RyaW5nIG9iamVjdCBvciBhIG51bGwgU3RyaW5nIGlmIHRoZSB2YWx1ZSBp
cyBudWxsCiAgICAqLwpJbmRleDoga2h0bWwvZWNtYS9ranNfZG9tLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwvZWNtYS9ranNfZG9tLmgJKHJldmlzaW9uIDEzNjU4KQorKysga2h0bWwvZWNtYS9ranNf
ZG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
UmVmUHRyPFdlYkNvcmU6Ok5vZGVMaXN0PiBtX2ltcGw7CiAgIH07CiAKKyAgS0pTX0RFRklORV9Q
Uk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUoRE9NRG9jdW1lbnRQcm90bywgRE9NRXZlbnRUYXJnZXRO
b2RlUHJvdG8pCisKICAgY2xhc3MgRE9NRG9jdW1lbnQgOiBwdWJsaWMgRE9NRXZlbnRUYXJnZXRO
b2RlIHsKICAgcHVibGljOgogICAgIERPTURvY3VtZW50KEV4ZWNTdGF0ZSAqZXhlYywgV2ViQ29y
ZTo6RG9jdW1lbnQgKmQpOwpAQCAtMTQ2LDE5ICsxNDgsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgcHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAq
dmFsdWUsIGludCBhdHRyKTsKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGlu
Zm87Ci0gICAgZW51bSB7IERvY1R5cGUsIEltcGxlbWVudGF0aW9uLCBEb2N1bWVudEVsZW1lbnQs
IAotICAgICAgICAgICBDaGFyc2V0LCBEZWZhdWx0Q2hhcnNldCwgQ2hhcmFjdGVyU2V0LCBBY3R1
YWxFbmNvZGluZywgSW5wdXRFbmNvZGluZywKKyAgICBlbnVtIHsgQ2hhcnNldCwgRGVmYXVsdENo
YXJzZXQsIENoYXJhY3RlclNldCwgQWN0dWFsRW5jb2RpbmcsIElucHV0RW5jb2RpbmcsCiAgICAg
ICAgICAgIC8vIEZ1bmN0aW9ucwotICAgICAgICAgICBBZG9wdE5vZGUsCi0gICAgICAgICAgIENy
ZWF0ZUVsZW1lbnQsIENyZWF0ZURvY3VtZW50RnJhZ21lbnQsIENyZWF0ZVRleHROb2RlLCBDcmVh
dGVDb21tZW50LAotICAgICAgICAgICBDcmVhdGVDREFUQVNlY3Rpb24sIENyZWF0ZVByb2Nlc3Np
bmdJbnN0cnVjdGlvbiwgQ3JlYXRlQXR0cmlidXRlLAotICAgICAgICAgICBDcmVhdGVFbnRpdHlS
ZWZlcmVuY2UsIEdldEVsZW1lbnRzQnlUYWdOYW1lLCBJbXBvcnROb2RlLCBDcmVhdGVFbGVtZW50
TlMsCi0gICAgICAgICAgIENyZWF0ZUF0dHJpYnV0ZU5TLCBHZXRFbGVtZW50c0J5VGFnTmFtZU5T
LCBHZXRFbGVtZW50QnlJZCwKLSAgICAgICAgICAgQ3JlYXRlUmFuZ2UsIENyZWF0ZU5vZGVJdGVy
YXRvciwgQ3JlYXRlVHJlZVdhbGtlciwgRGVmYXVsdFZpZXcsCi0gICAgICAgICAgIENyZWF0ZUV2
ZW50LCBFbGVtZW50RnJvbVBvaW50LCBTdHlsZVNoZWV0cywgUHJlZmVycmVkU3R5bGVzaGVldFNl
dCwgCi0gICAgICAgICAgIFNlbGVjdGVkU3R5bGVzaGVldFNldCwgR2V0T3ZlcnJpZGVTdHlsZSwg
UmVhZHlTdGF0ZSwgCi0gICAgICAgICAgIEV4ZWNDb21tYW5kLCBRdWVyeUNvbW1hbmRFbmFibGVk
LCBRdWVyeUNvbW1hbmRJbmRldGVybSwgUXVlcnlDb21tYW5kU3RhdGUsIAotICAgICAgICAgICBR
dWVyeUNvbW1hbmRTdXBwb3J0ZWQsIFF1ZXJ5Q29tbWFuZFZhbHVlIH07CisgICAgICAgICAgIENy
ZWF0ZURvY3VtZW50RnJhZ21lbnQsIENyZWF0ZUNvbW1lbnQsCisgICAgICAgICAgIENyZWF0ZUNE
QVRBU2VjdGlvbiwgCisgICAgICAgICAgIENyZWF0ZUVudGl0eVJlZmVyZW5jZSwgCisgICAgICAg
ICAgIENyZWF0ZU5vZGVJdGVyYXRvciwgQ3JlYXRlVHJlZVdhbGtlciwgRGVmYXVsdFZpZXcsCisg
ICAgICAgICAgIENyZWF0ZUV2ZW50LCBTdHlsZVNoZWV0cywgR2V0T3ZlcnJpZGVTdHlsZSwgUmVh
ZHlTdGF0ZSB9OwogCiAgIHByb3RlY3RlZDoKICAgICAvLyBDb25zdHJ1Y3RvciBmb3IgaW5oZXJp
dGVkIGNsYXNzZXM7IGRvZXNuJ3Qgc2V0IHVwIGEgcHJvdG90eXBlLgpJbmRleDogcGxhdGZvcm0v
QXRvbWljU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vQXRvbWljU3RyaW5nLmgJKHJl
dmlzaW9uIDEzNjU4KQorKysgcGxhdGZvcm0vQXRvbWljU3RyaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmluZyhjb25zdCBLSlM6Oklk
ZW50aWZpZXImIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoU3Ry
aW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7IH0KICAgICBBdG9taWNTdHJpbmco
QXRvbWljU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGltcCkgeyB9Ci0gICAgZXhwbGljaXQg
QXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7
IH0KKyAgICBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzLmlt
cGwoKSkpIHsgfQogICAgIAogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgZG9tU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH07CkluZGV4OiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzCShyZXZpc2lvbiAxMzY1OCkKKysrIGdl
bmVyYXRlLWRlcml2ZWQtc291cmNlcwkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxNSBA
QCBpZiBbIGRvbS9Eb2N1bWVudFR5cGUuaWRsIC1udCAiJERlcml2ZWRTCiAgIHBlcmwgLUliaW5k
aW5ncy9zY3JpcHRzIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgLS1nZW5l
cmF0b3IgSlMgLS1pbmNsdWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLW91dHB1dGRpciAiJERlcml2
ZWRTb3VyY2VzRGlyIiBkb20vRG9jdW1lbnRUeXBlLmlkbAogZmkKIAoraWYgWyBkb20vRG9jdW1l
bnQuaWRsIC1udCAiJERlcml2ZWRTb3VyY2VzRGlyL0pTRG9jdW1lbnQuaCIgLW8gXAorICAgICBi
aW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC1udCAiJERlcml2ZWRTb3VyY2Vz
RGlyL0pTRG9jdW1lbnQuaCIgLW8gXAorICAgICBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0gLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNEb2N1bWVudC5oIiAtbyBcCisgICAgIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIC1udCAiJERlcml2ZWRTb3VyY2VzRGly
L0pTRG9jdW1lbnQuaCIgLW8gXAorICAgICBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSAt
bnQgIiREZXJpdmVkU291cmNlc0Rpci9KU0RvY3VtZW50LmgiIC1vIFwKKyAgICAgYmluZGluZ3Mv
c2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0gLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNEb2N1bWVu
dC5oIiBdOyB0aGVuCisgIHBlcmwgLUliaW5kaW5ncy9zY3JpcHRzIGJpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MucGwgLS1nZW5lcmF0b3IgSlMgLS1pbmNsdWRlIGRvbSAtLWluY2x1
ZGUgaHRtbCAtLW91dHB1dGRpciAiJERlcml2ZWRTb3VyY2VzRGlyIiBkb20vRG9jdW1lbnQuaWRs
CitmaQorCiBpZiBbIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwgLW50ICIkRGVyaXZlZFNvdXJj
ZXNEaXIvSlNET01JbXBsZW1lbnRhdGlvbi5oIiAtbyBcCiAgICAgIGJpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MucGwgLW50ICIkRGVyaXZlZFNvdXJjZXNEaXIvSlNET01JbXBsZW1l
bnRhdGlvbi5oIiAtbyBcCiAgICAgIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSAt
bnQgIiREZXJpdmVkU291cmNlc0Rpci9KU0RPTUltcGxlbWVudGF0aW9uLmgiIC1vIFwKSW5kZXg6
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMzY1OCkKKysrIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04NDEsMTYg
Kzg0MSwyMyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgaWYgKGRlZmluZWQgJGNvbnYpIHsK
ICAgICAgIGlmICgkY29udiBlcSAiTnVsbCIpIHsKICAgICAgICAgcmV0dXJuICJqc1N0cmluZ09y
TnVsbCgkdmFsdWUpIjsKKyAgICAgIH0gZWxzaWYgKCRjb252IGVxICJGYWxzZSIpIHsKKyAgICAg
ICAgcmV0dXJuICJqc1N0cmluZ09yRmFsc2UoJHZhbHVlKSI7CiAgICAgICB9IGVsc2UgewogICAg
ICAgICBkaWUgIlVua25vd24gdmFsdWUgZm9yIENvbnZlcnROdWxsU3RyaW5nVG8gZXh0ZW5kZWQg
YXR0cmlidXRlIjsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgcmV0dXJuICJqc1N0cmlu
ZygkdmFsdWUpIjsKICAgICB9CisgIH0gZWxzaWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlv
biIpIHsKKyAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CisgICAgJGltcGxJbmNs
dWRlc3siSlNET01JbXBsZW1lbnRhdGlvbi5oIn0gPSAxOworICAgIHJldHVybiAidG9KUyhleGVj
LCAkdmFsdWUpIjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIk5vZGUiIG9yCiAgICAgICAgICAgICR0
eXBlIGVxICJUZXh0IiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiRG9jdW1lbnRUeXBlIiBvcgog
ICAgICAgICAgICAkdHlwZSBlcSAiRG9jdW1lbnQiIG9yCisgICAgICAgICAgICR0eXBlIGVxICJQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24iIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJIVE1MRG9jdW1l
bnQiIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJFbGVtZW50IiBvcgogICAgICAgICAgICAkdHlw
ZSBlcSAiQXR0ciIgb3IKQEAgLTg1OCw2ICs4NjUsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAg
ICAgJGltcGxJbmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwogICAgICRpbXBsSW5jbHVkZXN7Ik5v
ZGUuaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CisgICAgJGlt
cGxJbmNsdWRlc3siRG9jdW1lbnRUeXBlLmgifSA9IDE7CiAgICAgcmV0dXJuICJ0b0pTKGV4ZWMs
ICR2YWx1ZSkiOwogICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnRUYXJnZXQiKSB7CiAgICAgJGlt
cGxJbmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTM2NTgpCisrKyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsOCBAQAogCQk2NTkzOTIzNzA5QUU0MzQ2
MDAyQzUzMUYgLyogS1VSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07CiAJ
CTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VS
TC5oICovOyB9OwogCQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM5MDlBRTQz
NUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1tICovOyB9OworCQk2NTlEREM4MjA5RTE5OEJBMDAxQkYz
QzYgLyogSlNEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi87
IH07CisJCTY1OUREQzgzMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAx
QkYzQzYgLyogSlNEb2N1bWVudC5oICovOyB9OwogCQk2NUEyMTQ2ODA5N0EzMjkxMDBCOTA1MEEg
LyogUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLzsgfTsKIAkJNjVBMjE0ODQwOTdB
M0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVl
LmNwcCAqLzsgfTsKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdB
M0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyB9OwpAQCAtMTMyMyw2ICsxMzI1LDggQEAK
IAkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEtVUkwuY3BwOyBwYXRoID0gcGxhdGZvcm0vS1VSTC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAv
KiBLVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBLVVJMLmg7IHBhdGgg
PSBwbGF0Zm9ybS9LVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5MjM5
MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEtVUkxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0RvY3VtZW50LmNwcDsgcGF0aCA9IC4uLy4uLy4u
Ly4uL3N5bXJvb3RzL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5jcHA7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2
IC8qIEpTRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRG9j
dW1lbnQuaDsgcGF0aCA9IC4uLy4uLy4uLy4uL3N5bXJvb3RzL0RlYnVnL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTY1
QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QTIxNDgy
MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZyYW1lVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjYyOCw2ICsyNjMyLDggQEAKIAkJCQk2NURGMzFERjA5RDFDQzYwMDAwQkUzMjUg
LyogSlNDaGFyYWN0ZXJEYXRhLmNwcCAqLywKIAkJCQk2NURGMzFFMDA5RDFDQzYwMDAwQkUzMjUg
LyogSlNDaGFyYWN0ZXJEYXRhLmggKi8sCiAJCQkJNjVERjMxRTEwOUQxQ0M2MDAwMEJFMzI1IC8q
IEpTRG9jdW1lbnRUeXBlLmNwcCAqLywKKwkJCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyog
SlNEb2N1bWVudC5jcHAgKi8sCisJCQkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9j
dW1lbnQuaCAqLywKIAkJCQk2NURGMzFFMjA5RDFDQzYwMDAwQkUzMjUgLyogSlNEb2N1bWVudFR5
cGUuaCAqLywKIAkJCQk2NURGMzFFMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRh
dGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1wbGVt
ZW50YXRpb24uaCAqLywKQEAgLTQ3ODksNiArNDc5NSw3IEBACiAJCQkJQTg2NjI5RDMwOURBMkI0
ODAwOTYzM0E1IC8qIEpTS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMyNkRD
MEIwOURBRDVCRTAwQUZDODQ3IC8qIENoYXJzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzA3MDU2QzA5RTBBRjhGMDBCMTdGRTQgLyogY3NzaGVscGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2NTlEREM4MzA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC01NDk4LDYgKzU1MDUsNyBAQAogCQkJCUE4NjYyOUQyMDlEQTJCNDgwMDk2MzNBNSAvKiBK
U01vdXNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg2NjI5RDQwOURBMkI0ODAwOTYz
M0E1IC8qIEpTS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzI2REMwQzA5
REFENUQ2MDBBRkM4NDcgLyogQ2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjU5
RERDODIwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzY1OCkK
KysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMyIEBACi0yMDA2LTA0LTAz
ICBEYXZlIEh5YXR0CisyMDA2LTA0LTAzICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBh
dXRvZ2VuZXJhdGUgYmluZGluZ3MgZm9yIG1hbnkgb2YgdGhlIG1ldGhvZHMgYW5kIHByb3BlcnRp
ZXMgb2YgRG9jdW1lbnQKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXM6CisgICAgICAgICoga2h0bWwvZWNtYS9r
anNfYmluZGluZy5jcHA6CisgICAgICAgIChLSlM6OmpzU3RyaW5nT3JGYWxzZSk6CisgICAgICAg
ICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5oOgorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2Rv
bS5jcHA6CisgICAgICAgIChLSlM6OkRPTURvY3VtZW50OjpnZXRWYWx1ZVByb3BlcnR5KToKKyAg
ICAgICAgKEtKUzo6RE9NRG9jdW1lbnQ6OnB1dFZhbHVlUHJvcGVydHkpOgorICAgICAgICAoS0pT
OjpET01Eb2N1bWVudFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjp0
b0pTKToKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19kb20uaDoKKyAgICAgICAgKEtKUzo6RE9N
RG9jdW1lbnQ6Oik6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfaHRtbC5jcHA6CisgICAgICAg
IChLSlM6Oik6CisgICAgICAgIChLSlM6OkpTSFRNTERvY3VtZW50OjpKU0hUTUxEb2N1bWVudCk6
CisgICAgICAgIChLSlM6OkpTSFRNTERvY3VtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoS0pTOjpKU0hUTUxEb2N1bWVudDo6cHV0KToKKyAgICAgICAgKiBraHRtbC9lY21hL2tq
c19odG1sLmg6CisgICAgICAgICogcGxhdGZvcm0vQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyk6CisKKzIwMDYtMDQtMDMgIERhdmUg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGJhc2ljIHRoZW1l
IHN1cHBvcnQgb24gV2luMzIuICBTdGlsbCBtdWNoIHRvIGRvLCBidXQKICAgICAgICAgdGhlIGJh
Y2tncm91bmRzIG9mIGJ1dHRvbnMsIHRleHRmaWVsZHMsIGNoZWNrYm94ZXMgYW5kIHJhZGlvCg==
</data>
<flag name="review"
          id="2042"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7498</attachid>
            <date>2006-04-04 02:27:39 -0700</date>
            <delta_ts>2006-04-05 03:41:28 -0700</delta_ts>
            <desc>fixed patch</desc>
            <filename>document-autogen.patch.txt</filename>
            <type>text/plain</type>
            <size>29715</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzNjc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMDQtMDQgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgcHJvdG90eXBlIGNoYWluIGZvciB0aGUgZm9sbG93aW5nIGZpeDoK
KworICAgICAgICAtIGF1dG9nZW5lcmF0ZSBiaW5kaW5ncyBmb3IgbWFueSBvZiB0aGUgbWV0aG9k
cyBhbmQgcHJvcGVydGllcyBvZiBEb2N1bWVudAorICAgICAgICBodHRwOi8vYnVnemlsbGEub3Bl
bmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjMKKworICAgICAgICAqIGZhc3QvZG9tL3By
b3RvdHlwZS1jaGFpbi1leHBlY3RlZC50eHQ6CisKIDIwMDYtMDQtMDMgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBueXBvcC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtY2hhaW4tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1jaGFpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDEzNjc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWNo
YWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgVGhpcyBwYWdl
IHByaW50cyBvdXQgdGhlIHByb3RvdHlwZSBjaGFpbgogCiBOT1RFOiBUaGlzIHRlc3Qgd2lsbCBz
dGFydCBmYWlsaW5nIGlmIHlvdSBjaGFuZ2UgdGhlIGxheW91dCBvZiBhIHJlbGF0ZWQgcHJvdG90
eXBlIGNoYWluIGluIFdlYkNvcmUuIFRoYXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0
IHlvdSBoYXZlIGRvbmUgc29tZXRoaW5nIHdyb25nOyB5b3UgbWF5IGp1c3QgbmVlZCB0byBjaGVj
ayBpbiBuZXcgcmVzdWx0cy4KIAotLS0tLS0gW29iamVjdCBIVE1MRG9jdW1lbnRdICg0IHByb3Rv
dHlwZXMpIC0tLS0tCistLS0tLSBbb2JqZWN0IEhUTUxEb2N1bWVudF0gKDUgcHJvdG90eXBlcykg
LS0tLS0KIAogW29iamVjdCBPYmplY3RdCiAKQEAgLTEyLDYgKzEyLDggQEAgTk9URTogVGhpcyB0
ZXN0IHdpbGwgc3RhcnQgZmFpbGluZyBpZiB5bwogCiBbb2JqZWN0IERPTURvY3VtZW50XQogCitb
b2JqZWN0IEpTRG9jdW1lbnRdCisKIC0tLS0tIFtvYmplY3QgRElWXSAoNSBwcm90b3R5cGVzKSAt
LS0tLQogCiBbb2JqZWN0IE9iamVjdF0KSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfaHRt
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19odG1sLmNwcAkocmV2
aXNpb24gMTM2NzUpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaCIKKyNpbmNsdWRlICJKU0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImNzc19ydWxlaW1wbC5oIgpAQCAtMTM1LDgg
KzEzNiw5IEBAIEpTVmFsdWUgKkhUTUxEb2NGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24KICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKKy8vIEZJWE1FOiBmdW5jdGlvbnMgc2hvdWxkIGJlIGlu
IHRoZSBwcm90b3R5cGUKIGNvbnN0IENsYXNzSW5mbyBKU0hUTUxEb2N1bWVudDo6aW5mbyA9Ci0g
IHsgIkhUTUxEb2N1bWVudCIsICZET01Eb2N1bWVudDo6aW5mbywgJkhUTUxEb2N1bWVudFRhYmxl
LCAwIH07CisgIHsgIkhUTUxEb2N1bWVudCIsICZKU0RvY3VtZW50OjppbmZvLCAmSFRNTERvY3Vt
ZW50VGFibGUsIDAgfTsKIC8qIFNvdXJjZSBmb3IgSFRNTERvY3VtZW50VGFibGUuIFVzZSAibWFr
ZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJlZ2luIEhUTUxEb2N1bWVudFRhYmxlIDMw
CiAgIHRpdGxlICAgICAgICAgICAgICAgICBKU0hUTUxEb2N1bWVudDo6VGl0bGUgICAgICAgICAg
ICAgRG9udERlbGV0ZQpAQCAtMTg0LDcgKzE4Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0hUTUxE
b2N1bWVudDo6aW5mbyA9CiAqLwogCiBKU0hUTUxEb2N1bWVudDo6SlNIVE1MRG9jdW1lbnQoRXhl
Y1N0YXRlICpleGVjLCBIVE1MRG9jdW1lbnQgKmQpCi0gIDogRE9NRG9jdW1lbnQoZXhlYywgZCkK
KyAgOiBKU0RvY3VtZW50KGV4ZWMsIGQpCiB7CiB9CiAKQEAgLTMxNiwxMiArMzE4LDEyIEBAIGJv
b2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdCgKICAgICByZXR1cm4gdHJ1ZTsK
ICAgfQogCi0gIHJldHVybiBET01Eb2N1bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgIHJldHVybiBKU0RvY3VtZW50OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBKU0hUTUxEb2N1bWVudDo6
cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBKU1Zh
bHVlICp2YWx1ZSwgaW50IGF0dHIpCiB7Ci0gICAgbG9va3VwUHV0PEpTSFRNTERvY3VtZW50LCBE
T01Eb2N1bWVudD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgJkhUTUxEb2N1bWVu
dFRhYmxlLCB0aGlzKTsKKyAgICBsb29rdXBQdXQ8SlNIVE1MRG9jdW1lbnQsIEpTRG9jdW1lbnQ+
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZIVE1MRG9jdW1lbnRUYWJsZSwgdGhp
cyk7CiB9CiAKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRl
ICpleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZhbHVlLCBpbnQgLyphdHRyKi8pCkluZGV4OiBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1s
L2VjbWEva2pzX2h0bWwuaAkocmV2aXNpb24gMTM2NzUpCisrKyBXZWJDb3JlL2todG1sL2VjbWEv
a2pzX2h0bWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogI2lmbmRlZiBLSlNf
SFRNTF9IXwogI2RlZmluZSBLSlNfSFRNTF9IXwogCisjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRWxlbWVudC5oIgotI2luY2x1ZGUgImtqc19kb20uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDsKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgY2xhc3MgSlNBYnN0cmFjdEV2ZW50TGlzdGVu
ZXI7CiAKLSAgY2xhc3MgSlNIVE1MRG9jdW1lbnQgOiBwdWJsaWMgRE9NRG9jdW1lbnQgeworICBj
bGFzcyBKU0hUTUxEb2N1bWVudCA6IHB1YmxpYyBXZWJDb3JlOjpKU0RvY3VtZW50IHsKICAgcHVi
bGljOgogICAgIEpTSFRNTERvY3VtZW50KEV4ZWNTdGF0ZSAqZXhlYywgV2ViQ29yZTo6SFRNTERv
Y3VtZW50ICpkKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBXZWJDb3JlL2to
dG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2h0bWwvZWNt
YS9ranNfYmluZGluZy5jcHAJKHJldmlzaW9uIDEzNjc1KQorKysgV2ViQ29yZS9raHRtbC9lY21h
L2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDYgKzI0OCwxMyBAQCBKU1Zh
bHVlICpqc1N0cmluZ09yVW5kZWZpbmVkKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIGpzU3RyaW5n
KHMpOwogfQogCitKU1ZhbHVlICpqc1N0cmluZ09yRmFsc2UoY29uc3QgU3RyaW5nICZzKQorewor
ICAgIGlmIChzLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4ganNCb29sZWFuKGZhbHNlKTsKKyAg
ICByZXR1cm4ganNTdHJpbmcocyk7Cit9CisKIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aE51bGxD
aGVjayhFeGVjU3RhdGUgKmV4ZWMsIEpTVmFsdWUgKnZhbCkKIHsKICAgICBpZiAodmFsLT5pc051
bGwoKSkKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2RvbS5jcHAJKHJldmlzaW9uIDEzNjc1KQorKysgV2Vi
Q29yZS9raHRtbC9lY21hL2tqc19kb20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsMzYgKzgw
NCwxNiBAQCBBdHRyKiB0b0F0dHIoSlNWYWx1ZSogdmFsLCBib29sJiBvaykKIAogLyogU291cmNl
IGZvciBET01Eb2N1bWVudFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdl
bmVyYXRlLgogQGJlZ2luIERPTURvY3VtZW50UHJvdG9UYWJsZSAyOQotICBhZG9wdE5vZGUgICAg
ICAgRE9NRG9jdW1lbnQ6OkFkb3B0Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAxCi0gIGNyZWF0ZUVsZW1lbnQgICBET01Eb2N1bWVudDo6Q3JlYXRlRWxlbWVu
dCAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKICAgY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCBET01Eb2N1bWVudDo6Q3JlYXRlRG9jdW1lbnRGcmFnbWVudCAgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQotICBjcmVhdGVUZXh0Tm9kZSAgRE9NRG9jdW1lbnQ6OkNyZWF0ZVRleHRO
b2RlICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiAgIGNyZWF0ZUNvbW1l
bnQgICBET01Eb2N1bWVudDo6Q3JlYXRlQ29tbWVudCAgICAgICAgICAgICAgICAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKICAgY3JlYXRlQ0RBVEFTZWN0aW9uIERPTURvY3VtZW50OjpDcmVhdGVD
REFUQVNlY3Rpb24gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBjcmVhdGVQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24gRE9NRG9jdW1lbnQ6OkNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlv
biBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgY3JlYXRlQXR0cmlidXRlIERPTURvY3VtZW50OjpD
cmVhdGVBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQogICBj
cmVhdGVFbnRpdHlSZWZlcmVuY2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUVudGl0eVJlZmVyZW5jZSAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGVsZW1lbnRGcm9tUG9pbnQgICAgIERPTURvY3Vt
ZW50OjpFbGVtZW50RnJvbVBvaW50ICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAg
Z2V0RWxlbWVudHNCeVRhZ05hbWUgIERPTURvY3VtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZSAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBpbXBvcnROb2RlICAgICAgICAgICBET01Eb2N1
bWVudDo6SW1wb3J0Tm9kZSAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0g
IGNyZWF0ZUVsZW1lbnROUyAgICAgIERPTURvY3VtZW50OjpDcmVhdGVFbGVtZW50TlMgICAgICAg
ICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgY3JlYXRlQXR0cmlidXRlTlMgICAgRE9NRG9j
dW1lbnQ6OkNyZWF0ZUF0dHJpYnV0ZU5TICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgot
ICBnZXRFbGVtZW50c0J5VGFnTmFtZU5TICBET01Eb2N1bWVudDo6R2V0RWxlbWVudHNCeVRhZ05h
bWVOUyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGdldEVsZW1lbnRCeUlkICAgICBET01Eb2N1
bWVudDo6R2V0RWxlbWVudEJ5SWQgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEK
LSAgY3JlYXRlUmFuZ2UgICAgICAgIERPTURvY3VtZW50OjpDcmVhdGVSYW5nZSAgICAgICAgICAg
ICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMAogICBjcmVhdGVOb2RlSXRlcmF0b3IgRE9NRG9j
dW1lbnQ6OkNyZWF0ZU5vZGVJdGVyYXRvciAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAz
CiAgIGNyZWF0ZVRyZWVXYWxrZXIgICBET01Eb2N1bWVudDo6Q3JlYXRlVHJlZVdhbGtlciAgICAg
ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDQKICAgY3JlYXRlRXZlbnQgICAgICAgIERPTURv
Y3VtZW50OjpDcmVhdGVFdmVudCAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MQogICBnZXRPdmVycmlkZVN0eWxlICAgRE9NRG9jdW1lbnQ6OkdldE92ZXJyaWRlU3R5bGUgICAg
ICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGV4ZWNDb21tYW5kICAgICAgICBET01E
b2N1bWVudDo6RXhlY0NvbW1hbmQgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9u
IDMKLSAgcXVlcnlDb21tYW5kRW5hYmxlZCBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kRW5hYmxl
ZCAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBxdWVyeUNvbW1hbmRJbmRldGVybSBE
T01Eb2N1bWVudDo6UXVlcnlDb21tYW5kSW5kZXRlcm0gICAgICAgRG9udERlbGV0ZXxGdW5jdGlv
biAxCi0gIHF1ZXJ5Q29tbWFuZFN0YXRlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRTdGF0ZSAg
ICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgcXVlcnlDb21tYW5kU3VwcG9ydGVk
IERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRTdXBwb3J0ZWQgICAgIERvbnREZWxldGV8RnVuY3Rp
b24gMQotICBxdWVyeUNvbW1hbmRWYWx1ZSBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kVmFsdWUg
ICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCiBAZW5kCiAqLwotS0pTX0RFRklORV9Q
Uk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUoRE9NRG9jdW1lbnRQcm90bywgRE9NRXZlbnRUYXJnZXRO
b2RlUHJvdG8pCiBLSlNfSU1QTEVNRU5UX1BST1RPRlVOQyhET01Eb2N1bWVudFByb3RvRnVuYykK
IEtKU19JTVBMRU1FTlRfUFJPVE9UWVBFKCJET01Eb2N1bWVudCIsIERPTURvY3VtZW50UHJvdG8s
IERPTURvY3VtZW50UHJvdG9GdW5jKQogCkBAIC04NDEsMTcgKzgyMSwxMiBAQCBjb25zdCBDbGFz
c0luZm8gRE9NRG9jdW1lbnQ6OmluZm8gPSB7ICJECiAKIC8qIFNvdXJjZSBmb3IgRE9NRG9jdW1l
bnRUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVnaW4gRE9N
RG9jdW1lbnRUYWJsZSAxNwotICBkb2N0eXBlICAgICAgICAgRE9NRG9jdW1lbnQ6OkRvY1R5cGUg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBpbXBsZW1lbnRh
dGlvbiAgRE9NRG9jdW1lbnQ6OkltcGxlbWVudGF0aW9uICAgICAgICAgICAgICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQotICBkb2N1bWVudEVsZW1lbnQgRE9NRG9jdW1lbnQ6OkRvY3VtZW50RWxl
bWVudCAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBjaGFyc2V0ICAgICAg
ICAgRE9NRG9jdW1lbnQ6OkNoYXJzZXQgICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0
ZQogICBkZWZhdWx0Q2hhcnNldCAgRE9NRG9jdW1lbnQ6OkRlZmF1bHRDaGFyc2V0ICAgICAgICAg
ICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBjaGFyYWN0ZXJTZXQgICAgRE9NRG9jdW1l
bnQ6OkNoYXJhY3RlclNldCAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQog
ICBhY3R1YWxFbmNvZGluZyAgRE9NRG9jdW1lbnQ6OkFjdHVhbEVuY29kaW5nICAgICAgICAgICAg
ICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBpbnB1dEVuY29kaW5nICAgRE9NRG9jdW1lbnQ6
OklucHV0RW5jb2RpbmcgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBz
dHlsZVNoZWV0cyAgICAgRE9NRG9jdW1lbnQ6OlN0eWxlU2hlZXRzICAgICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQotICBwcmVmZXJyZWRTdHlsZXNoZWV0U2V0ICBET01Eb2N1
bWVudDo6UHJlZmVycmVkU3R5bGVzaGVldFNldCAgRG9udERlbGV0ZXxSZWFkT25seQotICBzZWxl
Y3RlZFN0eWxlc2hlZXRTZXQgIERPTURvY3VtZW50OjpTZWxlY3RlZFN0eWxlc2hlZXRTZXQgICAg
RG9udERlbGV0ZQogICByZWFkeVN0YXRlICAgICAgRE9NRG9jdW1lbnQ6OlJlYWR5U3RhdGUgICAg
ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBkZWZhdWx0VmlldyAgICAg
ICAgRE9NRG9jdW1lbnQ6OkRlZmF1bHRWaWV3ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQogQGVuZApAQCAtODgzLDEyICs4NTgsNiBAQCBKU1ZhbHVlICpET01Eb2N1bWVudDo6
Z2V0VmFsdWVQcm9wZXJ0eShFCiAgIERvY3VtZW50ICZkb2MgPSAqc3RhdGljX2Nhc3Q8RG9jdW1l
bnQgKj4oaW1wbCgpKTsKIAogICBzd2l0Y2godG9rZW4pIHsKLSAgY2FzZSBEb2NUeXBlOgotICAg
IHJldHVybiB0b0pTKGV4ZWMsZG9jLmRvY3R5cGUoKSk7Ci0gIGNhc2UgSW1wbGVtZW50YXRpb246
Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZG9jLmltcGxlbWVudGF0aW9uKCkpOwotICBjYXNlIERv
Y3VtZW50RWxlbWVudDoKLSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5kb2N1bWVudEVsZW1lbnQo
KSk7CiAgIGNhc2UgQ2hhcnNldDoKICAgY2FzZSBDaGFyYWN0ZXJTZXQ6CiAgIGNhc2UgQWN0dWFs
RW5jb2Rpbmc6CkBAIC05MDIsMTAgKzg3MSw2IEBAIEpTVmFsdWUgKkRPTURvY3VtZW50OjpnZXRW
YWx1ZVByb3BlcnR5KEUKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgY2FzZSBTdHlsZVNo
ZWV0czoKICAgICByZXR1cm4gZ2V0RE9NU3R5bGVTaGVldExpc3QoZXhlYywgZG9jLnN0eWxlU2hl
ZXRzKCksICZkb2MpOwotICBjYXNlIFByZWZlcnJlZFN0eWxlc2hlZXRTZXQ6Ci0gICAgcmV0dXJu
IGpzU3RyaW5nT3JOdWxsKGRvYy5wcmVmZXJyZWRTdHlsZXNoZWV0U2V0KCkpOwotICBjYXNlIFNl
bGVjdGVkU3R5bGVzaGVldFNldDoKLSAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZG9jLnNlbGVj
dGVkU3R5bGVzaGVldFNldCgpKTsKICAgY2FzZSBSZWFkeVN0YXRlOgogICAgIGlmIChGcmFtZSAq
ZnJhbWUgPSBkb2MuZnJhbWUoKSkgewogICAgICAgaWYgKGZyYW1lLT5pc0NvbXBsZXRlKCkpIHJl
dHVybiBqc1N0cmluZygiY29tcGxldGUiKTsKQEAgLTkzMSw5ICs4OTYsNiBAQCB2b2lkIERPTURv
Y3VtZW50OjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTCiB7CiAgIERvY3VtZW50ICZkb2MgPSAqc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQgKj4oaW1wbCgpKTsKICAgc3dpdGNoICh0b2tlbikgewotICAgIGNh
c2UgU2VsZWN0ZWRTdHlsZXNoZWV0U2V0OgotICAgICAgZG9jLnNldFNlbGVjdGVkU3R5bGVzaGVl
dFNldCh2YWx1ZS0+dG9TdHJpbmcoZXhlYykpOwotICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFy
c2V0OgogICAgICAgZG9jLmRlY29kZXIoKS0+c2V0RW5jb2RpbmdOYW1lKHZhbHVlLT50b1N0cmlu
ZyhleGVjKS5jc3RyaW5nKCkuY19zdHIoKSwgRGVjb2Rlcjo6VXNlckNob3NlbkVuY29kaW5nKTsK
ICAgICAgIGJyZWFrOwpAQCAtOTUxLDQwICs5MTMsMTQgQEAgSlNWYWx1ZSAqRE9NRG9jdW1lbnRQ
cm90b0Z1bmM6OmNhbGxBc0Z1bgogICBXZWJDb3JlOjpTdHJpbmcgcyA9IHN0cjsKIAogICBzd2l0
Y2goaWQpIHsKLSAgY2FzZSBET01Eb2N1bWVudDo6QWRvcHROb2RlOgotICAgIHJldHVybiB0b0pT
KGV4ZWMsZG9jLmFkb3B0Tm9kZSh0b05vZGUoYXJnc1swXSksZXhjZXB0aW9uKSk7Ci0gIGNhc2Ug
RE9NRG9jdW1lbnQ6OkNyZWF0ZUVsZW1lbnQ6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3Jl
YXRlRWxlbWVudChzLCBleGNlcHRpb24pKTsKICAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlRG9j
dW1lbnRGcmFnbWVudDoKICAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCkpOwotICBjYXNlIERPTURvY3VtZW50OjpDcmVhdGVUZXh0Tm9kZToKLSAgICByZXR1
cm4gdG9KUyhleGVjLGRvYy5jcmVhdGVUZXh0Tm9kZShzKSk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6
OkNyZWF0ZUNvbW1lbnQ6CiAgICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlQ29tbWVudChz
KSk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUNEQVRBU2VjdGlvbjoKICAgICByZXR1cm4g
dG9KUyhleGVjLCBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKHMsIGV4Y2VwdGlvbikpOwotICBjYXNl
IERPTURvY3VtZW50OjpDcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Ci0gICAgcmV0dXJuIHRv
SlMoZXhlYywgZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihhcmdzWzBdLT50b1N0cmlu
ZyhleGVjKSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYyksIGV4Y2VwdGlvbikpOwotICBjYXNlIERP
TURvY3VtZW50OjpDcmVhdGVBdHRyaWJ1dGU6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3Jl
YXRlQXR0cmlidXRlKHMsIGV4Y2VwdGlvbikpOwogICBjYXNlIERPTURvY3VtZW50OjpDcmVhdGVF
bnRpdHlSZWZlcmVuY2U6CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZG9jLmNyZWF0ZUVudGl0eVJl
ZmVyZW5jZShzLCBleGNlcHRpb24pKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6RWxlbWVudEZyb21Q
b2ludDoKLSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5lbGVtZW50RnJvbVBvaW50KChpbnQpYXJn
c1swXS0+dG9OdW1iZXIoZXhlYyksIChpbnQpYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykpKTsKLSAg
Y2FzZSBET01Eb2N1bWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWU6Ci0gICAgcmV0dXJuIHRvSlMo
ZXhlYyxkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUocykuZ2V0KCkpOwotICBjYXNlIERPTURvY3Vt
ZW50OjpJbXBvcnROb2RlOiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuaW1wb3J0
Tm9kZSh0b05vZGUoYXJnc1swXSksIGFyZ3NbMV0tPnRvQm9vbGVhbihleGVjKSwgZXhjZXB0aW9u
KSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUVsZW1lbnROUzogLy8gRE9NMgotICAgIHJl
dHVybiB0b0pTKGV4ZWMsZG9jLmNyZWF0ZUVsZW1lbnROUyhzLCBhcmdzWzFdLT50b1N0cmluZyhl
eGVjKSwgZXhjZXB0aW9uKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUF0dHJpYnV0ZU5T
OiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlQXR0cmlidXRlTlMocywg
YXJnc1sxXS0+dG9TdHJpbmcoZXhlYyksIGV4Y2VwdGlvbikpOwotICBjYXNlIERPTURvY3VtZW50
OjpHZXRFbGVtZW50c0J5VGFnTmFtZU5TOiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxk
b2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhzLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSkuZ2V0
KCkpOwotICBjYXNlIERPTURvY3VtZW50OjpHZXRFbGVtZW50QnlJZDoKLSAgICByZXR1cm4gdG9K
UyhleGVjLGRvYy5nZXRFbGVtZW50QnlJZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICBj
YXNlIERPTURvY3VtZW50OjpDcmVhdGVSYW5nZToKLSAgICByZXR1cm4gdG9KUyhleGVjLCBkb2Mu
Y3JlYXRlUmFuZ2UoKS5nZXQoKSk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZU5vZGVJdGVy
YXRvcjogewogICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXI7CiAgICAgSlNWYWx1ZSogYXJn
MiA9IGFyZ3NbMl07CkBAIC0xMDEyLDMxICs5NDgsNiBAQCBKU1ZhbHVlICpET01Eb2N1bWVudFBy
b3RvRnVuYzo6Y2FsbEFzRnVuCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmdldE92ZXJy
aWRlU3R5bGUoZWxlbWVudDAsIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgLy8gRklY
TUU6IElzIHVuZGVmaW5lZCByaWdodCBoZXJlLCBvciBzaG91bGQgd2UgcmFpc2UgYW4gZXhjZXB0
aW9uPwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICBjYXNlIERPTURvY3VtZW50OjpFeGVj
Q29tbWFuZDogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLmV4ZWNDb21tYW5kKGFyZ3NbMF0t
PnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzFdLT50b0Jvb2xlYW4oZXhlYyksIGFyZ3NbMl0tPnRvU3Ry
aW5nKGV4ZWMpKSk7Ci0gIH0KLSAgY2FzZSBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kRW5hYmxl
ZDogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLnF1ZXJ5Q29tbWFuZEVuYWJsZWQoYXJnc1sw
XS0+dG9TdHJpbmcoZXhlYykpKTsKLSAgfQotICBjYXNlIERPTURvY3VtZW50OjpRdWVyeUNvbW1h
bmRJbmRldGVybTogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLnF1ZXJ5Q29tbWFuZEluZGV0
ZXJtKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSk7Ci0gIH0KLSAgY2FzZSBET01Eb2N1bWVudDo6
UXVlcnlDb21tYW5kU3RhdGU6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNvbW1h
bmRTdGF0ZShhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICB9Ci0gIGNhc2UgRE9NRG9jdW1l
bnQ6OlF1ZXJ5Q29tbWFuZFN1cHBvcnRlZDogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLnF1
ZXJ5Q29tbWFuZFN1cHBvcnRlZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICB9Ci0gIGNh
c2UgRE9NRG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZFZhbHVlOiB7Ci0gICAgV2ViQ29yZTo6U3RyaW5n
IGNvbW1hbmRWYWx1ZShkb2MucXVlcnlDb21tYW5kVmFsdWUoYXJnc1swXS0+dG9TdHJpbmcoZXhl
YykpKTsKLSAgICAvLyBNZXRob2QgcmV0dXJucyBudWxsIFN0cmluZyB0byBzaWduYWwgY29tbWFu
ZCBpcyB1bnN1cHBvcnRlZC4KLSAgICAvLyBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbiBmb3IgdGhp
cyBtZXRob2Qgc2F5czoKLSAgICAvLyAiSWYgbm90IHN1cHBvcnRlZCBbZm9yIGEgY29tbWFuZCBp
ZGVudGlmaWVyXSwgdGhpcyBtZXRob2QgcmV0dXJucyBhIEJvb2xlYW4gc2V0IHRvIGZhbHNlLiIK
LSAgICBpZiAoY29tbWFuZFZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4ganNCb29sZWFu
KGZhbHNlKTsKLSAgICBlbHNlIAotICAgICAgICByZXR1cm4ganNTdHJpbmcoY29tbWFuZFZhbHVl
KTsKLSAgfQogICBkZWZhdWx0OgogICAgIGJyZWFrOwogICB9CkBAIC0xMzUyLDE2ICsxMjYzLDE2
IEBAIEpTVmFsdWUqIHRvSlMoRXhlY1N0YXRlICpleGVjLCBEb2N1bWVudCAKICAgaWYgKCFuKQog
ICAgIHJldHVybiBqc051bGwoKTsKIAotICBET01Eb2N1bWVudCAqcmV0ID0gMDsKKyAgSlNEb2N1
bWVudCAqcmV0ID0gMDsKICAgU2NyaXB0SW50ZXJwcmV0ZXIqIGludGVycCA9IHN0YXRpY19jYXN0
PFNjcmlwdEludGVycHJldGVyICo+KGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpKTsKIAotICBp
ZiAoKHJldCA9IHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KGludGVycC0+Z2V0RE9NT2JqZWN0
KG4pKSkpCisgIGlmICgocmV0ID0gc3RhdGljX2Nhc3Q8SlNEb2N1bWVudCAqPihpbnRlcnAtPmdl
dERPTU9iamVjdChuKSkpKQogICAgIHJldHVybiByZXQ7CiAKICAgaWYgKG4tPmlzSFRNTERvY3Vt
ZW50KCkpCiAgICAgcmV0ID0gbmV3IEpTSFRNTERvY3VtZW50KGV4ZWMsIHN0YXRpY19jYXN0PEhU
TUxEb2N1bWVudCAqPihuKSk7CiAgIGVsc2UKLSAgICByZXQgPSBuZXcgRE9NRG9jdW1lbnQoZXhl
Yywgbik7CisgICAgcmV0ID0gbmV3IEpTRG9jdW1lbnQoZXhlYywgbik7CiAKICAgLy8gTWFrZSBz
dXJlIHRoZSBkb2N1bWVudCBpcyBrZXB0IGFyb3VuZCBieSB0aGUgd2luZG93IG9iamVjdCwgYW5k
IHdvcmtzIHJpZ2h0IHdpdGggdGhlCiAgIC8vIGJhY2svZm9yd2FyZCBjYWNoZS4KSW5kZXg6IFdl
YkNvcmUva2h0bWwvZWNtYS9ranNfYmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2h0
bWwvZWNtYS9ranNfYmluZGluZy5oCShyZXZpc2lvbiAxMzY3NSkKKysrIFdlYkNvcmUva2h0bWwv
ZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNiArMTUwLDkgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAqLwogICBKU1ZhbHVlICpqc1N0cmluZ09yVW5kZWZpbmVkKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOwogCisgIEpTVmFsdWUgKmpzU3RyaW5nT3JGYWxzZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmKTsKKworCiAgIC8qKgogICAgKiAgR2V0IGEgU3RyaW5nIG9iamVjdCBv
ciBhIG51bGwgU3RyaW5nIGlmIHRoZSB2YWx1ZSBpcyBudWxsCiAgICAqLwpJbmRleDogV2ViQ29y
ZS9raHRtbC9lY21hL2tqc19kb20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEv
a2pzX2RvbS5oCShyZXZpc2lvbiAxMzY3NSkKKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9t
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVm
UHRyPFdlYkNvcmU6Ok5vZGVMaXN0PiBtX2ltcGw7CiAgIH07CiAKKyAgS0pTX0RFRklORV9QUk9U
T1RZUEVfV0lUSF9QUk9UT1RZUEUoRE9NRG9jdW1lbnRQcm90bywgRE9NRXZlbnRUYXJnZXROb2Rl
UHJvdG8pCisKICAgY2xhc3MgRE9NRG9jdW1lbnQgOiBwdWJsaWMgRE9NRXZlbnRUYXJnZXROb2Rl
IHsKICAgcHVibGljOgogICAgIERPTURvY3VtZW50KEV4ZWNTdGF0ZSAqZXhlYywgV2ViQ29yZTo6
RG9jdW1lbnQgKmQpOwpAQCAtMTQ2LDE5ICsxNDgsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFs
dWUsIGludCBhdHRyKTsKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87
Ci0gICAgZW51bSB7IERvY1R5cGUsIEltcGxlbWVudGF0aW9uLCBEb2N1bWVudEVsZW1lbnQsIAot
ICAgICAgICAgICBDaGFyc2V0LCBEZWZhdWx0Q2hhcnNldCwgQ2hhcmFjdGVyU2V0LCBBY3R1YWxF
bmNvZGluZywgSW5wdXRFbmNvZGluZywKKyAgICBlbnVtIHsgQ2hhcnNldCwgRGVmYXVsdENoYXJz
ZXQsIENoYXJhY3RlclNldCwgQWN0dWFsRW5jb2RpbmcsIElucHV0RW5jb2RpbmcsCiAgICAgICAg
ICAgIC8vIEZ1bmN0aW9ucwotICAgICAgICAgICBBZG9wdE5vZGUsCi0gICAgICAgICAgIENyZWF0
ZUVsZW1lbnQsIENyZWF0ZURvY3VtZW50RnJhZ21lbnQsIENyZWF0ZVRleHROb2RlLCBDcmVhdGVD
b21tZW50LAotICAgICAgICAgICBDcmVhdGVDREFUQVNlY3Rpb24sIENyZWF0ZVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiwgQ3JlYXRlQXR0cmlidXRlLAotICAgICAgICAgICBDcmVhdGVFbnRpdHlSZWZl
cmVuY2UsIEdldEVsZW1lbnRzQnlUYWdOYW1lLCBJbXBvcnROb2RlLCBDcmVhdGVFbGVtZW50TlMs
Ci0gICAgICAgICAgIENyZWF0ZUF0dHJpYnV0ZU5TLCBHZXRFbGVtZW50c0J5VGFnTmFtZU5TLCBH
ZXRFbGVtZW50QnlJZCwKLSAgICAgICAgICAgQ3JlYXRlUmFuZ2UsIENyZWF0ZU5vZGVJdGVyYXRv
ciwgQ3JlYXRlVHJlZVdhbGtlciwgRGVmYXVsdFZpZXcsCi0gICAgICAgICAgIENyZWF0ZUV2ZW50
LCBFbGVtZW50RnJvbVBvaW50LCBTdHlsZVNoZWV0cywgUHJlZmVycmVkU3R5bGVzaGVldFNldCwg
Ci0gICAgICAgICAgIFNlbGVjdGVkU3R5bGVzaGVldFNldCwgR2V0T3ZlcnJpZGVTdHlsZSwgUmVh
ZHlTdGF0ZSwgCi0gICAgICAgICAgIEV4ZWNDb21tYW5kLCBRdWVyeUNvbW1hbmRFbmFibGVkLCBR
dWVyeUNvbW1hbmRJbmRldGVybSwgUXVlcnlDb21tYW5kU3RhdGUsIAotICAgICAgICAgICBRdWVy
eUNvbW1hbmRTdXBwb3J0ZWQsIFF1ZXJ5Q29tbWFuZFZhbHVlIH07CisgICAgICAgICAgIENyZWF0
ZURvY3VtZW50RnJhZ21lbnQsIENyZWF0ZUNvbW1lbnQsCisgICAgICAgICAgIENyZWF0ZUNEQVRB
U2VjdGlvbiwgCisgICAgICAgICAgIENyZWF0ZUVudGl0eVJlZmVyZW5jZSwgCisgICAgICAgICAg
IENyZWF0ZU5vZGVJdGVyYXRvciwgQ3JlYXRlVHJlZVdhbGtlciwgRGVmYXVsdFZpZXcsCisgICAg
ICAgICAgIENyZWF0ZUV2ZW50LCBTdHlsZVNoZWV0cywgR2V0T3ZlcnJpZGVTdHlsZSwgUmVhZHlT
dGF0ZSB9OwogCiAgIHByb3RlY3RlZDoKICAgICAvLyBDb25zdHJ1Y3RvciBmb3IgaW5oZXJpdGVk
IGNsYXNzZXM7IGRvZXNuJ3Qgc2V0IHVwIGEgcHJvdG90eXBlLgpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0F0b21p
Y1N0cmluZy5oCShyZXZpc2lvbiAxMzY3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQXRvbWljU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEF0b21p
Y1N0cmluZyhjb25zdCBLSlM6OklkZW50aWZpZXImIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0K
ICAgICBBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7
IH0KICAgICBBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGlt
cCkgeyB9Ci0gICAgZXhwbGljaXQgQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0
cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KKyAgICBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBz
KSA6IG1fc3RyaW5nKGFkZChzLmltcGwoKSkpIHsgfQogICAgIAogICAgIG9wZXJhdG9yIGNvbnN0
IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYg
ZG9tU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEzNjc1KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtODQxLDE2ICs4NDEsMjMgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIGlmIChkZWZp
bmVkICRjb252KSB7CiAgICAgICBpZiAoJGNvbnYgZXEgIk51bGwiKSB7CiAgICAgICAgIHJldHVy
biAianNTdHJpbmdPck51bGwoJHZhbHVlKSI7CisgICAgICB9IGVsc2lmICgkY29udiBlcSAiRmFs
c2UiKSB7CisgICAgICAgIHJldHVybiAianNTdHJpbmdPckZhbHNlKCR2YWx1ZSkiOwogICAgICAg
fSBlbHNlIHsKICAgICAgICAgZGllICJVbmtub3duIHZhbHVlIGZvciBDb252ZXJ0TnVsbFN0cmlu
Z1RvIGV4dGVuZGVkIGF0dHJpYnV0ZSI7CiAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgIHJl
dHVybiAianNTdHJpbmcoJHZhbHVlKSI7CiAgICAgfQorICB9IGVsc2lmICgkdHlwZSBlcSAiRE9N
SW1wbGVtZW50YXRpb24iKSB7CisgICAgJGltcGxJbmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwor
ICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NSW1wbGVtZW50YXRpb24uaCJ9ID0gMTsKKyAgICByZXR1
cm4gInRvSlMoZXhlYywgJHZhbHVlKSI7CiAgIH0gZWxzaWYgKCR0eXBlIGVxICJOb2RlIiBvcgog
ICAgICAgICAgICAkdHlwZSBlcSAiVGV4dCIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIkRvY3Vt
ZW50VHlwZSIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIkRvY3VtZW50IiBvcgorICAgICAgICAg
ICAkdHlwZSBlcSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uIiBvcgogICAgICAgICAgICAkdHlwZSBl
cSAiSFRNTERvY3VtZW50IiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiRWxlbWVudCIgb3IKICAg
ICAgICAgICAgJHR5cGUgZXEgIkF0dHIiIG9yCkBAIC04NTgsNiArODY1LDcgQEAgc3ViIE5hdGl2
ZVRvSlNWYWx1ZQogICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICAkaW1w
bEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CiAgICAgJGltcGxJbmNsdWRlc3siRWxlbWVudC5oIn0g
PSAxOworICAgICRpbXBsSW5jbHVkZXN7IkRvY3VtZW50VHlwZS5oIn0gPSAxOwogICAgIHJldHVy
biAidG9KUyhleGVjLCAkdmFsdWUpIjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50VGFyZ2V0
IikgewogICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKSW5kZXg6IFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHJldmlzaW9uIDEzNjc1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGFsbCA6IFwKICAgICBKU0NTU1ByaW1pdGl2
ZVZhbHVlLmggXAogICAgIEpTRE9NSW1wbGVtZW50YXRpb24uaCBcCiAgICAgSlNET01QYXJzZXIu
bHV0LmggXAorICAgIEpTRG9jdW1lbnQuaCBcCiAgICAgSlNEb2N1bWVudFR5cGUuaCBcCiAgICAg
SlNFbGVtZW50LmggXAogICAgIEpTRW50aXR5LmggXApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1
aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKK21vZHVsZSBj
b3JlIHsKKworICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NRG9jdW1lbnRdIERv
Y3VtZW50IDogRXZlbnRUYXJnZXROb2RlIHsKKyAgICAgICAgLy8gRE9NIExldmVsIDEgQ29yZQor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnRUeXBlIGRvY3R5cGU7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01JbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbjsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgZG9jdW1lbnRFbGVtZW50OworICAgICAg
ICBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFRleHQgY3JlYXRlVGV4dE5vZGUoaW4gRE9N
U3RyaW5nIHRleHQpOworICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gY3JlYXRlUHJvY2Vz
c2luZ0luc3RydWN0aW9uKGluIERPTVN0cmluZyBhLCBpbiBET01TdHJpbmcgYikKKyAgICAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgQXR0ciBjcmVhdGVBdHRyaWJ1dGUo
aW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Cisg
ICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyB0YWdOYW1l
KTsKKyAgICAgICAgCisgICAgICAgIC8vIERPTSBMZXZlbCAyIENvcmUKKyAgICAgICAgTm9kZSBp
bXBvcnROb2RlKGluIE5vZGUgaW1wb3J0ZWROb2RlLCBpbiBib29sZWFuIGRlZXApCisgICAgICAg
ICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVu
dE5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1l
KQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBBdHRyIGNyZWF0
ZUF0dHJpYnV0ZU5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIGluIERPTVN0cmluZyBxdWFs
aWZpZWROYW1lKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBO
b2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkks
IGluIERPTVN0cmluZyBsb2NhbE5hbWUpOworICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlk
KGluIERPTVN0cmluZyBpZCk7CisKKyAgICAgICAgLy8gRE9NIExldmVsIDIgUmFuZ2UgJiBUcmFu
dmVyc2FsIChEb2N1bWVudFJhbmdlIGludGVyZmFjZSkKKyAgICAgICAgUmFuZ2UgY3JlYXRlUmFu
Z2UoKTsKKworICAgICAgICAvLyBET00gTGV2ZWwgMyBDb3JlCisgICAgICAgIE5vZGUgYWRvcHRO
b2RlKGluIE5vZGUgcmVmTm9kZSkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
KworICAgICAgICAvLyBNb3ppbGxhIGFuZCBJRSBjb21tb24gZXh0ZW5zaW9ucworICAgICAgICBi
b29sZWFuIGV4ZWNDb21tYW5kKGluIERPTVN0cmluZyBjb21tYW5kLCBpbiBib29sZWFuIHVzZXJJ
bnRlcmZhY2UsIGluIERPTVN0cmluZyB2YWx1ZSk7CisgICAgICAgIGJvb2xlYW4gcXVlcnlDb21t
YW5kRW5hYmxlZChpbkRPTVN0cmluZyBjb21tYW5kKTsKKyAgICAgICAgYm9vbGVhbiBxdWVyeUNv
bW1hbmRJbmRldGVybShpbiBET01TdHJpbmcgY29tbWFuZCk7CisgICAgICAgIGJvb2xlYW4gcXVl
cnlDb21tYW5kU3RhdGUoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOworICAgICAgICBib29sZWFuIHF1
ZXJ5Q29tbWFuZFN1cHBvcnRlZChpbiBET01TdHJpbmcgY29tbWFuZCk7CisgICAgICAgIFtDb252
ZXJ0TnVsbFN0cmluZ1RvPUZhbHNlXSBET01TdHJpbmcgcXVlcnlDb21tYW5kVmFsdWUoaW4gRE9N
U3RyaW5nIGNvbW1hbmQpOworCisgICAgICAgIC8vIElFIGV4dGVuc2lvbnMKKyAgICAgICAgRWxl
bWVudCBlbGVtZW50RnJvbVBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKworICAgICAgICAv
LyBXZWJLaXQgRXh0ZW5zaW9ucworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnRO
dWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIHByZWZlcnJlZFN0eWxlc2hlZXRTZXQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgc2VsZWN0
ZWRTdHlsZXNoZWV0U2V0OworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzY3NSkKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAz
LDggQEAKIAkJNjU5MzkyMzcwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1
MzFGIC8qIEtVUkwuY3BwICovOyB9OwogCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VS
TC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5Mzky
MzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCAqLzsgfTsKIAkJNjU5MzkyM0EwOUFFNDM1QzAw
MkM1MzFGIC8qIEtVUkxNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLzsgfTsK
KwkJNjU5RERDODIwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5RERDODAwOUUxOThCQTAwMUJG
M0M2IC8qIEpTRG9jdW1lbnQuY3BwICovOyB9OworCQk2NTlEREM4MzA5RTE5OEJBMDAxQkYzQzYg
LyogSlNEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLzsgfTsKIAkJ
NjVBMjE0NjgwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdl
LmggKi87IH07CiAJCTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODIwOTdB
M0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgKi87IH07CiAJCTY1QTIxNDg1MDk3QTNGNTMw
MEI5MDUwQSAvKiBGcmFtZVRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLzsg
fTsKQEAgLTEyMjMsNiArMTIyNSw3IEBACiAJCTY1NDVGNjZFMDlCODJGRUQwMDEzMDA2RiAvKiBU
cmFuc2ZlckpvYkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHJh
bnNmZXJKb2JDbGllbnQuaDsgcGF0aCA9IHBsYXRmb3JtL1RyYW5zZmVySm9iQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDVGNjZGMDlCODJGRUQwMDEzMDA2RiAvKiBU
cmFuc2ZlckpvYkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBU
cmFuc2ZlckpvYkludGVybmFsLmg7IHBhdGggPSBwbGF0Zm9ybS9UcmFuc2ZlckpvYkludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDVGNjc1MDlCODMwMTgwMDEzMDA2
RiAvKiBUcmFuc2ZlckpvYk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBUcmFuc2ZlckpvYk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIwIC8qIERvY3VtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRG9jdW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTRF
QzYwRjA5Nzc3OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnJhbWVCcmlkZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjU0RUM2MTAwOTc3NzhGNTAwREFCNTJDIC8qIFdlYkNvcmVGcmFt
ZUJyaWRnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b3JlRnJhbWVCcmlkZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NTBCNjkz
MDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENEQVRBU2VjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMzA4LDYgKzEzMTEsOCBAQAogCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYg
LyogS1VSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gS1VSTC5j
cHA7IHBhdGggPSBwbGF0Zm9ybS9LVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEtVUkwuaDsgcGF0aCA9IHBsYXRmb3JtL0tVUkwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1VSTE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU5RERDODAwOUUxOThCQTAwMUJGM0M2IC8q
IEpTRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpT
RG9jdW1lbnQuY3BwOyBwYXRoID0gSlNEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY1OUREQzgxMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0RvY3VtZW50Lmg7IHBhdGggPSBKU0RvY3Vt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QTIxNDY3MDk3QTMyOTEwMEI5
MDUwQSAvKiBQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAv
KiBGcmFtZVRyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZy
YW1lVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QTIxNDgzMDk3QTNG
NTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZyYW1lVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYyNiw2ICsy
NjMxLDggQEAKIAkJCQk5MzA3MDVFODA5RTBDOUYwMDBCMTdGRTQgLyogSlNDU1NQcmltaXRpdmVW
YWx1ZS5jcHAgKi8sCiAJCQkJOTMwNzA1RUEwOUUwQzlGNjAwQjE3RkU0IC8qIEpTQ1NTUHJpbWl0
aXZlVmFsdWUuaCAqLywKIAkJCQk2NURGMzFFMTA5RDFDQzYwMDAwQkUzMjUgLyogSlNEb2N1bWVu
dFR5cGUuY3BwICovLAorCQkJCTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50
LmNwcCAqLywKKwkJCQk2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICov
LAogCQkJCTY1REYzMUUyMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RvY3VtZW50VHlwZS5oICovLAog
CQkJCTY1REYzMUUzMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmNwcCAq
LywKIAkJCQk2NURGMzFFNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5o
ICovLApAQCAtNDA0OCw2ICs0MDU1LDcgQEAKIAkJRjUyM0QzMjQwMkRFNDQ3ODAxODYzNUNBIC8q
IGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNjU0
OEUyNDgwOUUxRTA0RDAwQUY4MDIwIC8qIERvY3VtZW50LmlkbCAqLywKIAkJCQlGNTIzRDMwNzAy
REU0NDc2MDE4NjM1Q0EgLyogQWJzdHJhY3RWaWV3LmNwcCAqLywKIAkJCQlGNTIzRDMwODAyREU0
NDc2MDE4NjM1Q0EgLyogQWJzdHJhY3RWaWV3LmggKi8sCiAJCQkJQkMzQjM2NDcwNUM5RDVFMjAw
RTQyOTAyIC8qIEF0b21pY1N0cmluZ0xpc3QuaCAqLywKQEAgLTQ3OTAsNiArNDc5OCw3IEBACiAJ
CQkJQTg2NjI5RDMwOURBMkI0ODAwOTYzM0E1IC8qIEpTS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTMyNkRDMEIwOURBRDVCRTAwQUZDODQ3IC8qIENoYXJzZXREYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzA3MDU2QzA5RTBBRjhGMDBCMTdGRTQgLyogY3NzaGVscGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2NTlEREM4MzA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwNzA1REEwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291
bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwNzA1RUIwOUUwQzlGNjAwQjE3RkU0IC8qIEpT
Q1NTUHJpbWl0aXZlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKQEAgLTU0ODIsNiArNTQ5
MSw3IEBACiAJCQkJQTg2NjI5RDIwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODY2MjlENDA5REEyQjQ4MDA5NjMzQTUgLyogSlNLZXlib2Fy
ZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMjZEQzBDMDlEQUQ1RDYwMEFGQzg0NyAv
KiBDaGFyc2V0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NTlEREM4MjA5RTE5OEJBMDAx
QkYzQzYgLyogSlNEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA3MDVEODA5RTBD
OUI3MDBCMTdGRTQgLyogSlNDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDcwNUU5
MDlFMEM5RjAwMEIxN0ZFNCAvKiBKU0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzY3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDYtMDQtMDMgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAtIGF1dG9nZW5lcmF0ZSBiaW5kaW5ncyBmb3IgbWFueSBvZiB0aGUgbWV0aG9kcyBh
bmQgcHJvcGVydGllcyBvZiBEb2N1bWVudAorICAgICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRh
cndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjMKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXM6CisgICAgICAg
ICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHA6CisgICAgICAgIChLSlM6OmpzU3RyaW5nT3JG
YWxzZSk6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5oOgorICAgICAgICAqIGto
dG1sL2VjbWEva2pzX2RvbS5jcHA6CisgICAgICAgIChLSlM6OkRPTURvY3VtZW50OjpnZXRWYWx1
ZVByb3BlcnR5KToKKyAgICAgICAgKEtKUzo6RE9NRG9jdW1lbnQ6OnB1dFZhbHVlUHJvcGVydHkp
OgorICAgICAgICAoS0pTOjpET01Eb2N1bWVudFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgor
ICAgICAgICAoS0pTOjp0b0pTKToKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19kb20uaDoKKyAg
ICAgICAgKEtKUzo6RE9NRG9jdW1lbnQ6Oik6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfaHRt
bC5jcHA6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OkpTSFRNTERvY3VtZW50OjpK
U0hUTUxEb2N1bWVudCk6CisgICAgICAgIChLSlM6OkpTSFRNTERvY3VtZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoS0pTOjpKU0hUTUxEb2N1bWVudDo6cHV0KToKKyAgICAgICAg
KiBraHRtbC9lY21hL2tqc19odG1sLmg6CisgICAgICAgICogcGxhdGZvcm0vQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyk6CisKIDIw
MDYtMDQtMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIC0gdHJp
ZWQgdG8gZml4IGJ1aWxkIGFnYWluCkBAIC0xNTgsNyArMTg3LDcgQEAKIAogICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKIAotMjAwNi0wNC0wMyAgRGF2ZSBIeWF0
dAorMjAwNi0wNC0wMyAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgYmFzaWMgdGhlbWUgc3VwcG9ydCBvbiBXaW4zMi4gIFN0aWxsIG11Y2ggdG8gZG8s
IGJ1dAogICAgICAgICB0aGUgYmFja2dyb3VuZHMgb2YgYnV0dG9ucywgdGV4dGZpZWxkcywgY2hl
Y2tib3hlcyBhbmQgcmFkaW8K
</data>
<flag name="review"
          id="2043"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7520</attachid>
            <date>2006-04-05 02:00:32 -0700</date>
            <delta_ts>2006-04-05 03:41:28 -0700</delta_ts>
            <desc>patch that does all of it, but doesn&apos;t work</desc>
            <filename>document-autogen-2.patch.txt</filename>
            <type>text/plain</type>
            <size>44177</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VjbWEva2pzX2Nzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9r
anNfY3NzLmNwcAkocmV2aXNpb24gMTM2OTkpCisrKyBraHRtbC9lY21hL2tqc19jc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDcgQEAKICAgcmV0dXJuIERPTU9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUg
KmdldERPTVN0eWxlU2hlZXRMaXN0KEV4ZWNTdGF0ZSAqZXhlYywgU3R5bGVTaGVldExpc3QgKnNz
bCwgRG9jdW1lbnQgKmRvYykKK0pTVmFsdWUgKnRvSlMoRXhlY1N0YXRlICpleGVjLCBTdHlsZVNo
ZWV0TGlzdCAqc3NsLCBEb2N1bWVudCAqZG9jKQogewogICAvLyBDYW4ndCB1c2UgdGhlIGNhY2hl
RE9NT2JqZWN0IG1hY3JvIGJlY2F1c2Ugb2YgdGhlIGRvYyBhcmd1bWVudAogICBET01PYmplY3Qg
KnJldDsKSW5kZXg6IGtodG1sL2VjbWEva2pzX2Nzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2Vj
bWEva2pzX2Nzcy5oCShyZXZpc2lvbiAxMzY5OSkKKysrIGtodG1sL2VjbWEva2pzX2Nzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgfTsKIAogICAvLyBUaGUgZG9jdW1l
bnQgaXMgb25seSB1c2VkIGZvciBnZXQtc3R5bGVzaGVldC1ieS1uYW1lIChtYWtlIG9wdGlvbmFs
IGlmIG5lY2Vzc2FyeSkKLSAgSlNWYWx1ZSAqZ2V0RE9NU3R5bGVTaGVldExpc3QoRXhlY1N0YXRl
ICpleGVjLCBXZWJDb3JlOjpTdHlsZVNoZWV0TGlzdCAqc3MsIFdlYkNvcmU6OkRvY3VtZW50ICpk
b2MpOworICBKU1ZhbHVlICp0b0pTKEV4ZWNTdGF0ZSAqZXhlYywgV2ViQ29yZTo6U3R5bGVTaGVl
dExpc3QgKnNzLCBXZWJDb3JlOjpEb2N1bWVudCAqZG9jKTsKIAogICBjbGFzcyBET01NZWRpYUxp
c3QgOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgcHVibGljOgpJbmRleDoga2h0bWwvZWNtYS9KU1hN
TEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL0pTWE1MSHR0cFJlcXVl
c3QuY3BwCShyZXZpc2lvbiAxMzY5OSkKKysrIGtodG1sL2VjbWEvSlNYTUxIdHRwUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw4ICsyMTcsOCBAQAogICAgICAgU3RyaW5nIGJvZHk7
CiAKICAgICAgIGlmIChhcmdzLnNpemUoKSA+PSAxKSB7Ci0gICAgICAgIGlmIChhcmdzWzBdLT50
b09iamVjdChleGVjKS0+aW5oZXJpdHMoJkRPTURvY3VtZW50OjppbmZvKSkgewotICAgICAgICAg
IERvY3VtZW50ICpkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihzdGF0aWNfY2FzdDxET01E
b2N1bWVudCAqPihhcmdzWzBdLT50b09iamVjdChleGVjKSktPmltcGwoKSk7CisgICAgICAgIGlm
IChhcmdzWzBdLT50b09iamVjdChleGVjKS0+aW5oZXJpdHMoJkpTRG9jdW1lbnQ6OmluZm8pKSB7
CisgICAgICAgICAgRG9jdW1lbnQgKmRvYyA9IHN0YXRpY19jYXN0PERvY3VtZW50ICo+KHN0YXRp
Y19jYXN0PEpTRG9jdW1lbnQgKj4oYXJnc1swXS0+dG9PYmplY3QoZXhlYykpLT5pbXBsKCkpOwog
ICAgICAgICAgIGJvZHkgPSBkb2MtPnRvU3RyaW5nKCkuZGVwcmVjYXRlZFN0cmluZygpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgIC8vIGNvbnZlcnRpbmcgY2VydGFpbiB2YWx1ZXMgKGxp
a2UgbnVsbCkgdG8gb2JqZWN0IGNhbiBzZXQgYW4gZXhjZXB0aW9uCkluZGV4OiBraHRtbC9lY21h
L2tqc190cmF2ZXJzYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2VjbWEva2pzX3RyYXZlcnNh
bC5jcHAJKHJldmlzaW9uIDEzNjk5KQorKysga2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk5LDE2ICsxOTksMjYgQEAKICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKLUpTVmFsdWUgKnRvSlMoRXhlY1N0YXRlICpleGVjLCBOb2RlRmlsdGVyICpuZikK
K0pTVmFsdWUgKnRvSlMoRXhlY1N0YXRlKiBleGVjLCBOb2RlRmlsdGVyKiBuZikKIHsKICAgICBy
ZXR1cm4gY2FjaGVET01PYmplY3Q8Tm9kZUZpbHRlciwgRE9NTm9kZUZpbHRlcj4oZXhlYywgbmYp
OwogfQogCi1Ob2RlRmlsdGVyICp0b05vZGVGaWx0ZXIoSlNWYWx1ZSAqdmFsKQorUGFzc1JlZlB0
cjxOb2RlRmlsdGVyPiB0b05vZGVGaWx0ZXIoSlNWYWx1ZSogdmFsKQogewotICAgIGlmICghdmFs
IHx8ICF2YWwtPmlzT2JqZWN0KCZET01Ob2RlRmlsdGVyOjppbmZvKSkKKyAgICBpZiAoIXZhbCkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTU5vZGVGaWx0ZXIg
Kj4odmFsKS0+aW1wbCgpOworICAgIGlmICghdmFsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmICh2YWwtPmlzT2JqZWN0KCZET01Ob2RlRmlsdGVyOjppbmZvKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTU5vZGVGaWx0ZXIgKj4odmFsKS0+aW1wbCgpOwor
CisgICAgSlNPYmplY3QqIG8gPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHZhbCk7CisgICAgaWYg
KG8tPmltcGxlbWVudHNDYWxsKCkpCisgICAgICAgIHJldHVybiBuZXcgTm9kZUZpbHRlcihuZXcg
SlNOb2RlRmlsdGVyQ29uZGl0aW9uKG8pKTsKKworICAgIHJldHVybiAwOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkluZGV4OiBraHRtbC9lY21hL2tqc19odG1sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBraHRtbC9lY21hL2tqc19odG1sLmNwcAkocmV2aXNpb24gMTM2OTkpCisrKyBraHRtbC9lY21h
L2tqc19odG1sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
IkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJjc3Nf
cnVsZWltcGwuaCIKQEAgLTEzNSw4ICsxMzYsOSBAQAogICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIAorLy8gRklYTUU6IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW4gdGhlIHByb3RvdHlwZQogY29u
c3QgQ2xhc3NJbmZvIEpTSFRNTERvY3VtZW50OjppbmZvID0KLSAgeyAiSFRNTERvY3VtZW50Iiwg
JkRPTURvY3VtZW50OjppbmZvLCAmSFRNTERvY3VtZW50VGFibGUsIDAgfTsKKyAgeyAiSFRNTERv
Y3VtZW50IiwgJkpTRG9jdW1lbnQ6OmluZm8sICZIVE1MRG9jdW1lbnRUYWJsZSwgMCB9OwogLyog
U291cmNlIGZvciBIVE1MRG9jdW1lbnRUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJl
Z2VuZXJhdGUuCiBAYmVnaW4gSFRNTERvY3VtZW50VGFibGUgMzAKICAgdGl0bGUgICAgICAgICAg
ICAgICAgIEpTSFRNTERvY3VtZW50OjpUaXRsZSAgICAgICAgICAgICBEb250RGVsZXRlCkBAIC0x
ODQsNyArMTg2LDcgQEAKICovCiAKIEpTSFRNTERvY3VtZW50OjpKU0hUTUxEb2N1bWVudChFeGVj
U3RhdGUgKmV4ZWMsIEhUTUxEb2N1bWVudCAqZCkKLSAgOiBET01Eb2N1bWVudChleGVjLCBkKQor
ICA6IEpTRG9jdW1lbnQoZXhlYywgZCkKIHsKIH0KIApAQCAtMzE2LDEyICszMTgsMTIgQEAKICAg
ICByZXR1cm4gdHJ1ZTsKICAgfQogCi0gIHJldHVybiBET01Eb2N1bWVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgIHJldHVybiBKU0RvY3VtZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBK
U0hUTUxEb2N1bWVudDo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJv
cGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIpCiB7Ci0gICAgbG9va3VwUHV0PEpT
SFRNTERvY3VtZW50LCBET01Eb2N1bWVudD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
ciwgJkhUTUxEb2N1bWVudFRhYmxlLCB0aGlzKTsKKyAgICBsb29rdXBQdXQ8SlNIVE1MRG9jdW1l
bnQsIEpTRG9jdW1lbnQ+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZIVE1MRG9j
dW1lbnRUYWJsZSwgdGhpcyk7CiB9CiAKIHZvaWQgSlNIVE1MRG9jdW1lbnQ6OnB1dFZhbHVlUHJv
cGVydHkoRXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZhbHVlLCBpbnQgLyph
dHRyKi8pCkluZGV4OiBraHRtbC9lY21hL2tqc190cmF2ZXJzYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
aHRtbC9lY21hL2tqc190cmF2ZXJzYWwuaAkocmV2aXNpb24gMTM2OTkpCisrKyBraHRtbC9lY21h
L2tqc190cmF2ZXJzYWwuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQAogICBKU1Zh
bHVlKiB0b0pTKEV4ZWNTdGF0ZSosIFdlYkNvcmU6Ok5vZGVGaWx0ZXIqKTsKICAgSlNWYWx1ZSog
dG9KUyhFeGVjU3RhdGUqLCBXZWJDb3JlOjpUcmVlV2Fsa2VyKik7CiAKLSAgV2ViQ29yZTo6Tm9k
ZUZpbHRlciogdG9Ob2RlRmlsdGVyKGNvbnN0IEpTVmFsdWUqKTsgLy8gcmV0dXJucyAwIGlmIHZh
bHVlIGlzIG5vdCBhIERPTU5vZGVGaWx0ZXIKKyAgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb2RlRmls
dGVyPiB0b05vZGVGaWx0ZXIoSlNWYWx1ZSopOyAvLyByZXR1cm5zIDAgaWYgdmFsdWUgaXMgbm90
IGEgRE9NTm9kZUZpbHRlciBvciBKUyBmdW5jdGlvbiAKIAogICBjbGFzcyBKU05vZGVGaWx0ZXJD
b25kaXRpb24gOiBwdWJsaWMgV2ViQ29yZTo6Tm9kZUZpbHRlckNvbmRpdGlvbiB7CiAgIHB1Ymxp
YzoKSW5kZXg6IGtodG1sL2VjbWEva2pzX2h0bWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21h
L2tqc19odG1sLmgJKHJldmlzaW9uIDEzNjk5KQorKysga2h0bWwvZWNtYS9ranNfaHRtbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBACiAjaWZuZGVmIEtKU19IVE1MX0hfCiAjZGVm
aW5lIEtKU19IVE1MX0hfCiAKKyNpbmNsdWRlICJKU0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNF
bGVtZW50LmgiCi0jaW5jbHVkZSAia2pzX2RvbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOwpAQCAtNDEsNyArNDEsNyBAQAogCiAg
IGNsYXNzIEpTQWJzdHJhY3RFdmVudExpc3RlbmVyOwogCi0gIGNsYXNzIEpTSFRNTERvY3VtZW50
IDogcHVibGljIERPTURvY3VtZW50IHsKKyAgY2xhc3MgSlNIVE1MRG9jdW1lbnQgOiBwdWJsaWMg
V2ViQ29yZTo6SlNEb2N1bWVudCB7CiAgIHB1YmxpYzoKICAgICBKU0hUTUxEb2N1bWVudChFeGVj
U3RhdGUgKmV4ZWMsIFdlYkNvcmU6OkhUTUxEb2N1bWVudCAqZCk7CiAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOwpJbmRleDoga2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHAJKHJldmlzaW9uIDEzNjk5KQorKysga2h0bWwv
ZWNtYS9ranNfYmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgsMTMgQEAK
ICAgICByZXR1cm4ganNTdHJpbmcocyk7CiB9CiAKK0pTVmFsdWUgKmpzU3RyaW5nT3JGYWxzZShj
b25zdCBTdHJpbmcgJnMpCit7CisgICAgaWYgKHMuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBq
c0Jvb2xlYW4oZmFsc2UpOworICAgIHJldHVybiBqc1N0cmluZyhzKTsKK30KKwogU3RyaW5nIHZh
bHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKEV4ZWNTdGF0ZSAqZXhlYywgSlNWYWx1ZSAqdmFsKQog
ewogICAgIGlmICh2YWwtPmlzTnVsbCgpKQpJbmRleDoga2h0bWwvZWNtYS9ranNfZG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19kb20uY3BwCShyZXZpc2lvbiAxMzY5OSkKKysr
IGtodG1sL2VjbWEva2pzX2RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwMiwyNTAgKzgwMiw2
IEBACiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLyogU291cmNlIGZvciBET01Eb2N1bWVudFBy
b3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgotQGJlZ2luIERP
TURvY3VtZW50UHJvdG9UYWJsZSAyOQotICBhZG9wdE5vZGUgICAgICAgRE9NRG9jdW1lbnQ6OkFk
b3B0Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGNy
ZWF0ZUVsZW1lbnQgICBET01Eb2N1bWVudDo6Q3JlYXRlRWxlbWVudCAgICAgICAgICAgICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCBET01Eb2N1
bWVudDo6Q3JlYXRlRG9jdW1lbnRGcmFnbWVudCAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBj
cmVhdGVUZXh0Tm9kZSAgRE9NRG9jdW1lbnQ6OkNyZWF0ZVRleHROb2RlICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGNyZWF0ZUNvbW1lbnQgICBET01Eb2N1bWVudDo6
Q3JlYXRlQ29tbWVudCAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAg
Y3JlYXRlQ0RBVEFTZWN0aW9uIERPTURvY3VtZW50OjpDcmVhdGVDREFUQVNlY3Rpb24gICAgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24g
RE9NRG9jdW1lbnQ6OkNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBEb250RGVsZXRlfEZ1bmN0
aW9uIDEKLSAgY3JlYXRlQXR0cmlidXRlIERPTURvY3VtZW50OjpDcmVhdGVBdHRyaWJ1dGUgICAg
ICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBjcmVhdGVFbnRpdHlSZWZlcmVu
Y2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUVudGl0eVJlZmVyZW5jZSAgICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAxCi0gIGVsZW1lbnRGcm9tUG9pbnQgICAgIERPTURvY3VtZW50OjpFbGVtZW50RnJvbVBv
aW50ICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgZ2V0RWxlbWVudHNCeVRhZ05h
bWUgIERPTURvY3VtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZSAgICAgIERvbnREZWxldGV8RnVu
Y3Rpb24gMQotICBpbXBvcnROb2RlICAgICAgICAgICBET01Eb2N1bWVudDo6SW1wb3J0Tm9kZSAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGNyZWF0ZUVsZW1lbnROUyAg
ICAgIERPTURvY3VtZW50OjpDcmVhdGVFbGVtZW50TlMgICAgICAgICAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDIKLSAgY3JlYXRlQXR0cmlidXRlTlMgICAgRE9NRG9jdW1lbnQ6OkNyZWF0ZUF0dHJp
YnV0ZU5TICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgotICBnZXRFbGVtZW50c0J5VGFn
TmFtZU5TICBET01Eb2N1bWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWVOUyAgRG9udERlbGV0ZXxG
dW5jdGlvbiAyCi0gIGdldEVsZW1lbnRCeUlkICAgICBET01Eb2N1bWVudDo6R2V0RWxlbWVudEJ5
SWQgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgY3JlYXRlUmFuZ2UgICAg
ICAgIERPTURvY3VtZW50OjpDcmVhdGVSYW5nZSAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8
RnVuY3Rpb24gMAotICBjcmVhdGVOb2RlSXRlcmF0b3IgRE9NRG9jdW1lbnQ6OkNyZWF0ZU5vZGVJ
dGVyYXRvciAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIGNyZWF0ZVRyZWVXYWxr
ZXIgICBET01Eb2N1bWVudDo6Q3JlYXRlVHJlZVdhbGtlciAgICAgICAgICAgICBEb250RGVsZXRl
fEZ1bmN0aW9uIDQKLSAgY3JlYXRlRXZlbnQgICAgICAgIERPTURvY3VtZW50OjpDcmVhdGVFdmVu
dCAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBnZXRPdmVycmlkZVN0
eWxlICAgRE9NRG9jdW1lbnQ6OkdldE92ZXJyaWRlU3R5bGUgICAgICAgICAgICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAyCi0gIGV4ZWNDb21tYW5kICAgICAgICBET01Eb2N1bWVudDo6RXhlY0NvbW1h
bmQgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKLSAgcXVlcnlDb21tYW5k
RW5hYmxlZCBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kRW5hYmxlZCAgICAgICAgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQotICBxdWVyeUNvbW1hbmRJbmRldGVybSBET01Eb2N1bWVudDo6UXVlcnlD
b21tYW5kSW5kZXRlcm0gICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIHF1ZXJ5Q29tbWFu
ZFN0YXRlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRTdGF0ZSAgICAgICAgICAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKLSAgcXVlcnlDb21tYW5kU3VwcG9ydGVkIERPTURvY3VtZW50OjpRdWVy
eUNvbW1hbmRTdXBwb3J0ZWQgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBxdWVyeUNvbW1h
bmRWYWx1ZSBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kVmFsdWUgICAgICAgICAgICAgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCi1AZW5kCi0qLwotS0pTX0RFRklORV9QUk9UT1RZUEVfV0lUSF9QUk9U
T1RZUEUoRE9NRG9jdW1lbnRQcm90bywgRE9NRXZlbnRUYXJnZXROb2RlUHJvdG8pCi1LSlNfSU1Q
TEVNRU5UX1BST1RPRlVOQyhET01Eb2N1bWVudFByb3RvRnVuYykKLUtKU19JTVBMRU1FTlRfUFJP
VE9UWVBFKCJET01Eb2N1bWVudCIsIERPTURvY3VtZW50UHJvdG8sIERPTURvY3VtZW50UHJvdG9G
dW5jKQotCi1jb25zdCBDbGFzc0luZm8gRE9NRG9jdW1lbnQ6OmluZm8gPSB7ICJEb2N1bWVudCIs
ICZET01FdmVudFRhcmdldE5vZGU6OmluZm8sICZET01Eb2N1bWVudFRhYmxlLCAwIH07Ci0KLS8q
IFNvdXJjZSBmb3IgRE9NRG9jdW1lbnRUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJl
Z2VuZXJhdGUuCi1AYmVnaW4gRE9NRG9jdW1lbnRUYWJsZSAxNwotICBkb2N0eXBlICAgICAgICAg
RE9NRG9jdW1lbnQ6OkRvY1R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQotICBpbXBsZW1lbnRhdGlvbiAgRE9NRG9jdW1lbnQ6OkltcGxlbWVudGF0aW9uICAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBkb2N1bWVudEVsZW1lbnQgRE9N
RG9jdW1lbnQ6OkRvY3VtZW50RWxlbWVudCAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQotICBjaGFyc2V0ICAgICAgICAgRE9NRG9jdW1lbnQ6OkNoYXJzZXQgICAgICAgICAgICAg
ICAgICAgICAgICAgRG9udERlbGV0ZQotICBkZWZhdWx0Q2hhcnNldCAgRE9NRG9jdW1lbnQ6OkRl
ZmF1bHRDaGFyc2V0ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBjaGFy
YWN0ZXJTZXQgICAgRE9NRG9jdW1lbnQ6OkNoYXJhY3RlclNldCAgICAgICAgICAgICAgICAgICAg
RG9udERlbGV0ZXxSZWFkT25seQotICBhY3R1YWxFbmNvZGluZyAgRE9NRG9jdW1lbnQ6OkFjdHVh
bEVuY29kaW5nICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBpbnB1dEVu
Y29kaW5nICAgRE9NRG9jdW1lbnQ6OklucHV0RW5jb2RpbmcgICAgICAgICAgICAgICAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQotICBzdHlsZVNoZWV0cyAgICAgRE9NRG9jdW1lbnQ6OlN0eWxlU2hl
ZXRzICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBwcmVmZXJyZWRT
dHlsZXNoZWV0U2V0ICBET01Eb2N1bWVudDo6UHJlZmVycmVkU3R5bGVzaGVldFNldCAgRG9udERl
bGV0ZXxSZWFkT25seQotICBzZWxlY3RlZFN0eWxlc2hlZXRTZXQgIERPTURvY3VtZW50OjpTZWxl
Y3RlZFN0eWxlc2hlZXRTZXQgICAgRG9udERlbGV0ZQotICByZWFkeVN0YXRlICAgICAgRE9NRG9j
dW1lbnQ6OlJlYWR5U3RhdGUgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25s
eQotICBkZWZhdWx0VmlldyAgICAgICAgRE9NRG9jdW1lbnQ6OkRlZmF1bHRWaWV3ICAgICAgICAg
ICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotQGVuZAotKi8KLQotRE9NRG9jdW1lbnQ6OkRP
TURvY3VtZW50KEV4ZWNTdGF0ZSAqZXhlYywgRG9jdW1lbnQgKmQpCi0gIDogRE9NRXZlbnRUYXJn
ZXROb2RlKGQpIAoteyAKLSAgc2V0UHJvdG90eXBlKERPTURvY3VtZW50UHJvdG86OnNlbGYoZXhl
YykpOwotfQotCi1ET01Eb2N1bWVudDo6RE9NRG9jdW1lbnQoRG9jdW1lbnQgKmQpCi0gIDogRE9N
RXZlbnRUYXJnZXROb2RlKGQpIAoteyAKLX0KLQotRE9NRG9jdW1lbnQ6On5ET01Eb2N1bWVudCgp
Ci17Ci0gIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01PYmplY3Qoc3RhdGljX2Nhc3Q8RG9j
dW1lbnQgKj4obV9pbXBsLmdldCgpKSk7Ci19Ci0KLWJvb2wgRE9NRG9jdW1lbnQ6OmdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PERP
TURvY3VtZW50LCBET01FdmVudFRhcmdldE5vZGU+KGV4ZWMsICZET01Eb2N1bWVudFRhYmxlLCB0
aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1ZhbHVlICpET01Eb2N1bWVudDo6Z2V0
VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikgY29uc3QKLXsKLSAgRG9j
dW1lbnQgJmRvYyA9ICpzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihpbXBsKCkpOwotCi0gIHN3aXRj
aCh0b2tlbikgewotICBjYXNlIERvY1R5cGU6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuZG9j
dHlwZSgpKTsKLSAgY2FzZSBJbXBsZW1lbnRhdGlvbjoKLSAgICByZXR1cm4gdG9KUyhleGVjLCBk
b2MuaW1wbGVtZW50YXRpb24oKSk7Ci0gIGNhc2UgRG9jdW1lbnRFbGVtZW50OgotICAgIHJldHVy
biB0b0pTKGV4ZWMsZG9jLmRvY3VtZW50RWxlbWVudCgpKTsKLSAgY2FzZSBDaGFyc2V0OgotICBj
YXNlIENoYXJhY3RlclNldDoKLSAgY2FzZSBBY3R1YWxFbmNvZGluZzoKLSAgY2FzZSBJbnB1dEVu
Y29kaW5nOgotICAgIGlmIChEZWNvZGVyKiBkZWNvZGVyID0gZG9jLmRlY29kZXIoKSkKLSAgICAg
IHJldHVybiBqc1N0cmluZyhkZWNvZGVyLT5lbmNvZGluZ05hbWUoKSk7Ci0gICAgcmV0dXJuIGpz
TnVsbCgpOwotICBjYXNlIERlZmF1bHRDaGFyc2V0OgotICAgIGlmIChGcmFtZSAqZnJhbWUgPSBk
b2MuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGZyYW1lLT5zZXR0aW5ncygpLT5l
bmNvZGluZygpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgY2FzZSBTdHlsZVNoZWV0
czoKLSAgICByZXR1cm4gZ2V0RE9NU3R5bGVTaGVldExpc3QoZXhlYywgZG9jLnN0eWxlU2hlZXRz
KCksICZkb2MpOwotICBjYXNlIFByZWZlcnJlZFN0eWxlc2hlZXRTZXQ6Ci0gICAgcmV0dXJuIGpz
U3RyaW5nT3JOdWxsKGRvYy5wcmVmZXJyZWRTdHlsZXNoZWV0U2V0KCkpOwotICBjYXNlIFNlbGVj
dGVkU3R5bGVzaGVldFNldDoKLSAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZG9jLnNlbGVjdGVk
U3R5bGVzaGVldFNldCgpKTsKLSAgY2FzZSBSZWFkeVN0YXRlOgotICAgIGlmIChGcmFtZSAqZnJh
bWUgPSBkb2MuZnJhbWUoKSkgewotICAgICAgaWYgKGZyYW1lLT5pc0NvbXBsZXRlKCkpIHJldHVy
biBqc1N0cmluZygiY29tcGxldGUiKTsKLSAgICAgIGlmIChkb2MucGFyc2luZygpKSByZXR1cm4g
anNTdHJpbmcoImxvYWRpbmciKTsKLSAgICAgIHJldHVybiBqc1N0cmluZygibG9hZGVkIik7Ci0g
ICAgICAvLyBXaGF0IGRvZXMgdGhlIGludGVyYWN0aXZlIHZhbHVlIG1lYW4gPwotICAgICAgLy8g
TWlzc2luZyBzdXBwb3J0IGZvciAidW5pbml0aWFsaXplZCIKLSAgICB9Ci0gICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkRlZmF1bHRWaWV3OiAvLyBET00yCi0g
ICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuZGVmYXVsdFZpZXcoKSk7Ci0gIGRlZmF1bHQ6Ci0gICAg
cmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotdm9pZCBET01Eb2N1bWVudDo6cHV0KEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50
IGF0dHIpCi17Ci0gICAgbG9va3VwUHV0PERPTURvY3VtZW50LCBET01FdmVudFRhcmdldE5vZGU+
KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZET01Eb2N1bWVudFRhYmxlLCB0aGlz
KTsKLX0KLQotdm9pZCBET01Eb2N1bWVudDo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4
ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFsdWUsIGludCkKLXsKLSAgRG9jdW1lbnQgJmRvYyA9
ICpzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihpbXBsKCkpOwotICBzd2l0Y2ggKHRva2VuKSB7Ci0g
ICAgY2FzZSBTZWxlY3RlZFN0eWxlc2hlZXRTZXQ6Ci0gICAgICBkb2Muc2V0U2VsZWN0ZWRTdHls
ZXNoZWV0U2V0KHZhbHVlLT50b1N0cmluZyhleGVjKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNl
IENoYXJzZXQ6Ci0gICAgICBkb2MuZGVjb2RlcigpLT5zZXRFbmNvZGluZ05hbWUodmFsdWUtPnRv
U3RyaW5nKGV4ZWMpLmNzdHJpbmcoKS5jX3N0cigpLCBEZWNvZGVyOjpVc2VyQ2hvc2VuRW5jb2Rp
bmcpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotSlNWYWx1ZSAqRE9NRG9jdW1lbnRQcm90b0Z1
bmM6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKnRoaXNPYmosIGNv
bnN0IExpc3QgJmFyZ3MpCi17Ci0gIGlmICghdGhpc09iai0+aW5oZXJpdHMoJktKUzo6RE9NRG9j
dW1lbnQ6OmluZm8pKQotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0g
IERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMpOwotICBXZWJDb3JlOjpOb2Rl
JiBub2RlID0gKnN0YXRpY19jYXN0PERPTU5vZGUqPih0aGlzT2JqKS0+aW1wbCgpOwotICBEb2N1
bWVudCAmZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgJj4obm9kZSk7Ci0gIFVTdHJpbmcgc3Ry
ID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7Ci0gIFdlYkNvcmU6OlN0cmluZyBzID0gc3RyOwot
Ci0gIHN3aXRjaChpZCkgewotICBjYXNlIERPTURvY3VtZW50OjpBZG9wdE5vZGU6Ci0gICAgcmV0
dXJuIHRvSlMoZXhlYyxkb2MuYWRvcHROb2RlKHRvTm9kZShhcmdzWzBdKSxleGNlcHRpb24pKTsK
LSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlRWxlbWVudDoKLSAgICByZXR1cm4gdG9KUyhleGVj
LGRvYy5jcmVhdGVFbGVtZW50KHMsIGV4Y2VwdGlvbikpOwotICBjYXNlIERPTURvY3VtZW50OjpD
cmVhdGVEb2N1bWVudEZyYWdtZW50OgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZVRleHROb2RlOgot
ICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmNyZWF0ZVRleHROb2RlKHMpKTsKLSAgY2FzZSBET01E
b2N1bWVudDo6Q3JlYXRlQ29tbWVudDoKLSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5jcmVhdGVD
b21tZW50KHMpKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlQ0RBVEFTZWN0aW9uOgotICAg
IHJldHVybiB0b0pTKGV4ZWMsIGRvYy5jcmVhdGVDREFUQVNlY3Rpb24ocywgZXhjZXB0aW9uKSk7
Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKLSAgICBy
ZXR1cm4gdG9KUyhleGVjLCBkb2MuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGFyZ3NbMF0t
PnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKSk7Ci0g
IGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUF0dHJpYnV0ZToKLSAgICByZXR1cm4gdG9KUyhleGVj
LGRvYy5jcmVhdGVBdHRyaWJ1dGUocywgZXhjZXB0aW9uKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6
OkNyZWF0ZUVudGl0eVJlZmVyZW5jZToKLSAgICByZXR1cm4gdG9KUyhleGVjLCBkb2MuY3JlYXRl
RW50aXR5UmVmZXJlbmNlKHMsIGV4Y2VwdGlvbikpOwotICBjYXNlIERPTURvY3VtZW50OjpFbGVt
ZW50RnJvbVBvaW50OgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmVsZW1lbnRGcm9tUG9pbnQo
KGludClhcmdzWzBdLT50b051bWJlcihleGVjKSwgKGludClhcmdzWzFdLT50b051bWJlcihleGVj
KSkpOwotICBjYXNlIERPTURvY3VtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZToKLSAgICByZXR1
cm4gdG9KUyhleGVjLGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZShzKS5nZXQoKSk7Ci0gIGNhc2Ug
RE9NRG9jdW1lbnQ6OkltcG9ydE5vZGU6IC8vIERPTTIKLSAgICByZXR1cm4gdG9KUyhleGVjLGRv
Yy5pbXBvcnROb2RlKHRvTm9kZShhcmdzWzBdKSwgYXJnc1sxXS0+dG9Cb29sZWFuKGV4ZWMpLCBl
eGNlcHRpb24pKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlRWxlbWVudE5TOiAvLyBET00y
Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlRWxlbWVudE5TKHMsIGFyZ3NbMV0tPnRv
U3RyaW5nKGV4ZWMpLCBleGNlcHRpb24pKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlQXR0
cmlidXRlTlM6IC8vIERPTTIKLSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5jcmVhdGVBdHRyaWJ1
dGVOUyhzLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKSk7Ci0gIGNhc2UgRE9N
RG9jdW1lbnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1lTlM6IC8vIERPTTIKLSAgICByZXR1cm4gdG9K
UyhleGVjLGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKHMsIGFyZ3NbMV0tPnRvU3RyaW5nKGV4
ZWMpKS5nZXQoKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkdldEVsZW1lbnRCeUlkOgotICAgIHJl
dHVybiB0b0pTKGV4ZWMsZG9jLmdldEVsZW1lbnRCeUlkKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMp
KSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZVJhbmdlOgotICAgIHJldHVybiB0b0pTKGV4
ZWMsIGRvYy5jcmVhdGVSYW5nZSgpLmdldCgpKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRl
Tm9kZUl0ZXJhdG9yOiB7Ci0gICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGZpbHRlcjsKLSAgICBKU1Zh
bHVlKiBhcmcyID0gYXJnc1syXTsKLSAgICBpZiAoYXJnMi0+aXNPYmplY3QoKSkgewotICAgICAg
SlNPYmplY3QqIG8oc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihhcmcyKSk7Ci0gICAgICBmaWx0ZXIg
PSBuZXcgTm9kZUZpbHRlcihuZXcgSlNOb2RlRmlsdGVyQ29uZGl0aW9uKG8pKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRvSlMoZXhlYywgZG9jLmNyZWF0ZU5vZGVJdGVyYXRvcih0b05vZGUoYXJnc1sw
XSksIGFyZ3NbMV0tPnRvVUludDMyKGV4ZWMpLAotICAgICAgICBmaWx0ZXIucmVsZWFzZSgpLCBh
cmdzWzNdLT50b0Jvb2xlYW4oZXhlYyksIGV4Y2VwdGlvbikuZ2V0KCkpOwotICB9Ci0gIGNhc2Ug
RE9NRG9jdW1lbnQ6OkNyZWF0ZVRyZWVXYWxrZXI6IHsKLSAgICBSZWZQdHI8Tm9kZUZpbHRlcj4g
ZmlsdGVyOwotICAgIEpTVmFsdWUqIGFyZzIgPSBhcmdzWzJdOwotICAgIGlmIChhcmcyLT5pc09i
amVjdCgpKSB7Ci0gICAgICBKU09iamVjdCogbyhzdGF0aWNfY2FzdDxKU09iamVjdCAqPihhcmcy
KSk7Ci0gICAgICBmaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgSlNOb2RlRmlsdGVyQ29uZGl0
aW9uKG8pKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZG9jLmNyZWF0ZVRyZWVXYWxr
ZXIodG9Ob2RlKGFyZ3NbMF0pLCBhcmdzWzFdLT50b1VJbnQzMihleGVjKSwKLSAgICAgICAgZmls
dGVyLnJlbGVhc2UoKSwgYXJnc1szXS0+dG9Cb29sZWFuKGV4ZWMpLCBleGNlcHRpb24pLmdldCgp
KTsKLSAgfQotICBjYXNlIERPTURvY3VtZW50OjpDcmVhdGVFdmVudDoKLSAgICByZXR1cm4gdG9K
UyhleGVjLCBkb2MuY3JlYXRlRXZlbnQocywgZXhjZXB0aW9uKS5nZXQoKSk7Ci0gIGNhc2UgRE9N
RG9jdW1lbnQ6OkdldE92ZXJyaWRlU3R5bGU6Ci0gICAgaWYgKEVsZW1lbnQgKmVsZW1lbnQwID0g
dG9FbGVtZW50KGFyZ3NbMF0pKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5nZXRPdmVy
cmlkZVN0eWxlKGVsZW1lbnQwLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSkpOwotICAgIC8vIEZJ
WE1FOiBJcyB1bmRlZmluZWQgcmlnaHQgaGVyZSwgb3Igc2hvdWxkIHdlIHJhaXNlIGFuIGV4Y2Vw
dGlvbj8KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6RXhl
Y0NvbW1hbmQ6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5leGVjQ29tbWFuZChhcmdzWzBd
LT50b1N0cmluZyhleGVjKSwgYXJnc1sxXS0+dG9Cb29sZWFuKGV4ZWMpLCBhcmdzWzJdLT50b1N0
cmluZyhleGVjKSkpOwotICB9Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZEVuYWJs
ZWQ6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNvbW1hbmRFbmFibGVkKGFyZ3Nb
MF0tPnRvU3RyaW5nKGV4ZWMpKSk7Ci0gIH0KLSAgY2FzZSBET01Eb2N1bWVudDo6UXVlcnlDb21t
YW5kSW5kZXRlcm06IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNvbW1hbmRJbmRl
dGVybShhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICB9Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6
OlF1ZXJ5Q29tbWFuZFN0YXRlOiB7Ci0gICAgcmV0dXJuIGpzQm9vbGVhbihkb2MucXVlcnlDb21t
YW5kU3RhdGUoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKTsKLSAgfQotICBjYXNlIERPTURvY3Vt
ZW50OjpRdWVyeUNvbW1hbmRTdXBwb3J0ZWQ6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5x
dWVyeUNvbW1hbmRTdXBwb3J0ZWQoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKTsKLSAgfQotICBj
YXNlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRWYWx1ZTogewotICAgIFdlYkNvcmU6OlN0cmlu
ZyBjb21tYW5kVmFsdWUoZG9jLnF1ZXJ5Q29tbWFuZFZhbHVlKGFyZ3NbMF0tPnRvU3RyaW5nKGV4
ZWMpKSk7Ci0gICAgLy8gTWV0aG9kIHJldHVybnMgbnVsbCBTdHJpbmcgdG8gc2lnbmFsIGNvbW1h
bmQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgLy8gTWljcm9zb2Z0IGRvY3VtZW50YXRpb24gZm9yIHRo
aXMgbWV0aG9kIHNheXM6Ci0gICAgLy8gIklmIG5vdCBzdXBwb3J0ZWQgW2ZvciBhIGNvbW1hbmQg
aWRlbnRpZmllcl0sIHRoaXMgbWV0aG9kIHJldHVybnMgYSBCb29sZWFuIHNldCB0byBmYWxzZS4i
Ci0gICAgaWYgKGNvbW1hbmRWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGpzQm9vbGVh
bihmYWxzZSk7Ci0gICAgZWxzZSAKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGNvbW1hbmRWYWx1
ZSk7Ci0gIH0KLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIC8qIFNvdXJjZSBmb3IgRE9NRWxl
bWVudFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgogQGJl
Z2luIERPTUVsZW1lbnRQcm90b1RhYmxlIDgKICAgc2Nyb2xsSW50b1ZpZXcgICAgICAgICAgICAg
ICAgRE9NRWxlbWVudDo6U2Nyb2xsSW50b1ZpZXcgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEK
QEAgLTEzNTIsMTYgKzExMDgsMTYgQEAKICAgaWYgKCFuKQogICAgIHJldHVybiBqc051bGwoKTsK
IAotICBET01Eb2N1bWVudCAqcmV0ID0gMDsKKyAgSlNEb2N1bWVudCAqcmV0ID0gMDsKICAgU2Ny
aXB0SW50ZXJwcmV0ZXIqIGludGVycCA9IHN0YXRpY19jYXN0PFNjcmlwdEludGVycHJldGVyICo+
KGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpKTsKIAotICBpZiAoKHJldCA9IHN0YXRpY19jYXN0
PERPTURvY3VtZW50ICo+KGludGVycC0+Z2V0RE9NT2JqZWN0KG4pKSkpCisgIGlmICgocmV0ID0g
c3RhdGljX2Nhc3Q8SlNEb2N1bWVudCAqPihpbnRlcnAtPmdldERPTU9iamVjdChuKSkpKQogICAg
IHJldHVybiByZXQ7CiAKICAgaWYgKG4tPmlzSFRNTERvY3VtZW50KCkpCiAgICAgcmV0ID0gbmV3
IEpTSFRNTERvY3VtZW50KGV4ZWMsIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCAqPihuKSk7CiAg
IGVsc2UKLSAgICByZXQgPSBuZXcgRE9NRG9jdW1lbnQoZXhlYywgbik7CisgICAgcmV0ID0gbmV3
IEpTRG9jdW1lbnQoZXhlYywgbik7CiAKICAgLy8gTWFrZSBzdXJlIHRoZSBkb2N1bWVudCBpcyBr
ZXB0IGFyb3VuZCBieSB0aGUgd2luZG93IG9iamVjdCwgYW5kIHdvcmtzIHJpZ2h0IHdpdGggdGhl
CiAgIC8vIGJhY2svZm9yd2FyZCBjYWNoZS4KSW5kZXg6IGtodG1sL2VjbWEva2pzX2JpbmRpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHJldmlzaW9uIDEzNjk5
KQorKysga2h0bWwvZWNtYS9ranNfYmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNiAr
MTUwLDkgQEAKICAgICovCiAgIEpTVmFsdWUgKmpzU3RyaW5nT3JVbmRlZmluZWQoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJik7CiAKKyAgSlNWYWx1ZSAqanNTdHJpbmdPckZhbHNlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYpOworCisKICAgLyoqCiAgICAqICBHZXQgYSBTdHJpbmcgb2JqZWN0IG9yIGEg
bnVsbCBTdHJpbmcgaWYgdGhlIHZhbHVlIGlzIG51bGwKICAgICovCkluZGV4OiBraHRtbC9lY21h
L0pTWFNMVFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9KU1hTTFRQcm9j
ZXNzb3IuY3BwCShyZXZpc2lvbiAxMzY5OSkKKysrIGtodG1sL2VjbWEvSlNYU0xUUHJvY2Vzc29y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlhTTFRQcm9j
ZXNzb3IuaCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNzb3IubHV0LmgiCiAjaW5jbHVkZSAia2pz
X2RvbS5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIApAQCAtODgsOSArODksOSBAQAogICAgICAg
ICB7CiAgICAgICAgICAgICBKU1ZhbHVlICpub2RlVmFsID0gYXJnc1swXTsKICAgICAgICAgICAg
IEpTVmFsdWUgKmRvY1ZhbCA9IGFyZ3NbMV07Ci0gICAgICAgICAgICBpZiAobm9kZVZhbC0+aXNP
YmplY3QoJkRPTU5vZGU6OmluZm8pICYmIGRvY1ZhbC0+aXNPYmplY3QoJkRPTURvY3VtZW50Ojpp
bmZvKSkgeworICAgICAgICAgICAgaWYgKG5vZGVWYWwtPmlzT2JqZWN0KCZET01Ob2RlOjppbmZv
KSAmJiBkb2NWYWwtPmlzT2JqZWN0KCZKU0RvY3VtZW50OjppbmZvKSkgewogICAgICAgICAgICAg
ICAgIFdlYkNvcmU6Ok5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxET01Ob2RlICo+KG5vZGVWYWwp
LT5pbXBsKCk7Ci0gICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQgKj4oZG9jVmFsKS0+aW1wbCgpKTsKKyAg
ICAgICAgICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzdGF0
aWNfY2FzdDxKU0RvY3VtZW50ICo+KGRvY1ZhbCktPmltcGwoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgcHJvY2Vzc29yLnRyYW5zZm9ybVRvRnJhZ21lbnQobm9kZSwgZG9j
KS5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBUaHJvdyBleGNlcHRpb24/
CkluZGV4OiBraHRtbC9lY21hL2tqc19wcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNt
YS9ranNfcHJveHkuY3BwCShyZXZpc2lvbiAxMzY5OSkKKysrIGtodG1sL2VjbWEva2pzX3Byb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQAogCiAgIEpTTG9jayBsb2NrOwog
Ci0gIEpTVmFsdWUqIHRoaXNOb2RlID0gbiA/IFdpbmRvdzo6cmV0cmlldmUobV9mcmFtZSkgOiB0
b0pTKG1fc2NyaXB0LT5nbG9iYWxFeGVjKCksIG4pOworICBKU1ZhbHVlKiB0aGlzTm9kZSA9IG4g
PyB0b0pTKG1fc2NyaXB0LT5nbG9iYWxFeGVjKCksIG4pIDogV2luZG93OjpyZXRyaWV2ZShtX2Zy
YW1lKTsKICAgQ29tcGxldGlvbiBjb21wID0gbV9zY3JpcHQtPmV2YWx1YXRlKGZpbGVuYW1lLCBi
YXNlTGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBLSlM6OlVDaGFyICo+KHN0ci51bmljb2Rl
KCkpLCBzdHIubGVuZ3RoKCksIHRoaXNOb2RlKTsKIAogICBpZiAoY29tcC5jb21wbFR5cGUoKSA9
PSBOb3JtYWwgfHwgY29tcC5jb21wbFR5cGUoKSA9PSBSZXR1cm5WYWx1ZSkKSW5kZXg6IGtodG1s
L2VjbWEva2pzX2RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2VjbWEva2pzX2RvbS5oCShyZXZp
c2lvbiAxMzY5OSkKKysrIGtodG1sL2VjbWEva2pzX2RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzYsMzUgKzEzNiw2IEBACiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGVMaXN0PiBtX2ltcGw7CiAg
IH07CiAKLSAgY2xhc3MgRE9NRG9jdW1lbnQgOiBwdWJsaWMgRE9NRXZlbnRUYXJnZXROb2RlIHsK
LSAgcHVibGljOgotICAgIERPTURvY3VtZW50KEV4ZWNTdGF0ZSAqZXhlYywgV2ViQ29yZTo6RG9j
dW1lbnQgKmQpOwotICAgIH5ET01Eb2N1bWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBKU1ZhbHVlICpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRv
a2VuKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3Qg
SWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIgPSBOb25l
KTsKLSAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4s
IEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0cik7Ci0gICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBpbmZvOwotICAgIGVudW0geyBEb2NUeXBlLCBJbXBsZW1lbnRhdGlvbiwgRG9jdW1l
bnRFbGVtZW50LCAKLSAgICAgICAgICAgQ2hhcnNldCwgRGVmYXVsdENoYXJzZXQsIENoYXJhY3Rl
clNldCwgQWN0dWFsRW5jb2RpbmcsIElucHV0RW5jb2RpbmcsCi0gICAgICAgICAgIC8vIEZ1bmN0
aW9ucwotICAgICAgICAgICBBZG9wdE5vZGUsCi0gICAgICAgICAgIENyZWF0ZUVsZW1lbnQsIENy
ZWF0ZURvY3VtZW50RnJhZ21lbnQsIENyZWF0ZVRleHROb2RlLCBDcmVhdGVDb21tZW50LAotICAg
ICAgICAgICBDcmVhdGVDREFUQVNlY3Rpb24sIENyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbiwg
Q3JlYXRlQXR0cmlidXRlLAotICAgICAgICAgICBDcmVhdGVFbnRpdHlSZWZlcmVuY2UsIEdldEVs
ZW1lbnRzQnlUYWdOYW1lLCBJbXBvcnROb2RlLCBDcmVhdGVFbGVtZW50TlMsCi0gICAgICAgICAg
IENyZWF0ZUF0dHJpYnV0ZU5TLCBHZXRFbGVtZW50c0J5VGFnTmFtZU5TLCBHZXRFbGVtZW50QnlJ
ZCwKLSAgICAgICAgICAgQ3JlYXRlUmFuZ2UsIENyZWF0ZU5vZGVJdGVyYXRvciwgQ3JlYXRlVHJl
ZVdhbGtlciwgRGVmYXVsdFZpZXcsCi0gICAgICAgICAgIENyZWF0ZUV2ZW50LCBFbGVtZW50RnJv
bVBvaW50LCBTdHlsZVNoZWV0cywgUHJlZmVycmVkU3R5bGVzaGVldFNldCwgCi0gICAgICAgICAg
IFNlbGVjdGVkU3R5bGVzaGVldFNldCwgR2V0T3ZlcnJpZGVTdHlsZSwgUmVhZHlTdGF0ZSwgCi0g
ICAgICAgICAgIEV4ZWNDb21tYW5kLCBRdWVyeUNvbW1hbmRFbmFibGVkLCBRdWVyeUNvbW1hbmRJ
bmRldGVybSwgUXVlcnlDb21tYW5kU3RhdGUsIAotICAgICAgICAgICBRdWVyeUNvbW1hbmRTdXBw
b3J0ZWQsIFF1ZXJ5Q29tbWFuZFZhbHVlIH07Ci0KLSAgcHJvdGVjdGVkOgotICAgIC8vIENvbnN0
cnVjdG9yIGZvciBpbmhlcml0ZWQgY2xhc3NlczsgZG9lc24ndCBzZXQgdXAgYSBwcm90b3R5cGUu
Ci0gICAgRE9NRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQgKmQpOwotICB9OwotCiAgIFdlYkNv
cmU6OkF0dHIqIHRvQXR0cihKU1ZhbHVlKiwgYm9vbCYgb2spOwogCiAgIEtKU19ERUZJTkVfUFJP
VE9UWVBFX1dJVEhfUFJPVE9UWVBFKERPTUVsZW1lbnRQcm90bywgRE9NRXZlbnRUYXJnZXROb2Rl
UHJvdG8pCkluZGV4OiBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0
Zm9ybS9BdG9taWNTdHJpbmcuaAkocmV2aXNpb24gMTM2OTkpCisrKyBwbGF0Zm9ybS9BdG9taWNT
dHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogICAgIEF0b21pY1N0cmlu
Zyhjb25zdCBLSlM6OklkZW50aWZpZXImIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBB
dG9taWNTdHJpbmcoU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7IH0KICAg
ICBBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGltcCkgeyB9
Ci0gICAgZXhwbGljaXQgQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhh
ZGQocy5pbXBsKCkpKSB7IH0KKyAgICBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1f
c3RyaW5nKGFkZChzLmltcGwoKSkpIHsgfQogICAgIAogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmlu
ZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgZG9tU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CkluZGV4OiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTM2OTkpCisrKyBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDI3ICsxNDYsMzcgQEAKICAgICAg
ICR0eXBlIGVxICJOb2RlTGlzdCIgb3IgCiAgICAgICAkdHlwZSBlcSAiVGV4dCIgb3IgCiAgICAg
ICAkdHlwZSBlcSAiQ2hhcmFjdGVyRGF0YSIgb3IKKyAgICAgICR0eXBlIGVxICJDREFUQVNlY3Rp
b24iIG9yCiAgICAgICAkdHlwZSBlcSAiQ2FudmFzUGF0dGVybiIgb3IKICAgICAgICR0eXBlIGVx
ICJSYW5nZSIgb3IKICAgICAgICR0eXBlIGVxICJEb2N1bWVudEZyYWdtZW50IiBvcgogICAgICAg
JHR5cGUgZXEgIk5vZGUiIG9yCiAgICAgICAkdHlwZSBlcSAiQXR0ciIgb3IKKyAgICAgICR0eXBl
IGVxICJBYnN0cmFjdFZpZXciIG9yCisgICAgICAkdHlwZSBlcSAiQ29tbWVudCIgb3IKICAgICAg
ICR0eXBlIGVxICJFbGVtZW50IikgewogICAgICRpbXBsSW5jbHVkZXN7IiR7dHlwZX0uaCJ9ID0g
MTsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIkNTU1N0eWxlU2hlZXQiIG9yICR0eXBlIGVxICJTdHls
ZVNoZWV0IikgewogICAgICRpbXBsSW5jbHVkZXN7ImNzc19zdHlsZXNoZWV0aW1wbC5oIn0gPSAx
OwogICB9IGVsc2lmICgkdHlwZSBlcSAiQ1NTUHJpbWl0aXZlVmFsdWUiIG9yICR0eXBlIGVxICJD
b3VudGVyIiBvciAkdHlwZSBlcSAiUmVjdCIgb3IgJHR5cGUgZXEgIlJHQkNvbG9yIikgewogICAg
ICRpbXBsSW5jbHVkZXN7ImNzc192YWx1ZWltcGwuaCJ9ID0gMTsKKyAgfSBlbHNpZiAoJHR5cGUg
ZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iKSB7CisgICAgJGltcGxJbmNsdWRlc3siY3NzX3ZhbHVl
aW1wbC5oIn0gPSAxOwogICB9IGVsc2lmICgkdHlwZSBlcSAiSFRNTERvY3VtZW50IikgewogICAg
ICRpbXBsSW5jbHVkZXN7IkhUTUxEb2N1bWVudC5oIn0gPSAxOwogICB9IGVsc2lmICgkdHlwZSBl
cSAiTXV0YXRpb25FdmVudCIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIktleWJvYXJkRXZlbnQi
IG9yCiAgICAgICAgICAgICR0eXBlIGVxICJNb3VzZUV2ZW50IiBvcgorICAgICAgICAgICAkdHlw
ZSBlcSAiRXZlbnQiIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJVSUV2ZW50IiBvcgogICAgICAg
ICAgICAkdHlwZSBlcSAiV2hlZWxFdmVudCIpIHsKICAgICAkaW1wbEluY2x1ZGVzeyJkb20yX2V2
ZW50c2ltcGwuaCJ9ID0gMTsKKyAgfSBlbHNpZiAoJHR5cGUgZXEgIk5vZGVJdGVyYXRvciIgb3IK
KwkgICAkdHlwZSBlcSAiVHJlZVdhbGtlciIpIHsKKyAgICAkaW1wbEluY2x1ZGVzeyJkb20yX3Ry
YXZlcnNhbGltcGwuaCJ9ID0gMTsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIlByb2Nlc3NpbmdJbnN0
cnVjdGlvbiIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIkVudGl0eSIgb3IKKwkgICAkdHlwZSBl
cSAiRW50aXR5UmVmZXJlbmNlIiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiTm90YXRpb24iKSB7
CiAgICAgJGltcGxJbmNsdWRlc3siZG9tX3htbGltcGwuaCJ9ID0gMTsKICAgfSBlbHNpZiAoJHR5
cGUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpIHsKQEAgLTcxOSw2ICs3MjksOCBAQAog
ICAgICAgICAgICAkdHlwZSBlcSAiRG9jdW1lbnRUeXBlIiBvcgogICAgICAgICAgICAkdHlwZSBl
cSAiUmFuZ2UiKSB7CiAgICAgcmV0dXJuICIke3R5cGV9KiI7CisgIH0gZWxzaWYgKCR0eXBlIGVx
ICJOb2RlRmlsdGVyIikgeworICAgICAgcmV0dXJuICJQYXNzUmVmUHRyPCR7dHlwZX0+IjsKICAg
fSBlbHNpZiAoJHR5cGUgZXEgIkNvbXBhcmVIb3ciKSB7CiAgICAgcmV0dXJuICJSYW5nZTo6Q29t
cGFyZUhvdyI7CiAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKQEAgLTc2Myw2
ICs3NzUsOCBAQAogICAgICAgcmV0dXJuIDA7CiAgIH0gIGVsc2lmICgkdHlwZSBlcSAiUmFuZ2Ui
KSB7CiAgICAgICByZXR1cm4gMDsKKyAgfSAgZWxzaWYgKCR0eXBlIGVxICJOb2RlRmlsdGVyIikg
eworICAgICAgcmV0dXJuIDA7CiAgIH0gZWxzZSB7CiAgICAgZGllICJEb24ndCBrbm93IHdoZXRo
ZXIgYSBKUyB2YWx1ZSBjYW4gZmFpbCBjb252ZXJzaW9uIHRvIHR5cGUgJHR5cGUuIgogICB9CkBA
IC04MTYsNiArODMwLDkgQEAKICAgfSBlbHNpZiAoJHR5cGUgZXEgIkVsZW1lbnQiKSB7CiAgICAg
JGltcGxJbmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwogICAgIHJldHVybiAidG9FbGVtZW50KCR2
YWx1ZSkiOworICB9IGVsc2lmICgkdHlwZSBlcSAiTm9kZUZpbHRlciIpIHsKKyAgICAkaW1wbElu
Y2x1ZGVzeyJranNfdHJhdmVyc2FsLmgifSA9IDE7CisgICAgcmV0dXJuICJ0b05vZGVGaWx0ZXIo
JHZhbHVlKSI7CiAgIH0gZWxzZSB7CiAgICAgZGllICJEb24ndCBrbm93IGhvdyB0byBjb252ZXJ0
IGEgSlMgdmFsdWUgb2YgdHlwZSAkdHlwZS4iCiAgIH0KQEAgLTg0MSwyOCArODU4LDQ3IEBACiAg
ICAgaWYgKGRlZmluZWQgJGNvbnYpIHsKICAgICAgIGlmICgkY29udiBlcSAiTnVsbCIpIHsKICAg
ICAgICAgcmV0dXJuICJqc1N0cmluZ09yTnVsbCgkdmFsdWUpIjsKKyAgICAgIH0gZWxzaWYgKCRj
b252IGVxICJVbmRlZmluZWQiKSB7CisgICAgICAgIHJldHVybiAianNTdHJpbmdPclVuZGVmaW5l
ZCgkdmFsdWUpIjsKKyAgICAgIH0gZWxzaWYgKCRjb252IGVxICJGYWxzZSIpIHsKKyAgICAgICAg
cmV0dXJuICJqc1N0cmluZ09yRmFsc2UoJHZhbHVlKSI7CiAgICAgICB9IGVsc2UgewogICAgICAg
ICBkaWUgIlVua25vd24gdmFsdWUgZm9yIENvbnZlcnROdWxsU3RyaW5nVG8gZXh0ZW5kZWQgYXR0
cmlidXRlIjsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgcmV0dXJuICJqc1N0cmluZygk
dmFsdWUpIjsKICAgICB9CisgIH0gZWxzaWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlvbiIp
IHsKKyAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRl
c3siSlNET01JbXBsZW1lbnRhdGlvbi5oIn0gPSAxOworICAgIHJldHVybiAidG9KUyhleGVjLCAk
dmFsdWUpIjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIk5vZGUiIG9yCiAgICAgICAgICAgICR0eXBl
IGVxICJUZXh0IiBvcgorICAgICAgICAgICAkdHlwZSBlcSAiQ29tbWVudCIgb3IKKyAgICAgICAg
ICAgJHR5cGUgZXEgIkNEQVRBU2VjdGlvbiIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIkRvY3Vt
ZW50VHlwZSIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIkRvY3VtZW50IiBvcgorICAgICAgICAg
ICAkdHlwZSBlcSAiRW50aXR5UmVmZXJlbmNlIiBvcgorICAgICAgICAgICAkdHlwZSBlcSAiUHJv
Y2Vzc2luZ0luc3RydWN0aW9uIiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiSFRNTERvY3VtZW50
IiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiRWxlbWVudCIgb3IKICAgICAgICAgICAgJHR5cGUg
ZXEgIkF0dHIiIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJEb2N1bWVudEZyYWdtZW50Iikgewog
ICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJD
b21tZW50LmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siQ0RBVEFTZWN0aW9uLmgifSA9IDE7
CiAgICAgJGltcGxJbmNsdWRlc3siTm9kZS5oIn0gPSAxOwogICAgICRpbXBsSW5jbHVkZXN7IkVs
ZW1lbnQuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJEb2N1bWVudFR5cGUuaCJ9ID0gMTsK
ICAgICByZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlKSI7CiAgIH0gZWxzaWYgKCR0eXBlIGVxICJF
dmVudFRhcmdldCIpIHsKICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CiAgICAg
JGltcGxJbmNsdWRlc3siRXZlbnRUYXJnZXROb2RlLmgifSA9IDE7CiAgICAgcmV0dXJuICJ0b0pT
KGV4ZWMsICR2YWx1ZSkiOworICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnQiKSB7CisgICAgJGlt
cGxJbmNsdWRlc3sia2pzX2V2ZW50cy5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7ImRvbTJf
ZXZlbnRzaW1wbC5oIn0gPSAxOworICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsKICAg
fSBlbHNpZiAoJHR5cGUgZXEgIk5vZGVMaXN0IiBvciAkdHlwZSBlcSAiTmFtZWROb2RlTWFwIikg
ewogICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICByZXR1cm4gInRvSlMo
ZXhlYywgJHZhbHVlKSI7CkBAIC04NzEsNiArOTA3LDEwIEBACiAgICAgJGltcGxJbmNsdWRlc3si
Y3NzX3J1bGVpbXBsLmgifSA9IDE7CiAgICAgJGltcGxJbmNsdWRlc3sia2pzX2Nzcy5oIn0gPSAx
OwogICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsgICAgCisgIH0gZWxzaWYgKCR0eXBl
IGVxICJTdHlsZVNoZWV0TGlzdCIpIHsKKyAgICAkaW1wbEluY2x1ZGVzeyJjc3Nfc3R5bGVzaGVl
dGltcGwuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJranNfY3NzLmgifSA9IDE7CisgICAg
cmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1ZSwgaW1wbCkiOyAgICAKICAgfSBlbHNpZiAoJHR5cGUg
ZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iIG9yICR0eXBlIGVxICJSZWN0IikgewogICAgICRpbXBs
SW5jbHVkZXN7ImNzc192YWx1ZWltcGwuaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyJranNf
Y3NzLmgifSA9IDE7CkBAIC04ODgsNiArOTI4LDEwIEBACiAgIH0gZWxzaWYgKCR0eXBlIGVxICJ2
aWV3czo6QWJzdHJhY3RWaWV3IikgewogICAgICRpbXBsSW5jbHVkZXN7Imtqc192aWV3cy5oIn0g
PSAxOwogICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsKKyAgfSBlbHNpZiAoJHR5cGUg
ZXEgIk5vZGVJdGVyYXRvciIgb3IKKwkgICAkdHlwZSBlcSAiVHJlZVdhbGtlciIpIHsKKyAgICAk
aW1wbEluY2x1ZGVzeyJranNfdHJhdmVyc2FsLmgifSA9IDE7CisgICAgcmV0dXJuICJ0b0pTKGV4
ZWMsICR2YWx1ZSkiOwogICB9IGVsc2UgewogICAgIGRpZSAiRG9uJ3Qga25vdyBob3cgdG8gY29u
dmVydCBhIHZhbHVlIG9mIHR5cGUgJHR5cGUgdG8gYSBKUyBWYWx1ZSI7CiAgIH0KSW5kZXg6IERl
cml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2
aXNpb24gMTM2OTkpCisrKyBEZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw2ICs1Miw3IEBACiAgICAgSlNDU1NQcmltaXRpdmVWYWx1ZS5oIFwKICAgICBKU0RPTUltcGxl
bWVudGF0aW9uLmggXAogICAgIEpTRE9NUGFyc2VyLmx1dC5oIFwKKyAgICBKU0RvY3VtZW50Lmgg
XAogICAgIEpTRG9jdW1lbnRUeXBlLmggXAogICAgIEpTRWxlbWVudC5oIFwKICAgICBKU0VudGl0
eS5oIFwKSW5kZXg6IGRvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0RvY3VtZW50
LmlkbAkocmV2aXNpb24gMCkKKysrIGRvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs
YWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKwor
bW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFtMZWdhY3lQYXJlbnQ9S0pTOjpET01FdmVu
dFRhcmdldE5vZGVdIERvY3VtZW50IDogRXZlbnRUYXJnZXROb2RlIHsKKworICAgICAgICAvLyBE
T00gTGV2ZWwgMSBDb3JlCisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9j
dW1lbnRUeXBlIGRvY3R5cGU7CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NSW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb247CisgICAgICAgIAorICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRWxlbWVudCBkb2N1bWVudEVsZW1lbnQ7CisgICAgICAgIAorICAgICAg
ICBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoaW4gRE9NU3RyaW5nIHRhZ05hbWUpCisgICAgICAgICAg
ICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIAorICAgICAgICBEb2N1bWVudEZyYWdt
ZW50IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgCisgICAgICAgIFRleHQgY3Jl
YXRlVGV4dE5vZGUoaW4gRE9NU3RyaW5nIGRhdGEpOworICAgICAgICAKKyAgICAgICAgQ29tbWVu
dCBjcmVhdGVDb21tZW50KGluIERPTVN0cmluZyBkYXRhKTsKKyAgICAgICAgCisgICAgICAgIENE
QVRBU2VjdGlvbiBjcmVhdGVDREFUQVNlY3Rpb24oaW4gRE9NU3RyaW5nIGRhdGEpCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisgICAgICAgIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiBjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oaW4gRE9NU3RyaW5nIHRhcmdl
dCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRE9NU3RyaW5nIGRhdGEpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIAorICAgICAgICBBdHRyIGNyZWF0ZUF0dHJpYnV0ZShpbiBET01TdHJpbmcg
bmFtZSkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisgICAg
ICAgIEVudGl0eVJlZmVyZW5jZSBjcmVhdGVFbnRpdHlSZWZlcmVuY2UoaW4gRE9NU3RyaW5nIG5h
bWUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisgICAgICAg
IE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyB0YWduYW1lKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIERPTSBMZXZlbCAyIENvcmUKKyAgICAgICAgCisgICAgICAgIE5v
ZGUgaW1wb3J0Tm9kZShpbiBOb2RlIGltcG9ydGVkTm9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGluIGJvb2xlYW4gZGVlcCkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
KyAgICAgICAgCisgICAgICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIERPTVN0cmluZyBu
YW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmlu
ZyBxdWFsaWZpZWROYW1lKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAg
ICAgICAKKyAgICAgICAgQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhpbiBET01TdHJpbmcgbmFtZXNw
YWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFs
aWZpZWROYW1lKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICAK
KyAgICAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBET01TdHJpbmcgbmFt
ZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERP
TVN0cmluZyBsb2NhbE5hbWUpOworICAgICAgICAKKyAgICAgICAgRWxlbWVudCBnZXRFbGVtZW50
QnlJZChpbiBET01TdHJpbmcgZWxlbWVudElkKTsKKworICAgICAgICAvLyBET00gTGV2ZWwgMiBF
dmVudHMgKERvY3VtZW50RXZlbnRzIGludGVyZmFjZSkKKworICAgICAgICBFdmVudCBjcmVhdGVF
dmVudChpbiBET01TdHJpbmcgZXZlbnRUeXBlKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisKKyAgICAgICAgLy8gRE9NIExldmVsIDIgVHJhbnZlcnNhbCBhbmQgUmFuZ2UgKERv
Y3VtZW50UmFuZ2UgaW50ZXJmYWNlKQorCisgICAgICAgIFJhbmdlIGNyZWF0ZVJhbmdlKCk7CisK
KyAgICAgICAgLy8gRE9NIExldmVsIDIgVHJhbnZlcnNhbCBhbmQgUmFuZ2UgKERvY3VtZW50VHJh
dmVyc2FsIGludGVyZmFjZSkKKworICAgICAgICBOb2RlSXRlcmF0b3IgY3JlYXRlTm9kZUl0ZXJh
dG9yKGluIE5vZGUgcm9vdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIE5vZGVGaWx0ZXIgZmlsdGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gZW50aXR5UmVmZXJlbmNlRXhwYW5zaW9u
KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgVHJlZVdhbGtl
ciBjcmVhdGVUcmVlV2Fsa2VyKGluIE5vZGUgcm9vdCwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9kZUZpbHRlciBmaWx0ZXIsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBh
bnNpb24pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICAvLyBE
T00gTGV2ZWwgMiBBYnN0cmFjdCBWaWV3cyAoRG9jdW1lbnRWaWV3IGludGVyZmFjZSkKKworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdmlld3M6OkFic3RyYWN0VmlldyBkZWZhdWx0VmlldzsK
KworICAgICAgICAvLyBET00gTGV2ZWwgMiBTdHlsZSAoRG9jdW1lbnRTdHlsZSBpbnRlcmZhY2Up
CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hlZXRMaXN0IHN0eWxlU2hlZXRz
OworCisgICAgICAgIC8vIERPTSBMZXZlbCAyIFN0eWxlIChEb2N1bWVudENTUyBpbnRlcmZhY2Up
CisKKyAgICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiBnZXRPdmVycmlkZVN0eWxlKGluIEVsZW1l
bnQgZWx0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IERPTVN0cmluZyBwc2V1ZG9FbHQpOworCisgICAgICAgIC8vIERPTSBMZXZlbCAzIENvcmUKKwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9N
U3RyaW5nIGlucHV0RW5jb2Rpbmc7CisgICAgICAgIE5vZGUgYWRvcHROb2RlKGluIE5vZGUgc291
cmNlKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIC8vIENv
bW1vbiBleHRlbnNpb25zCisKKyAgICAgICAgYm9vbGVhbiBleGVjQ29tbWFuZChpbiBET01TdHJp
bmcgY29tbWFuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2Vy
SW50ZXJmYWNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgdmFs
dWUpOworCisgICAgICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kRW5hYmxlZChpbiBET01TdHJpbmcg
Y29tbWFuZCk7CisKKyAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRJbmRldGVybShpbiBET01T
dHJpbmcgY29tbWFuZCk7CisKKyAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRTdGF0ZShpbiBE
T01TdHJpbmcgY29tbWFuZCk7CisKKyAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRTdXBwb3J0
ZWQoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOworCisgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1Rv
PUZhbHNlXSBET01TdHJpbmcgcXVlcnlDb21tYW5kVmFsdWUoaW4gRE9NU3RyaW5nIGNvbW1hbmQp
OworCisgICAgICAgIC8vIElFIGV4dGVuc2lvbnMKKworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZl
cnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgY2hhcnNldDsKKworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJp
bmcgZGVmYXVsdENoYXJzZXQ7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIHJlYWR5U3RhdGU7CisKKyAgICAgICAg
RWxlbWVudCBlbGVtZW50RnJvbVBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKworICAgICAg
ICAvLyBNb3ppbGxhIGV4dGVuc2lvbnMKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0Nv
bnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIGNoYXJhY3RlclNldDsKKworICAgICAg
ICAvLyBXZWJLaXQgZXh0ZW5zaW9ucworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29u
dmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldDsK
KworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5n
IHNlbGVjdGVkU3R5bGVzaGVldFNldDsKKworICAgIH07CisKK30KSW5kZXg6IGRvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTM2OTkpCisr
KyBkb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNiArNjA5LDQxIEBACiAg
ICAgcmV0dXJuIDA7CiB9CiAKK1N0cmluZyBEb2N1bWVudDo6cmVhZHlTdGF0ZSgpCit7CisgICAg
aWYgKEZyYW1lICpmID0gZnJhbWUoKSkgeworICAgICAgICBpZiAoZi0+aXNDb21wbGV0ZSgpKSAK
KyAgICAgICAgICAgIHJldHVybiAiY29tcGxldGUiOworICAgICAgICBpZiAocGFyc2luZygpKSAK
KyAgICAgICAgICAgIHJldHVybiAibG9hZGluZyI7CisgICAgICByZXR1cm4gImxvYWRlZCI7Cisg
ICAgICAvLyBGSVhNRTogV2hhdCBkb2VzIHRoZSBpbnRlcmFjdGl2ZSB2YWx1ZSBtZWFuID8KKyAg
ICAgIC8vIEZJWE1FOiBNaXNzaW5nIHN1cHBvcnQgZm9yICJ1bmluaXRpYWxpemVkIgorICAgIH0K
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBEb2N1bWVudDo6aW5wdXRFbmNvZGlu
ZygpCit7CisgICAgaWYgKERlY29kZXIqIGQgPSBkZWNvZGVyKCkpCisgICAgICAgIHJldHVybiBk
LT5lbmNvZGluZ05hbWUoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBEb2N1
bWVudDo6ZGVmYXVsdENoYXJzZXQoKQoreworICAgIGlmIChGcmFtZSAqZiA9IGZyYW1lKCkpCisg
ICAgICAgIHJldHVybiBmLT5zZXR0aW5ncygpLT5lbmNvZGluZygpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKwordm9pZCBEb2N1bWVudDo6c2V0Q2hhcnNldChjb25zdCBTdHJpbmcmIGNoYXJz
ZXQpCit7CisgICAgaWYgKCFkZWNvZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBkZWNvZGVy
KCktPnNldEVuY29kaW5nTmFtZShjaGFyc2V0LmRlcHJlY2F0ZWRTdHJpbmcoKS5hc2NpaSgpLCBE
ZWNvZGVyOjpVc2VyQ2hvc2VuRW5jb2RpbmcpOworfQorCiBFbGVtZW50KiBEb2N1bWVudDo6ZWxl
bWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigp
KQpJbmRleDogZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0RvY3VtZW50LmgJKHJl
dmlzaW9uIDEzNjk5KQorKysgZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw4
ICsxNDAsMTcgQEAKICAgICBQYXNzUmVmUHRyPE5vZGU+IGltcG9ydE5vZGUoTm9kZSogaW1wb3J0
ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBj
b25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBFbGVtZW50
KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKwogICAgIEVsZW1l
bnQqIGVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKKyAgICBTdHJpbmcgcmVh
ZHlTdGF0ZSgpOworICAgIFN0cmluZyBpbnB1dEVuY29kaW5nKCk7CisgICAgU3RyaW5nIGRlZmF1
bHRDaGFyc2V0KCk7CiAKKyAgICBTdHJpbmcgY2hhcnNldCgpIHsgcmV0dXJuIGlucHV0RW5jb2Rp
bmcoKTsgfQorICAgIFN0cmluZyBjaGFyYWN0ZXJTZXQoKSB7IHJldHVybiBpbnB1dEVuY29kaW5n
KCk7IH0KKworICAgIHZvaWQgc2V0Q2hhcnNldChjb25zdCBTdHJpbmcmKTsKKwogICAgIFBhc3NS
ZWZQdHI8Tm9kZT4gYWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgCiAgICAgUGFzc1JlZlB0cjxOYW1lTm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlO
YW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpOwpJbmRleDogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTM2OTkpCisrKyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsOCBAQAogCQk2NTkzOTIzNzA5QUU0
MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07
CiAJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyog
S1VSTC5oICovOyB9OwogCQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM5MDlB
RTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1tICovOyB9OworCQk2NTlEREM4MjA5RTE5OEJBMDAx
QkYzQzYgLyogSlNEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAg
Ki87IH07CisJCTY1OUREQzgzMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJB
MDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICovOyB9OwogCQk2NUEyMTQ2ODA5N0EzMjkxMDBCOTA1
MEEgLyogUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLzsgfTsKIAkJNjVBMjE0ODQw
OTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVU
cmVlLmNwcCAqLzsgfTsKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMw
OTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyB9OwpAQCAtMTIyMiw2ICsxMjI0LDcg
QEAKIAkJNjU0NUY2NkUwOUI4MkZFRDAwMTMwMDZGIC8qIFRyYW5zZmVySm9iQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUcmFuc2ZlckpvYkNsaWVudC5oOyBwYXRo
ID0gcGxhdGZvcm0vVHJhbnNmZXJKb2JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjU0NUY2NkYwOUI4MkZFRDAwMTMwMDZGIC8qIFRyYW5zZmVySm9iSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRyYW5zZmVySm9iSW50ZXJuYWwuaDsg
cGF0aCA9IHBsYXRmb3JtL1RyYW5zZmVySm9iSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjU0NUY2NzUwOUI4MzAxODAwMTMwMDZGIC8qIFRyYW5zZmVySm9iTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRyYW5zZmVySm9iTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgw
MjAgLyogRG9jdW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NEVDNjBGMDk3Nzc4RjUwMERBQjUyQyAv
KiBXZWJDb3JlRnJhbWVCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvcmVGcmFtZUJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTRF
QzYxMDA5Nzc3OEY1MDBEQUI1MkMgLyogV2ViQ29yZUZyYW1lQnJpZGdlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVGcmFtZUJyaWRnZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENE
QVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RB
VEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDcsNiArMTMx
MCw4IEBACiAJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBLVVJMLmNwcDsgcGF0aCA9IHBsYXRmb3JtL0tV
UkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTkzOTIzNjA5QUU0MzQ2MDAy
QzUzMUYgLyogS1VSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gS1VSTC5o
OyBwYXRoID0gcGxhdGZvcm0vS1VSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNEb2N1bWVudC5jcHA7IHBhdGggPSBK
U0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU5RERDODEwOUUx
OThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEpTRG9jdW1lbnQuaDsgcGF0aCA9IEpTRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjVBMjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVUcmVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJl
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjI0LDYgKzI2MjksOCBAQAogCQkJCTkzMDcwNUU4
MDlFMEM5RjAwMEIxN0ZFNCAvKiBKU0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKIAkJCQk5MzA3
MDVFQTA5RTBDOUY2MDBCMTdGRTQgLyogSlNDU1NQcmltaXRpdmVWYWx1ZS5oICovLAogCQkJCTY1
REYzMUUxMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RvY3VtZW50VHlwZS5jcHAgKi8sCisJCQkJNjU5
RERDODAwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwICovLAorCQkJCTY1OUREQzgx
MDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggKi8sCiAJCQkJNjVERjMxRTIwOUQxQ0M2
MDAwMEJFMzI1IC8qIEpTRG9jdW1lbnRUeXBlLmggKi8sCiAJCQkJNjVERjMxRTMwOUQxQ0M2MDAw
MEJFMzI1IC8qIEpTRE9NSW1wbGVtZW50YXRpb24uY3BwICovLAogCQkJCTY1REYzMUU0MDlEMUND
NjAwMDBCRTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmggKi8sCkBAIC00MDQ2LDYgKzQwNTMs
NyBAQAogCQlGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyogZG9tICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAg
LyogRG9jdW1lbnQuaWRsICovLAogCQkJCUY1MjNEMzA3MDJERTQ0NzYwMTg2MzVDQSAvKiBBYnN0
cmFjdFZpZXcuY3BwICovLAogCQkJCUY1MjNEMzA4MDJERTQ0NzYwMTg2MzVDQSAvKiBBYnN0cmFj
dFZpZXcuaCAqLywKIAkJCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRvbWljU3RyaW5n
TGlzdC5oICovLApAQCAtNDc4OCw2ICs0Nzk2LDcgQEAKIAkJCQlBODY2MjlEMzA5REEyQjQ4MDA5
NjMzQTUgLyogSlNLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI2REMwQjA5
REFENUJFMDBBRkM4NDcgLyogQ2hhcnNldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDcw
NTZDMDlFMEFGOEYwMEIxN0ZFNCAvKiBjc3NoZWxwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1
OUREQzgzMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzA3MDVEQTA5RTBDOUJGMDBCMTdGRTQgLyogSlNDb3VudGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzA3MDVFQjA5RTBDOUY2MDBCMTdGRTQgLyogSlNDU1NQcmltaXRpdmVWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtNTQ4MCw2ICs1NDg5LDcgQEAKIAkJCQlBODY2MjlEMjA5
REEyQjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
NjYyOUQ0MDlEQTJCNDgwMDk2MzNBNSAvKiBKU0tleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTMyNkRDMEMwOURBRDVENjAwQUZDODQ3IC8qIENoYXJzZXREYXRhLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTY1OUREQzgyMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDcwNUQ4MDlFMEM5QjcwMEIxN0ZFNCAvKiBKU0NvdW50
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNzA1RTkwOUUwQzlGMDAwQjE3RkU0IC8qIEpT
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTM2OTkpCisrKyBDaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAwNi0wNC0wMyAgTWFjaWVqIFN0
YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gYXV0b2dlbmVyYXRlIGJpbmRpbmdzIGZvciBtYW55IG9mIHRo
ZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIG9mIERvY3VtZW50CisgICAgICAgIGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2MworCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGdlbmVyYXRlLWRlcml2ZWQtc291cmNl
czoKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcDoKKyAgICAgICAgKEtKUzo6
anNTdHJpbmdPckZhbHNlKToKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmg6Cisg
ICAgICAgICoga2h0bWwvZWNtYS9ranNfZG9tLmNwcDoKKyAgICAgICAgKEtKUzo6RE9NRG9jdW1l
bnQ6OmdldFZhbHVlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpET01Eb2N1bWVudDo6cHV0VmFs
dWVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OkRPTURvY3VtZW50UHJvdG9GdW5jOjpjYWxsQXNG
dW5jdGlvbik6CisgICAgICAgIChLSlM6OnRvSlMpOgorICAgICAgICAqIGtodG1sL2VjbWEva2pz
X2RvbS5oOgorICAgICAgICAoS0pTOjpET01Eb2N1bWVudDo6KToKKyAgICAgICAgKiBraHRtbC9l
Y21hL2tqc19odG1sLmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6SlNIVE1M
RG9jdW1lbnQ6OkpTSFRNTERvY3VtZW50KToKKyAgICAgICAgKEtKUzo6SlNIVE1MRG9jdW1lbnQ6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OkpTSFRNTERvY3VtZW50OjpwdXQp
OgorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2h0bWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9B
dG9taWNTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZzo6QXRvbWljU3Ry
aW5nKToKKwogMjAwNi0wNC0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgSnVzdGluIChlZGl0aW5nIHBhcnRzKSBhbmQgQWRlbGUgKHRoZSBy
ZXN0KS4KQEAgLTM3MCw3ICszOTksNyBAQAogCiAgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgogCi0yMDA2LTA0LTAzICBEYXZlIEh5YXR0CisyMDA2LTA0LTAzICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBiYXNpYyB0
aGVtZSBzdXBwb3J0IG9uIFdpbjMyLiAgU3RpbGwgbXVjaCB0byBkbywgYnV0CiAgICAgICAgIHRo
ZSBiYWNrZ3JvdW5kcyBvZiBidXR0b25zLCB0ZXh0ZmllbGRzLCBjaGVja2JveGVzIGFuZCByYWRp
bwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7522</attachid>
            <date>2006-04-05 03:41:28 -0700</date>
            <delta_ts>2006-04-05 03:44:56 -0700</delta_ts>
            <desc>a version that does the whole thing and actually works!</desc>
            <filename>document-autogen-3.patch.txt</filename>
            <type>text/plain</type>
            <size>51469</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzNjk5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMDQtMDQgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgcHJvdG90eXBlIGNoYWluIGZvciB0aGUgZm9sbG93aW5nIGZpeDoK
KworICAgICAgICAtIGF1dG9nZW5lcmF0ZSBiaW5kaW5ncyBmb3IgbWFueSBvZiB0aGUgbWV0aG9k
cyBhbmQgcHJvcGVydGllcyBvZiBEb2N1bWVudAorICAgICAgICBodHRwOi8vYnVnemlsbGEub3Bl
bmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjMKKworICAgICAgICAqIGZhc3QvZG9tL3By
b3RvdHlwZS1jaGFpbi1leHBlY3RlZC50eHQ6CisKIDIwMDYtMDQtMDQgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEp1c3RpbiBhbmQgQWRlbGUu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jaGFyc2V0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9k
b2N1bWVudC1jaGFyc2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM2OTkpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jaGFyc2V0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtOCw4ICs4LDYgQEAgSW5pdGlhbAogCiDCoGRvY3VtZW50LmlucHV0RW5j
b2Rpbmc6IEtPSTgtUgogCi3CoGRvY3VtZW50LmFjdHVhbEVuY29kaW5nOiBLT0k4LVIKLQogU2V0
dGluZyBjaGFyc2V0IHRvIFVURi04Li4uCiAKIMKgZG9jdW1lbnQuY2hhcnNldDogVVRGLTgKQEAg
LTIwLDggKzE4LDYgQEAgU2V0dGluZyBjaGFyc2V0IHRvIFVURi04Li4uCiAKIMKgZG9jdW1lbnQu
aW5wdXRFbmNvZGluZzogVVRGLTgKIAotwqBkb2N1bWVudC5hY3R1YWxFbmNvZGluZzogVVRGLTgK
LQogU2V0dGluZyBjaGFyYWN0ZXJTZXQgdG8gS09JOC1SIChleHBlY3RlZCB0byBmYWlsLCBtYXRj
aGluZyBGaXJlZm94KS4uLgogCiDCoGRvY3VtZW50LmNoYXJzZXQ6IFVURi04CkBAIC0zMiw2ICsy
OCw0IEBAIFNldHRpbmcgY2hhcmFjdGVyU2V0IHRvIEtPSTgtUiAoZXhwZWN0ZWQKIAogwqBkb2N1
bWVudC5pbnB1dEVuY29kaW5nOiBVVEYtOAogCi3CoGRvY3VtZW50LmFjdHVhbEVuY29kaW5nOiBV
VEYtOAotCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNo
YXJzZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9k
b2N1bWVudC1jaGFyc2V0Lmh0bWwJKHJldmlzaW9uIDEzNjk5KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2hhcnNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
Myw3ICsxMyw2IEBACiAJZG9jdW1lbnQud3JpdGUoIjxwPiZuYnNwO2RvY3VtZW50LmRlZmF1bHRD
aGFyc2V0OiAiICsgKGRvY3VtZW50LmRlZmF1bHRDaGFyc2V0ID8gImRlZmluZWQiIDogInVuZGVm
aW5lZCIpICsgIjwvcD4iKTsJLy8gTVNJRQogCWRvY3VtZW50LndyaXRlKCI8cD4mbmJzcDtkb2N1
bWVudC5jaGFyYWN0ZXJTZXQ6ICIgKyBkb2N1bWVudC5jaGFyYWN0ZXJTZXQgKyAiPC9wPiIpOwkv
LyBGaXJlZm94CiAJZG9jdW1lbnQud3JpdGUoIjxwPiZuYnNwO2RvY3VtZW50LmlucHV0RW5jb2Rp
bmc6ICIgKyBkb2N1bWVudC5pbnB1dEVuY29kaW5nICsgIjwvcD4iKTsJLy8gRE9NMwotCWRvY3Vt
ZW50LndyaXRlKCI8cD4mbmJzcDtkb2N1bWVudC5hY3R1YWxFbmNvZGluZzogIiArIGRvY3VtZW50
LmFjdHVhbEVuY29kaW5nICsgIjwvcD4iKTsJLy8gRmlyZWZveCwgb2xkIERPTTMgZHJhZnQKIAkK
IAlkb2N1bWVudC53cml0ZSgiPHA+U2V0dGluZyBjaGFyc2V0IHRvIFVURi04Li4uPC9wPiIpOwog
CXRyeSB7CkBAIC0yMiw3ICsyMSw2IEBACiAJCWRvY3VtZW50LndyaXRlKCI8cD4mbmJzcDtkb2N1
bWVudC5kZWZhdWx0Q2hhcnNldDogIiArIChkb2N1bWVudC5kZWZhdWx0Q2hhcnNldCA/ICJkZWZp
bmVkIiA6ICJ1bmRlZmluZWQiKSArICI8L3A+Iik7CiAJCWRvY3VtZW50LndyaXRlKCI8cD4mbmJz
cDtkb2N1bWVudC5jaGFyYWN0ZXJTZXQ6ICIgKyBkb2N1bWVudC5jaGFyYWN0ZXJTZXQgKyAiPC9w
PiIpOwogCQlkb2N1bWVudC53cml0ZSgiPHA+Jm5ic3A7ZG9jdW1lbnQuaW5wdXRFbmNvZGluZzog
IiArIGRvY3VtZW50LmlucHV0RW5jb2RpbmcgKyAiPC9wPiIpOwotCQlkb2N1bWVudC53cml0ZSgi
PHA+Jm5ic3A7ZG9jdW1lbnQuYWN0dWFsRW5jb2Rpbmc6ICIgKyBkb2N1bWVudC5hY3R1YWxFbmNv
ZGluZyArICI8L3A+Iik7CiAJfSBjYXRjaCAoZXgpIHsKIAkJZG9jdW1lbnQud3JpdGUoIjxwPkZh
aWx1cmU8L3A+Iik7CiAJfQpAQCAtMzUsNyArMzMsNiBAQAogCQlkb2N1bWVudC53cml0ZSgiPHA+
Jm5ic3A7ZG9jdW1lbnQuZGVmYXVsdENoYXJzZXQ6ICIgKyAoZG9jdW1lbnQuZGVmYXVsdENoYXJz
ZXQgPyAiZGVmaW5lZCIgOiAidW5kZWZpbmVkIikgKyAiPC9wPiIpOwogCQlkb2N1bWVudC53cml0
ZSgiPHA+Jm5ic3A7ZG9jdW1lbnQuY2hhcmFjdGVyU2V0OiAiICsgZG9jdW1lbnQuY2hhcmFjdGVy
U2V0ICsgIjwvcD4iKTsKIAkJZG9jdW1lbnQud3JpdGUoIjxwPiZuYnNwO2RvY3VtZW50LmlucHV0
RW5jb2Rpbmc6ICIgKyBkb2N1bWVudC5pbnB1dEVuY29kaW5nICsgIjwvcD4iKTsKLQkJZG9jdW1l
bnQud3JpdGUoIjxwPiZuYnNwO2RvY3VtZW50LmFjdHVhbEVuY29kaW5nOiAiICsgZG9jdW1lbnQu
YWN0dWFsRW5jb2RpbmcgKyAiPC9wPiIpOwogCX0gY2F0Y2ggKGV4KSB7CiAJCWRvY3VtZW50Lndy
aXRlKCI8cD5GYWlsdXJlIChleHBlY3RlZCk8L3A+Iik7CiAJfQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcHJvdG90eXBlLWNoYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtY2hhaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
MzY5OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1jaGFpbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDcgQEAgTk9URTogVGhpcyB0ZXN0IHdpbGwg
c3RhcnQgZmFpbGluZyBpZiB5bwogCiBbb2JqZWN0IERPTUV2ZW50VGFyZ2V0Tm9kZV0KIAotW29i
amVjdCBET01Eb2N1bWVudF0KK1tvYmplY3QgSlNEb2N1bWVudF0KIAogLS0tLS0gW29iamVjdCBE
SVZdICg1IHByb3RvdHlwZXMpIC0tLS0tCiAKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNf
Y3NzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX2Nzcy5jcHAJKHJl
dmlzaW9uIDEzNjk5KQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19jc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBET01TdHlsZVNoZWV0TGlzdDo6Z2V0T3du
UHJvcGVydHlTbAogICByZXR1cm4gRE9NT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotSlNWYWx1ZSAqZ2V0RE9NU3R5bGVTaGVldExpc3Qo
RXhlY1N0YXRlICpleGVjLCBTdHlsZVNoZWV0TGlzdCAqc3NsLCBEb2N1bWVudCAqZG9jKQorSlNW
YWx1ZSAqdG9KUyhFeGVjU3RhdGUgKmV4ZWMsIFN0eWxlU2hlZXRMaXN0ICpzc2wsIERvY3VtZW50
ICpkb2MpCiB7CiAgIC8vIENhbid0IHVzZSB0aGUgY2FjaGVET01PYmplY3QgbWFjcm8gYmVjYXVz
ZSBvZiB0aGUgZG9jIGFyZ3VtZW50CiAgIERPTU9iamVjdCAqcmV0OwpJbmRleDogV2ViQ29yZS9r
aHRtbC9lY21hL2tqc19jc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pz
X2Nzcy5oCShyZXZpc2lvbiAxMzY5OSkKKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfY3NzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgfTsK
IAogICAvLyBUaGUgZG9jdW1lbnQgaXMgb25seSB1c2VkIGZvciBnZXQtc3R5bGVzaGVldC1ieS1u
YW1lIChtYWtlIG9wdGlvbmFsIGlmIG5lY2Vzc2FyeSkKLSAgSlNWYWx1ZSAqZ2V0RE9NU3R5bGVT
aGVldExpc3QoRXhlY1N0YXRlICpleGVjLCBXZWJDb3JlOjpTdHlsZVNoZWV0TGlzdCAqc3MsIFdl
YkNvcmU6OkRvY3VtZW50ICpkb2MpOworICBKU1ZhbHVlICp0b0pTKEV4ZWNTdGF0ZSAqZXhlYywg
V2ViQ29yZTo6U3R5bGVTaGVldExpc3QgKnNzLCBXZWJDb3JlOjpEb2N1bWVudCAqZG9jKTsKIAog
ICBjbGFzcyBET01NZWRpYUxpc3QgOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgcHVibGljOgpJbmRl
eDogV2ViQ29yZS9raHRtbC9lY21hL0pTWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTM2OTkp
CisrKyBXZWJDb3JlL2todG1sL2VjbWEvSlNYTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNyw4ICsyMTcsOCBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0UHJvdG9GdW5j
OjpjYWxsCiAgICAgICBTdHJpbmcgYm9keTsKIAogICAgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDEp
IHsKLSAgICAgICAgaWYgKGFyZ3NbMF0tPnRvT2JqZWN0KGV4ZWMpLT5pbmhlcml0cygmRE9NRG9j
dW1lbnQ6OmluZm8pKSB7Ci0gICAgICAgICAgRG9jdW1lbnQgKmRvYyA9IHN0YXRpY19jYXN0PERv
Y3VtZW50ICo+KHN0YXRpY19jYXN0PERPTURvY3VtZW50ICo+KGFyZ3NbMF0tPnRvT2JqZWN0KGV4
ZWMpKS0+aW1wbCgpKTsKKyAgICAgICAgaWYgKGFyZ3NbMF0tPnRvT2JqZWN0KGV4ZWMpLT5pbmhl
cml0cygmSlNEb2N1bWVudDo6aW5mbykpIHsKKyAgICAgICAgICBEb2N1bWVudCAqZG9jID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQgKj4oc3RhdGljX2Nhc3Q8SlNEb2N1bWVudCAqPihhcmdzWzBdLT50
b09iamVjdChleGVjKSktPmltcGwoKSk7CiAgICAgICAgICAgYm9keSA9IGRvYy0+dG9TdHJpbmco
KS5kZXByZWNhdGVkU3RyaW5nKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgLy8gY29u
dmVydGluZyBjZXJ0YWluIHZhbHVlcyAobGlrZSBudWxsKSB0byBvYmplY3QgY2FuIHNldCBhbiBl
eGNlcHRpb24KSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX3RyYXZlcnNhbC5jcHAJKHJldmlzaW9u
IDEzNjk5KQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc190cmF2ZXJzYWwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTksMTYgKzE5OSwyNiBAQCBKU1ZhbHVlICpET01Ob2RlRmlsdGVyUHJvdG9G
dW5jOjpjYWxsQXNGCiAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1KU1ZhbHVlICp0b0pT
KEV4ZWNTdGF0ZSAqZXhlYywgTm9kZUZpbHRlciAqbmYpCitKU1ZhbHVlICp0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgTm9kZUZpbHRlciogbmYpCiB7CiAgICAgcmV0dXJuIGNhY2hlRE9NT2JqZWN0PE5v
ZGVGaWx0ZXIsIERPTU5vZGVGaWx0ZXI+KGV4ZWMsIG5mKTsKIH0KIAotTm9kZUZpbHRlciAqdG9O
b2RlRmlsdGVyKEpTVmFsdWUgKnZhbCkKK1Bhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmls
dGVyKEpTVmFsdWUqIHZhbCkKIHsKLSAgICBpZiAoIXZhbCB8fCAhdmFsLT5pc09iamVjdCgmRE9N
Tm9kZUZpbHRlcjo6aW5mbykpCisgICAgaWYgKCF2YWwpCiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01Ob2RlRmlsdGVyICo+KHZhbCktPmltcGwoKTsKKyAgICBp
ZiAoIXZhbC0+aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAodmFsLT5p
c09iamVjdCgmRE9NTm9kZUZpbHRlcjo6aW5mbykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01Ob2RlRmlsdGVyICo+KHZhbCktPmltcGwoKTsKKworICAgIEpTT2JqZWN0KiBvID0gc3Rh
dGljX2Nhc3Q8SlNPYmplY3QqPih2YWwpOworICAgIGlmIChvLT5pbXBsZW1lbnRzQ2FsbCgpKQor
ICAgICAgICByZXR1cm4gbmV3IE5vZGVGaWx0ZXIobmV3IEpTTm9kZUZpbHRlckNvbmRpdGlvbihv
KSk7CisKKyAgICByZXR1cm4gMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogV2Vi
Q29yZS9raHRtbC9lY21hL2tqc19odG1sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1s
L2VjbWEva2pzX2h0bWwuY3BwCShyZXZpc2lvbiAxMzY5OSkKKysrIFdlYkNvcmUva2h0bWwvZWNt
YS9ranNfaHRtbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiY3Nz
X3J1bGVpbXBsLmgiCkBAIC0xMzUsOCArMTM2LDkgQEAgSlNWYWx1ZSAqSFRNTERvY0Z1bmN0aW9u
OjpjYWxsQXNGdW5jdGlvbgogICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorLy8gRklYTUU6
IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW4gdGhlIHByb3RvdHlwZQogY29uc3QgQ2xhc3NJbmZvIEpT
SFRNTERvY3VtZW50OjppbmZvID0KLSAgeyAiSFRNTERvY3VtZW50IiwgJkRPTURvY3VtZW50Ojpp
bmZvLCAmSFRNTERvY3VtZW50VGFibGUsIDAgfTsKKyAgeyAiSFRNTERvY3VtZW50IiwgJkpTRG9j
dW1lbnQ6OmluZm8sICZIVE1MRG9jdW1lbnRUYWJsZSwgMCB9OwogLyogU291cmNlIGZvciBIVE1M
RG9jdW1lbnRUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCiBAYmVn
aW4gSFRNTERvY3VtZW50VGFibGUgMzAKICAgdGl0bGUgICAgICAgICAgICAgICAgIEpTSFRNTERv
Y3VtZW50OjpUaXRsZSAgICAgICAgICAgICBEb250RGVsZXRlCkBAIC0xODQsNyArMTg2LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTSFRNTERvY3VtZW50OjppbmZvID0KICovCiAKIEpTSFRNTERvY3Vt
ZW50OjpKU0hUTUxEb2N1bWVudChFeGVjU3RhdGUgKmV4ZWMsIEhUTUxEb2N1bWVudCAqZCkKLSAg
OiBET01Eb2N1bWVudChleGVjLCBkKQorICA6IEpTRG9jdW1lbnQoZXhlYywgZCkKIHsKIH0KIApA
QCAtMzE2LDEyICszMTgsMTIgQEAgYm9vbCBKU0hUTUxEb2N1bWVudDo6Z2V0T3duUHJvcGVydHlT
bG90KAogICAgIHJldHVybiB0cnVlOwogICB9CiAKLSAgcmV0dXJuIERPTURvY3VtZW50OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgcmV0dXJuIEpTRG9j
dW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiB2b2lkIEpTSFRNTERvY3VtZW50OjpwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlm
aWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0cikKIHsKLSAgICBsb29r
dXBQdXQ8SlNIVE1MRG9jdW1lbnQsIERPTURvY3VtZW50PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyLCAmSFRNTERvY3VtZW50VGFibGUsIHRoaXMpOworICAgIGxvb2t1cFB1dDxKU0hU
TUxEb2N1bWVudCwgSlNEb2N1bWVudD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwg
JkhUTUxEb2N1bWVudFRhYmxlLCB0aGlzKTsKIH0KIAogdm9pZCBKU0hUTUxEb2N1bWVudDo6cHV0
VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFsdWUs
IGludCAvKmF0dHIqLykKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc190cmF2ZXJzYWwuaAkocmV2aXNp
b24gMTM2OTkpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX3RyYXZlcnNhbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICBKU1ZhbHVlKiB0b0pT
KEV4ZWNTdGF0ZSosIFdlYkNvcmU6Ok5vZGVGaWx0ZXIqKTsKICAgSlNWYWx1ZSogdG9KUyhFeGVj
U3RhdGUqLCBXZWJDb3JlOjpUcmVlV2Fsa2VyKik7CiAKLSAgV2ViQ29yZTo6Tm9kZUZpbHRlciog
dG9Ob2RlRmlsdGVyKGNvbnN0IEpTVmFsdWUqKTsgLy8gcmV0dXJucyAwIGlmIHZhbHVlIGlzIG5v
dCBhIERPTU5vZGVGaWx0ZXIKKyAgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb2RlRmlsdGVyPiB0b05v
ZGVGaWx0ZXIoSlNWYWx1ZSopOyAvLyByZXR1cm5zIDAgaWYgdmFsdWUgaXMgbm90IGEgRE9NTm9k
ZUZpbHRlciBvciBKUyBmdW5jdGlvbiAKIAogICBjbGFzcyBKU05vZGVGaWx0ZXJDb25kaXRpb24g
OiBwdWJsaWMgV2ViQ29yZTo6Tm9kZUZpbHRlckNvbmRpdGlvbiB7CiAgIHB1YmxpYzoKSW5kZXg6
IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfaHRtbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2h0
bWwvZWNtYS9ranNfaHRtbC5oCShyZXZpc2lvbiAxMzY5OSkKKysrIFdlYkNvcmUva2h0bWwvZWNt
YS9ranNfaHRtbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBACiAjaWZuZGVmIEtK
U19IVE1MX0hfCiAjZGVmaW5lIEtKU19IVE1MX0hfCiAKKyNpbmNsdWRlICJKU0RvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCi0jaW5jbHVkZSAia2pzX2RvbS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOwpAQCAtNDEs
NyArNDEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICBjbGFzcyBKU0Fic3RyYWN0RXZlbnRMaXN0
ZW5lcjsKIAotICBjbGFzcyBKU0hUTUxEb2N1bWVudCA6IHB1YmxpYyBET01Eb2N1bWVudCB7Cisg
IGNsYXNzIEpTSFRNTERvY3VtZW50IDogcHVibGljIFdlYkNvcmU6OkpTRG9jdW1lbnQgewogICBw
dWJsaWM6CiAgICAgSlNIVE1MRG9jdW1lbnQoRXhlY1N0YXRlICpleGVjLCBXZWJDb3JlOjpIVE1M
RG9jdW1lbnQgKmQpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFdlYkNvcmUv
a2h0bWwvZWNtYS9ranNfYmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9l
Y21hL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMTM2OTkpCisrKyBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX2JpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDEzIEBAIEpT
VmFsdWUgKmpzU3RyaW5nT3JVbmRlZmluZWQoY29uc3QgU3RyaW4KICAgICByZXR1cm4ganNTdHJp
bmcocyk7CiB9CiAKK0pTVmFsdWUgKmpzU3RyaW5nT3JGYWxzZShjb25zdCBTdHJpbmcgJnMpCit7
CisgICAgaWYgKHMuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwor
ICAgIHJldHVybiBqc1N0cmluZyhzKTsKK30KKwogU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoTnVs
bENoZWNrKEV4ZWNTdGF0ZSAqZXhlYywgSlNWYWx1ZSAqdmFsKQogewogICAgIGlmICh2YWwtPmlz
TnVsbCgpKQpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19kb20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmNwcAkocmV2aXNpb24gMTM2OTkpCisrKyBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX2RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTQXR0ci5oIgogI2luY2x1ZGUg
IkpTQ2hhcmFjdGVyRGF0YS5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJK
U0RPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudFR5cGUuaCIKICNpbmNs
dWRlICJKU0VudGl0eS5oIgpAQCAtODAyLDI1MCArODAzLDYgQEAgQXR0ciogdG9BdHRyKEpTVmFs
dWUqIHZhbCwgYm9vbCYgb2spCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLyogU291cmNlIGZv
ciBET01Eb2N1bWVudFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVy
YXRlLgotQGJlZ2luIERPTURvY3VtZW50UHJvdG9UYWJsZSAyOQotICBhZG9wdE5vZGUgICAgICAg
RE9NRG9jdW1lbnQ6OkFkb3B0Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAxCi0gIGNyZWF0ZUVsZW1lbnQgICBET01Eb2N1bWVudDo6Q3JlYXRlRWxlbWVudCAg
ICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgY3JlYXRlRG9jdW1lbnRG
cmFnbWVudCBET01Eb2N1bWVudDo6Q3JlYXRlRG9jdW1lbnRGcmFnbWVudCAgIERvbnREZWxldGV8
RnVuY3Rpb24gMQotICBjcmVhdGVUZXh0Tm9kZSAgRE9NRG9jdW1lbnQ6OkNyZWF0ZVRleHROb2Rl
ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGNyZWF0ZUNvbW1lbnQg
ICBET01Eb2N1bWVudDo6Q3JlYXRlQ29tbWVudCAgICAgICAgICAgICAgICAgICBEb250RGVsZXRl
fEZ1bmN0aW9uIDEKLSAgY3JlYXRlQ0RBVEFTZWN0aW9uIERPTURvY3VtZW50OjpDcmVhdGVDREFU
QVNlY3Rpb24gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBjcmVhdGVQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24gRE9NRG9jdW1lbnQ6OkNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbiBE
b250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgY3JlYXRlQXR0cmlidXRlIERPTURvY3VtZW50OjpDcmVh
dGVBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBjcmVh
dGVFbnRpdHlSZWZlcmVuY2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUVudGl0eVJlZmVyZW5jZSAgICAg
RG9udERlbGV0ZXxGdW5jdGlvbiAxCi0gIGVsZW1lbnRGcm9tUG9pbnQgICAgIERPTURvY3VtZW50
OjpFbGVtZW50RnJvbVBvaW50ICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgZ2V0
RWxlbWVudHNCeVRhZ05hbWUgIERPTURvY3VtZW50OjpHZXRFbGVtZW50c0J5VGFnTmFtZSAgICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMQotICBpbXBvcnROb2RlICAgICAgICAgICBET01Eb2N1bWVu
dDo6SW1wb3J0Tm9kZSAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGNy
ZWF0ZUVsZW1lbnROUyAgICAgIERPTURvY3VtZW50OjpDcmVhdGVFbGVtZW50TlMgICAgICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgY3JlYXRlQXR0cmlidXRlTlMgICAgRE9NRG9jdW1l
bnQ6OkNyZWF0ZUF0dHJpYnV0ZU5TICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMgotICBn
ZXRFbGVtZW50c0J5VGFnTmFtZU5TICBET01Eb2N1bWVudDo6R2V0RWxlbWVudHNCeVRhZ05hbWVO
UyAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGdldEVsZW1lbnRCeUlkICAgICBET01Eb2N1bWVu
dDo6R2V0RWxlbWVudEJ5SWQgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAg
Y3JlYXRlUmFuZ2UgICAgICAgIERPTURvY3VtZW50OjpDcmVhdGVSYW5nZSAgICAgICAgICAgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMAotICBjcmVhdGVOb2RlSXRlcmF0b3IgRE9NRG9jdW1l
bnQ6OkNyZWF0ZU5vZGVJdGVyYXRvciAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0g
IGNyZWF0ZVRyZWVXYWxrZXIgICBET01Eb2N1bWVudDo6Q3JlYXRlVHJlZVdhbGtlciAgICAgICAg
ICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDQKLSAgY3JlYXRlRXZlbnQgICAgICAgIERPTURvY3Vt
ZW50OjpDcmVhdGVFdmVudCAgICAgICAgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQot
ICBnZXRPdmVycmlkZVN0eWxlICAgRE9NRG9jdW1lbnQ6OkdldE92ZXJyaWRlU3R5bGUgICAgICAg
ICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCi0gIGV4ZWNDb21tYW5kICAgICAgICBET01Eb2N1
bWVudDo6RXhlY0NvbW1hbmQgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMK
LSAgcXVlcnlDb21tYW5kRW5hYmxlZCBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kRW5hYmxlZCAg
ICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBxdWVyeUNvbW1hbmRJbmRldGVybSBET01E
b2N1bWVudDo6UXVlcnlDb21tYW5kSW5kZXRlcm0gICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAx
Ci0gIHF1ZXJ5Q29tbWFuZFN0YXRlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRTdGF0ZSAgICAg
ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgcXVlcnlDb21tYW5kU3VwcG9ydGVkIERP
TURvY3VtZW50OjpRdWVyeUNvbW1hbmRTdXBwb3J0ZWQgICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MQotICBxdWVyeUNvbW1hbmRWYWx1ZSBET01Eb2N1bWVudDo6UXVlcnlDb21tYW5kVmFsdWUgICAg
ICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi1AZW5kCi0qLwotS0pTX0RFRklORV9QUk9U
T1RZUEVfV0lUSF9QUk9UT1RZUEUoRE9NRG9jdW1lbnRQcm90bywgRE9NRXZlbnRUYXJnZXROb2Rl
UHJvdG8pCi1LSlNfSU1QTEVNRU5UX1BST1RPRlVOQyhET01Eb2N1bWVudFByb3RvRnVuYykKLUtK
U19JTVBMRU1FTlRfUFJPVE9UWVBFKCJET01Eb2N1bWVudCIsIERPTURvY3VtZW50UHJvdG8sIERP
TURvY3VtZW50UHJvdG9GdW5jKQotCi1jb25zdCBDbGFzc0luZm8gRE9NRG9jdW1lbnQ6OmluZm8g
PSB7ICJEb2N1bWVudCIsICZET01FdmVudFRhcmdldE5vZGU6OmluZm8sICZET01Eb2N1bWVudFRh
YmxlLCAwIH07Ci0KLS8qIFNvdXJjZSBmb3IgRE9NRG9jdW1lbnRUYWJsZS4gVXNlICJtYWtlIGhh
c2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCi1AYmVnaW4gRE9NRG9jdW1lbnRUYWJsZSAxNwotICBk
b2N0eXBlICAgICAgICAgRE9NRG9jdW1lbnQ6OkRvY1R5cGUgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQotICBpbXBsZW1lbnRhdGlvbiAgRE9NRG9jdW1lbnQ6Oklt
cGxlbWVudGF0aW9uICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBkb2N1
bWVudEVsZW1lbnQgRE9NRG9jdW1lbnQ6OkRvY3VtZW50RWxlbWVudCAgICAgICAgICAgICAgICAg
RG9udERlbGV0ZXxSZWFkT25seQotICBjaGFyc2V0ICAgICAgICAgRE9NRG9jdW1lbnQ6OkNoYXJz
ZXQgICAgICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQotICBkZWZhdWx0Q2hhcnNldCAg
RE9NRG9jdW1lbnQ6OkRlZmF1bHRDaGFyc2V0ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQotICBjaGFyYWN0ZXJTZXQgICAgRE9NRG9jdW1lbnQ6OkNoYXJhY3RlclNldCAgICAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBhY3R1YWxFbmNvZGluZyAgRE9N
RG9jdW1lbnQ6OkFjdHVhbEVuY29kaW5nICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQotICBpbnB1dEVuY29kaW5nICAgRE9NRG9jdW1lbnQ6OklucHV0RW5jb2RpbmcgICAgICAg
ICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBzdHlsZVNoZWV0cyAgICAgRE9NRG9j
dW1lbnQ6OlN0eWxlU2hlZXRzICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25s
eQotICBwcmVmZXJyZWRTdHlsZXNoZWV0U2V0ICBET01Eb2N1bWVudDo6UHJlZmVycmVkU3R5bGVz
aGVldFNldCAgRG9udERlbGV0ZXxSZWFkT25seQotICBzZWxlY3RlZFN0eWxlc2hlZXRTZXQgIERP
TURvY3VtZW50OjpTZWxlY3RlZFN0eWxlc2hlZXRTZXQgICAgRG9udERlbGV0ZQotICByZWFkeVN0
YXRlICAgICAgRE9NRG9jdW1lbnQ6OlJlYWR5U3RhdGUgICAgICAgICAgICAgICAgICAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQotICBkZWZhdWx0VmlldyAgICAgICAgRE9NRG9jdW1lbnQ6OkRlZmF1
bHRWaWV3ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotQGVuZAotKi8KLQot
RE9NRG9jdW1lbnQ6OkRPTURvY3VtZW50KEV4ZWNTdGF0ZSAqZXhlYywgRG9jdW1lbnQgKmQpCi0g
IDogRE9NRXZlbnRUYXJnZXROb2RlKGQpIAoteyAKLSAgc2V0UHJvdG90eXBlKERPTURvY3VtZW50
UHJvdG86OnNlbGYoZXhlYykpOwotfQotCi1ET01Eb2N1bWVudDo6RE9NRG9jdW1lbnQoRG9jdW1l
bnQgKmQpCi0gIDogRE9NRXZlbnRUYXJnZXROb2RlKGQpIAoteyAKLX0KLQotRE9NRG9jdW1lbnQ6
On5ET01Eb2N1bWVudCgpCi17Ci0gIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01PYmplY3Qo
c3RhdGljX2Nhc3Q8RG9jdW1lbnQgKj4obV9pbXBsLmdldCgpKSk7Ci19Ci0KLWJvb2wgRE9NRG9j
dW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90PERPTURvY3VtZW50LCBET01FdmVudFRhcmdldE5vZGU+KGV4ZWMsICZET01E
b2N1bWVudFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1ZhbHVlICpE
T01Eb2N1bWVudDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikg
Y29uc3QKLXsKLSAgRG9jdW1lbnQgJmRvYyA9ICpzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihpbXBs
KCkpOwotCi0gIHN3aXRjaCh0b2tlbikgewotICBjYXNlIERvY1R5cGU6Ci0gICAgcmV0dXJuIHRv
SlMoZXhlYyxkb2MuZG9jdHlwZSgpKTsKLSAgY2FzZSBJbXBsZW1lbnRhdGlvbjoKLSAgICByZXR1
cm4gdG9KUyhleGVjLCBkb2MuaW1wbGVtZW50YXRpb24oKSk7Ci0gIGNhc2UgRG9jdW1lbnRFbGVt
ZW50OgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmRvY3VtZW50RWxlbWVudCgpKTsKLSAgY2Fz
ZSBDaGFyc2V0OgotICBjYXNlIENoYXJhY3RlclNldDoKLSAgY2FzZSBBY3R1YWxFbmNvZGluZzoK
LSAgY2FzZSBJbnB1dEVuY29kaW5nOgotICAgIGlmIChEZWNvZGVyKiBkZWNvZGVyID0gZG9jLmRl
Y29kZXIoKSkKLSAgICAgIHJldHVybiBqc1N0cmluZyhkZWNvZGVyLT5lbmNvZGluZ05hbWUoKSk7
Ci0gICAgcmV0dXJuIGpzTnVsbCgpOwotICBjYXNlIERlZmF1bHRDaGFyc2V0OgotICAgIGlmIChG
cmFtZSAqZnJhbWUgPSBkb2MuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGZyYW1l
LT5zZXR0aW5ncygpLT5lbmNvZGluZygpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
Y2FzZSBTdHlsZVNoZWV0czoKLSAgICByZXR1cm4gZ2V0RE9NU3R5bGVTaGVldExpc3QoZXhlYywg
ZG9jLnN0eWxlU2hlZXRzKCksICZkb2MpOwotICBjYXNlIFByZWZlcnJlZFN0eWxlc2hlZXRTZXQ6
Ci0gICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGRvYy5wcmVmZXJyZWRTdHlsZXNoZWV0U2V0KCkp
OwotICBjYXNlIFNlbGVjdGVkU3R5bGVzaGVldFNldDoKLSAgICByZXR1cm4ganNTdHJpbmdPck51
bGwoZG9jLnNlbGVjdGVkU3R5bGVzaGVldFNldCgpKTsKLSAgY2FzZSBSZWFkeVN0YXRlOgotICAg
IGlmIChGcmFtZSAqZnJhbWUgPSBkb2MuZnJhbWUoKSkgewotICAgICAgaWYgKGZyYW1lLT5pc0Nv
bXBsZXRlKCkpIHJldHVybiBqc1N0cmluZygiY29tcGxldGUiKTsKLSAgICAgIGlmIChkb2MucGFy
c2luZygpKSByZXR1cm4ganNTdHJpbmcoImxvYWRpbmciKTsKLSAgICAgIHJldHVybiBqc1N0cmlu
ZygibG9hZGVkIik7Ci0gICAgICAvLyBXaGF0IGRvZXMgdGhlIGludGVyYWN0aXZlIHZhbHVlIG1l
YW4gPwotICAgICAgLy8gTWlzc2luZyBzdXBwb3J0IGZvciAidW5pbml0aWFsaXplZCIKLSAgICB9
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkRlZmF1bHRW
aWV3OiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuZGVmYXVsdFZpZXcoKSk7Ci0g
IGRlZmF1bHQ6Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotdm9pZCBET01Eb2N1bWVudDo6
cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlICp2YWx1ZSwgaW50IGF0dHIpCi17Ci0gICAgbG9va3VwUHV0PERPTURvY3VtZW50LCBET01F
dmVudFRhcmdldE5vZGU+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZET01Eb2N1
bWVudFRhYmxlLCB0aGlzKTsKLX0KLQotdm9pZCBET01Eb2N1bWVudDo6cHV0VmFsdWVQcm9wZXJ0
eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFsdWUsIGludCkKLXsKLSAg
RG9jdW1lbnQgJmRvYyA9ICpzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihpbXBsKCkpOwotICBzd2l0
Y2ggKHRva2VuKSB7Ci0gICAgY2FzZSBTZWxlY3RlZFN0eWxlc2hlZXRTZXQ6Ci0gICAgICBkb2Mu
c2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KHZhbHVlLT50b1N0cmluZyhleGVjKSk7Ci0gICAgICBi
cmVhazsKLSAgICBjYXNlIENoYXJzZXQ6Ci0gICAgICBkb2MuZGVjb2RlcigpLT5zZXRFbmNvZGlu
Z05hbWUodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmNzdHJpbmcoKS5jX3N0cigpLCBEZWNvZGVyOjpV
c2VyQ2hvc2VuRW5jb2RpbmcpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotSlNWYWx1ZSAqRE9N
RG9jdW1lbnRQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmpl
Y3QgKnRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3MpCi17Ci0gIGlmICghdGhpc09iai0+aW5oZXJp
dHMoJktKUzo6RE9NRG9jdW1lbnQ6OmluZm8pKQotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IFR5cGVFcnJvcik7Ci0gIERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMpOwot
ICBXZWJDb3JlOjpOb2RlJiBub2RlID0gKnN0YXRpY19jYXN0PERPTU5vZGUqPih0aGlzT2JqKS0+
aW1wbCgpOwotICBEb2N1bWVudCAmZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgJj4obm9kZSk7
Ci0gIFVTdHJpbmcgc3RyID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7Ci0gIFdlYkNvcmU6OlN0
cmluZyBzID0gc3RyOwotCi0gIHN3aXRjaChpZCkgewotICBjYXNlIERPTURvY3VtZW50OjpBZG9w
dE5vZGU6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuYWRvcHROb2RlKHRvTm9kZShhcmdzWzBd
KSxleGNlcHRpb24pKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlRWxlbWVudDoKLSAgICBy
ZXR1cm4gdG9KUyhleGVjLGRvYy5jcmVhdGVFbGVtZW50KHMsIGV4Y2VwdGlvbikpOwotICBjYXNl
IERPTURvY3VtZW50OjpDcmVhdGVEb2N1bWVudEZyYWdtZW50OgotICAgIHJldHVybiB0b0pTKGV4
ZWMsZG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNy
ZWF0ZVRleHROb2RlOgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmNyZWF0ZVRleHROb2RlKHMp
KTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlQ29tbWVudDoKLSAgICByZXR1cm4gdG9KUyhl
eGVjLGRvYy5jcmVhdGVDb21tZW50KHMpKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlQ0RB
VEFTZWN0aW9uOgotICAgIHJldHVybiB0b0pTKGV4ZWMsIGRvYy5jcmVhdGVDREFUQVNlY3Rpb24o
cywgZXhjZXB0aW9uKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbjoKLSAgICByZXR1cm4gdG9KUyhleGVjLCBkb2MuY3JlYXRlUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSwg
ZXhjZXB0aW9uKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUF0dHJpYnV0ZToKLSAgICBy
ZXR1cm4gdG9KUyhleGVjLGRvYy5jcmVhdGVBdHRyaWJ1dGUocywgZXhjZXB0aW9uKSk7Ci0gIGNh
c2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUVudGl0eVJlZmVyZW5jZToKLSAgICByZXR1cm4gdG9KUyhl
eGVjLCBkb2MuY3JlYXRlRW50aXR5UmVmZXJlbmNlKHMsIGV4Y2VwdGlvbikpOwotICBjYXNlIERP
TURvY3VtZW50OjpFbGVtZW50RnJvbVBvaW50OgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmVs
ZW1lbnRGcm9tUG9pbnQoKGludClhcmdzWzBdLT50b051bWJlcihleGVjKSwgKGludClhcmdzWzFd
LT50b051bWJlcihleGVjKSkpOwotICBjYXNlIERPTURvY3VtZW50OjpHZXRFbGVtZW50c0J5VGFn
TmFtZToKLSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZShzKS5n
ZXQoKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkltcG9ydE5vZGU6IC8vIERPTTIKLSAgICByZXR1
cm4gdG9KUyhleGVjLGRvYy5pbXBvcnROb2RlKHRvTm9kZShhcmdzWzBdKSwgYXJnc1sxXS0+dG9C
b29sZWFuKGV4ZWMpLCBleGNlcHRpb24pKTsKLSAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlRWxl
bWVudE5TOiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRlRWxlbWVudE5T
KHMsIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpLCBleGNlcHRpb24pKTsKLSAgY2FzZSBET01Eb2N1
bWVudDo6Q3JlYXRlQXR0cmlidXRlTlM6IC8vIERPTTIKLSAgICByZXR1cm4gdG9KUyhleGVjLGRv
Yy5jcmVhdGVBdHRyaWJ1dGVOUyhzLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9u
KSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkdldEVsZW1lbnRzQnlUYWdOYW1lTlM6IC8vIERPTTIK
LSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKHMsIGFyZ3Nb
MV0tPnRvU3RyaW5nKGV4ZWMpKS5nZXQoKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkdldEVsZW1l
bnRCeUlkOgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmdldEVsZW1lbnRCeUlkKGFyZ3NbMF0t
PnRvU3RyaW5nKGV4ZWMpKSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZVJhbmdlOgotICAg
IHJldHVybiB0b0pTKGV4ZWMsIGRvYy5jcmVhdGVSYW5nZSgpLmdldCgpKTsKLSAgY2FzZSBET01E
b2N1bWVudDo6Q3JlYXRlTm9kZUl0ZXJhdG9yOiB7Ci0gICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGZp
bHRlcjsKLSAgICBKU1ZhbHVlKiBhcmcyID0gYXJnc1syXTsKLSAgICBpZiAoYXJnMi0+aXNPYmpl
Y3QoKSkgewotICAgICAgSlNPYmplY3QqIG8oc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihhcmcyKSk7
Ci0gICAgICBmaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgSlNOb2RlRmlsdGVyQ29uZGl0aW9u
KG8pKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZG9jLmNyZWF0ZU5vZGVJdGVyYXRv
cih0b05vZGUoYXJnc1swXSksIGFyZ3NbMV0tPnRvVUludDMyKGV4ZWMpLAotICAgICAgICBmaWx0
ZXIucmVsZWFzZSgpLCBhcmdzWzNdLT50b0Jvb2xlYW4oZXhlYyksIGV4Y2VwdGlvbikuZ2V0KCkp
OwotICB9Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZVRyZWVXYWxrZXI6IHsKLSAgICBSZWZQ
dHI8Tm9kZUZpbHRlcj4gZmlsdGVyOwotICAgIEpTVmFsdWUqIGFyZzIgPSBhcmdzWzJdOwotICAg
IGlmIChhcmcyLT5pc09iamVjdCgpKSB7Ci0gICAgICBKU09iamVjdCogbyhzdGF0aWNfY2FzdDxK
U09iamVjdCAqPihhcmcyKSk7Ci0gICAgICBmaWx0ZXIgPSBuZXcgTm9kZUZpbHRlcihuZXcgSlNO
b2RlRmlsdGVyQ29uZGl0aW9uKG8pKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZG9j
LmNyZWF0ZVRyZWVXYWxrZXIodG9Ob2RlKGFyZ3NbMF0pLCBhcmdzWzFdLT50b1VJbnQzMihleGVj
KSwKLSAgICAgICAgZmlsdGVyLnJlbGVhc2UoKSwgYXJnc1szXS0+dG9Cb29sZWFuKGV4ZWMpLCBl
eGNlcHRpb24pLmdldCgpKTsKLSAgfQotICBjYXNlIERPTURvY3VtZW50OjpDcmVhdGVFdmVudDoK
LSAgICByZXR1cm4gdG9KUyhleGVjLCBkb2MuY3JlYXRlRXZlbnQocywgZXhjZXB0aW9uKS5nZXQo
KSk7Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OkdldE92ZXJyaWRlU3R5bGU6Ci0gICAgaWYgKEVsZW1l
bnQgKmVsZW1lbnQwID0gdG9FbGVtZW50KGFyZ3NbMF0pKQotICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLGRvYy5nZXRPdmVycmlkZVN0eWxlKGVsZW1lbnQwLCBhcmdzWzFdLT50b1N0cmluZyhleGVj
KSkpOwotICAgIC8vIEZJWE1FOiBJcyB1bmRlZmluZWQgcmlnaHQgaGVyZSwgb3Igc2hvdWxkIHdl
IHJhaXNlIGFuIGV4Y2VwdGlvbj8KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgY2FzZSBE
T01Eb2N1bWVudDo6RXhlY0NvbW1hbmQ6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5leGVj
Q29tbWFuZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSwgYXJnc1sxXS0+dG9Cb29sZWFuKGV4ZWMp
LCBhcmdzWzJdLT50b1N0cmluZyhleGVjKSkpOwotICB9Ci0gIGNhc2UgRE9NRG9jdW1lbnQ6OlF1
ZXJ5Q29tbWFuZEVuYWJsZWQ6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNvbW1h
bmRFbmFibGVkKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSk7Ci0gIH0KLSAgY2FzZSBET01Eb2N1
bWVudDo6UXVlcnlDb21tYW5kSW5kZXRlcm06IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5x
dWVyeUNvbW1hbmRJbmRldGVybShhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotICB9Ci0gIGNh
c2UgRE9NRG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZFN0YXRlOiB7Ci0gICAgcmV0dXJuIGpzQm9vbGVh
bihkb2MucXVlcnlDb21tYW5kU3RhdGUoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKTsKLSAgfQot
ICBjYXNlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRTdXBwb3J0ZWQ6IHsKLSAgICByZXR1cm4g
anNCb29sZWFuKGRvYy5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoYXJnc1swXS0+dG9TdHJpbmcoZXhl
YykpKTsKLSAgfQotICBjYXNlIERPTURvY3VtZW50OjpRdWVyeUNvbW1hbmRWYWx1ZTogewotICAg
IFdlYkNvcmU6OlN0cmluZyBjb21tYW5kVmFsdWUoZG9jLnF1ZXJ5Q29tbWFuZFZhbHVlKGFyZ3Nb
MF0tPnRvU3RyaW5nKGV4ZWMpKSk7Ci0gICAgLy8gTWV0aG9kIHJldHVybnMgbnVsbCBTdHJpbmcg
dG8gc2lnbmFsIGNvbW1hbmQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgLy8gTWljcm9zb2Z0IGRvY3Vt
ZW50YXRpb24gZm9yIHRoaXMgbWV0aG9kIHNheXM6Ci0gICAgLy8gIklmIG5vdCBzdXBwb3J0ZWQg
W2ZvciBhIGNvbW1hbmQgaWRlbnRpZmllcl0sIHRoaXMgbWV0aG9kIHJldHVybnMgYSBCb29sZWFu
IHNldCB0byBmYWxzZS4iCi0gICAgaWYgKGNvbW1hbmRWYWx1ZS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgZWxzZSAKLSAgICAgICAgcmV0dXJuIGpzU3Ry
aW5nKGNvbW1hbmRWYWx1ZSk7Ci0gIH0KLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotCi0g
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIC8qIFNv
dXJjZSBmb3IgRE9NRWxlbWVudFByb3RvVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byBy
ZWdlbmVyYXRlLgogQGJlZ2luIERPTUVsZW1lbnRQcm90b1RhYmxlIDgKICAgc2Nyb2xsSW50b1Zp
ZXcgICAgICAgICAgICAgICAgRE9NRWxlbWVudDo6U2Nyb2xsSW50b1ZpZXcgICAgICBEb250RGVs
ZXRlfEZ1bmN0aW9uIDEKQEAgLTEzNTIsMTYgKzExMDksMTYgQEAgSlNWYWx1ZSogdG9KUyhFeGVj
U3RhdGUgKmV4ZWMsIERvY3VtZW50IAogICBpZiAoIW4pCiAgICAgcmV0dXJuIGpzTnVsbCgpOwog
Ci0gIERPTURvY3VtZW50ICpyZXQgPSAwOworICBKU0RvY3VtZW50ICpyZXQgPSAwOwogICBTY3Jp
cHRJbnRlcnByZXRlciogaW50ZXJwID0gc3RhdGljX2Nhc3Q8U2NyaXB0SW50ZXJwcmV0ZXIgKj4o
ZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCkpOwogCi0gIGlmICgocmV0ID0gc3RhdGljX2Nhc3Q8
RE9NRG9jdW1lbnQgKj4oaW50ZXJwLT5nZXRET01PYmplY3QobikpKSkKKyAgaWYgKChyZXQgPSBz
dGF0aWNfY2FzdDxKU0RvY3VtZW50ICo+KGludGVycC0+Z2V0RE9NT2JqZWN0KG4pKSkpCiAgICAg
cmV0dXJuIHJldDsKIAogICBpZiAobi0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICByZXQgPSBuZXcg
SlNIVE1MRG9jdW1lbnQoZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50ICo+KG4pKTsKICAg
ZWxzZQotICAgIHJldCA9IG5ldyBET01Eb2N1bWVudChleGVjLCBuKTsKKyAgICByZXQgPSBuZXcg
SlNEb2N1bWVudChleGVjLCBuKTsKIAogICAvLyBNYWtlIHN1cmUgdGhlIGRvY3VtZW50IGlzIGtl
cHQgYXJvdW5kIGJ5IHRoZSB3aW5kb3cgb2JqZWN0LCBhbmQgd29ya3MgcmlnaHQgd2l0aCB0aGUK
ICAgLy8gYmFjay9mb3J3YXJkIGNhY2hlLgpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19i
aW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJ
KHJldmlzaW9uIDEzNjk5KQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICovCiAg
IEpTVmFsdWUgKmpzU3RyaW5nT3JVbmRlZmluZWQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAK
KyAgSlNWYWx1ZSAqanNTdHJpbmdPckZhbHNlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworCisK
ICAgLyoqCiAgICAqICBHZXQgYSBTdHJpbmcgb2JqZWN0IG9yIGEgbnVsbCBTdHJpbmcgaWYgdGhl
IHZhbHVlIGlzIG51bGwKICAgICovCkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEvSlNYU0xUUHJv
Y2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2todG1sL2VjbWEvSlNYU0xUUHJvY2Vz
c29yLmNwcAkocmV2aXNpb24gMTM2OTkpCisrKyBXZWJDb3JlL2todG1sL2VjbWEvSlNYU0xUUHJv
Y2Vzc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlhT
TFRQcm9jZXNzb3IuaCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNzb3IubHV0LmgiCiAjaW5jbHVk
ZSAia2pzX2RvbS5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIApAQCAtODgsOSArODksOSBAQCBK
U1ZhbHVlICpYU0xUUHJvY2Vzc29yUHJvdG9GdW5jOjpjYWxsQXNGCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEpTVmFsdWUgKm5vZGVWYWwgPSBhcmdzWzBdOwogICAgICAgICAgICAgSlNWYWx1ZSAq
ZG9jVmFsID0gYXJnc1sxXTsKLSAgICAgICAgICAgIGlmIChub2RlVmFsLT5pc09iamVjdCgmRE9N
Tm9kZTo6aW5mbykgJiYgZG9jVmFsLT5pc09iamVjdCgmRE9NRG9jdW1lbnQ6OmluZm8pKSB7Cisg
ICAgICAgICAgICBpZiAobm9kZVZhbC0+aXNPYmplY3QoJkRPTU5vZGU6OmluZm8pICYmIGRvY1Zh
bC0+aXNPYmplY3QoJkpTRG9jdW1lbnQ6OmluZm8pKSB7CiAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PERPTU5vZGUgKj4obm9kZVZhbCktPmltcGwoKTsK
LSAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihz
dGF0aWNfY2FzdDxET01Eb2N1bWVudCAqPihkb2NWYWwpLT5pbXBsKCkpOworICAgICAgICAgICAg
ICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHN0YXRpY19jYXN0PEpT
RG9jdW1lbnQgKj4oZG9jVmFsKS0+aW1wbCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBwcm9jZXNzb3IudHJhbnNmb3JtVG9GcmFnbWVudChub2RlLCBkb2MpLmdldCgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIFRocm93IGV4Y2VwdGlvbj8KSW5kZXg6IFdl
YkNvcmUva2h0bWwvZWNtYS9ranNfZG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9l
Y21hL2tqc19kb20uaAkocmV2aXNpb24gMTM2OTkpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pz
X2RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMzUgKzEzNiw2IEBAIHByb3RlY3RlZDoKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IG1faW1wbDsKICAgfTsKIAotICBjbGFzcyBET01E
b2N1bWVudCA6IHB1YmxpYyBET01FdmVudFRhcmdldE5vZGUgewotICBwdWJsaWM6Ci0gICAgRE9N
RG9jdW1lbnQoRXhlY1N0YXRlICpleGVjLCBXZWJDb3JlOjpEb2N1bWVudCAqZCk7Ci0gICAgfkRP
TURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTVmFsdWUgKmdl
dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4pIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0ciA9IE5vbmUpOwotICAgIHZvaWQgcHV0VmFs
dWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFsdWUsIGlu
dCBhdHRyKTsKLSAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gJmluZm87IH0KLSAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87Ci0gICAg
ZW51bSB7IERvY1R5cGUsIEltcGxlbWVudGF0aW9uLCBEb2N1bWVudEVsZW1lbnQsIAotICAgICAg
ICAgICBDaGFyc2V0LCBEZWZhdWx0Q2hhcnNldCwgQ2hhcmFjdGVyU2V0LCBBY3R1YWxFbmNvZGlu
ZywgSW5wdXRFbmNvZGluZywKLSAgICAgICAgICAgLy8gRnVuY3Rpb25zCi0gICAgICAgICAgIEFk
b3B0Tm9kZSwKLSAgICAgICAgICAgQ3JlYXRlRWxlbWVudCwgQ3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCwgQ3JlYXRlVGV4dE5vZGUsIENyZWF0ZUNvbW1lbnQsCi0gICAgICAgICAgIENyZWF0ZUNEQVRB
U2VjdGlvbiwgQ3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uLCBDcmVhdGVBdHRyaWJ1dGUsCi0g
ICAgICAgICAgIENyZWF0ZUVudGl0eVJlZmVyZW5jZSwgR2V0RWxlbWVudHNCeVRhZ05hbWUsIElt
cG9ydE5vZGUsIENyZWF0ZUVsZW1lbnROUywKLSAgICAgICAgICAgQ3JlYXRlQXR0cmlidXRlTlMs
IEdldEVsZW1lbnRzQnlUYWdOYW1lTlMsIEdldEVsZW1lbnRCeUlkLAotICAgICAgICAgICBDcmVh
dGVSYW5nZSwgQ3JlYXRlTm9kZUl0ZXJhdG9yLCBDcmVhdGVUcmVlV2Fsa2VyLCBEZWZhdWx0Vmll
dywKLSAgICAgICAgICAgQ3JlYXRlRXZlbnQsIEVsZW1lbnRGcm9tUG9pbnQsIFN0eWxlU2hlZXRz
LCBQcmVmZXJyZWRTdHlsZXNoZWV0U2V0LCAKLSAgICAgICAgICAgU2VsZWN0ZWRTdHlsZXNoZWV0
U2V0LCBHZXRPdmVycmlkZVN0eWxlLCBSZWFkeVN0YXRlLCAKLSAgICAgICAgICAgRXhlY0NvbW1h
bmQsIFF1ZXJ5Q29tbWFuZEVuYWJsZWQsIFF1ZXJ5Q29tbWFuZEluZGV0ZXJtLCBRdWVyeUNvbW1h
bmRTdGF0ZSwgCi0gICAgICAgICAgIFF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCwgUXVlcnlDb21tYW5k
VmFsdWUgfTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgLy8gQ29uc3RydWN0b3IgZm9yIGluaGVyaXRl
ZCBjbGFzc2VzOyBkb2Vzbid0IHNldCB1cCBhIHByb3RvdHlwZS4KLSAgICBET01Eb2N1bWVudChX
ZWJDb3JlOjpEb2N1bWVudCAqZCk7Ci0gIH07Ci0KICAgV2ViQ29yZTo6QXR0ciogdG9BdHRyKEpT
VmFsdWUqLCBib29sJiBvayk7CiAKICAgS0pTX0RFRklORV9QUk9UT1RZUEVfV0lUSF9QUk9UT1RZ
UEUoRE9NRWxlbWVudFByb3RvLCBET01FdmVudFRhcmdldE5vZGVQcm90bykKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vQXRvbWljU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9BdG9taWNTdHJpbmcuaAkocmV2aXNpb24gMTM2OTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0F0
b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBBdG9taWNTdHJpbmcoY29uc3QgS0pTOjpJZGVudGlmaWVyJiBzKSA6IG1fc3RyaW5nKGFkZChz
KSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhhZGQo
aW1wKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkgOiBtX3N0
cmluZyhpbXApIHsgfQotICAgIGV4cGxpY2l0IEF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcmIHMp
IDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CisgICAgQXRvbWljU3RyaW5nKGNvbnN0IFN0
cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KICAgICAKICAgICBvcGVyYXRv
ciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAgICBjb25zdCBT
dHJpbmcmIGRvbVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9OwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMzY5
OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtp
bmcgY29weSkKQEAgLTE0NiwyNyArMTQ2LDM3IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAg
ICAgICR0eXBlIGVxICJOb2RlTGlzdCIgb3IgCiAgICAgICAkdHlwZSBlcSAiVGV4dCIgb3IgCiAg
ICAgICAkdHlwZSBlcSAiQ2hhcmFjdGVyRGF0YSIgb3IKKyAgICAgICR0eXBlIGVxICJDREFUQVNl
Y3Rpb24iIG9yCiAgICAgICAkdHlwZSBlcSAiQ2FudmFzUGF0dGVybiIgb3IKICAgICAgICR0eXBl
IGVxICJSYW5nZSIgb3IKICAgICAgICR0eXBlIGVxICJEb2N1bWVudEZyYWdtZW50IiBvcgogICAg
ICAgJHR5cGUgZXEgIk5vZGUiIG9yCiAgICAgICAkdHlwZSBlcSAiQXR0ciIgb3IKKyAgICAgICR0
eXBlIGVxICJBYnN0cmFjdFZpZXciIG9yCisgICAgICAkdHlwZSBlcSAiQ29tbWVudCIgb3IKICAg
ICAgICR0eXBlIGVxICJFbGVtZW50IikgewogICAgICRpbXBsSW5jbHVkZXN7IiR7dHlwZX0uaCJ9
ID0gMTsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIkNTU1N0eWxlU2hlZXQiIG9yICR0eXBlIGVxICJT
dHlsZVNoZWV0IikgewogICAgICRpbXBsSW5jbHVkZXN7ImNzc19zdHlsZXNoZWV0aW1wbC5oIn0g
PSAxOwogICB9IGVsc2lmICgkdHlwZSBlcSAiQ1NTUHJpbWl0aXZlVmFsdWUiIG9yICR0eXBlIGVx
ICJDb3VudGVyIiBvciAkdHlwZSBlcSAiUmVjdCIgb3IgJHR5cGUgZXEgIlJHQkNvbG9yIikgewog
ICAgICRpbXBsSW5jbHVkZXN7ImNzc192YWx1ZWltcGwuaCJ9ID0gMTsKKyAgfSBlbHNpZiAoJHR5
cGUgZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iKSB7CisgICAgJGltcGxJbmNsdWRlc3siY3NzX3Zh
bHVlaW1wbC5oIn0gPSAxOwogICB9IGVsc2lmICgkdHlwZSBlcSAiSFRNTERvY3VtZW50Iikgewog
ICAgICRpbXBsSW5jbHVkZXN7IkhUTUxEb2N1bWVudC5oIn0gPSAxOwogICB9IGVsc2lmICgkdHlw
ZSBlcSAiTXV0YXRpb25FdmVudCIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIktleWJvYXJkRXZl
bnQiIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJNb3VzZUV2ZW50IiBvcgorICAgICAgICAgICAk
dHlwZSBlcSAiRXZlbnQiIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJVSUV2ZW50IiBvcgogICAg
ICAgICAgICAkdHlwZSBlcSAiV2hlZWxFdmVudCIpIHsKICAgICAkaW1wbEluY2x1ZGVzeyJkb20y
X2V2ZW50c2ltcGwuaCJ9ID0gMTsKKyAgfSBlbHNpZiAoJHR5cGUgZXEgIk5vZGVJdGVyYXRvciIg
b3IKKwkgICAkdHlwZSBlcSAiVHJlZVdhbGtlciIpIHsKKyAgICAkaW1wbEluY2x1ZGVzeyJkb20y
X3RyYXZlcnNhbGltcGwuaCJ9ID0gMTsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIlByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIkVudGl0eSIgb3IKKwkgICAkdHlw
ZSBlcSAiRW50aXR5UmVmZXJlbmNlIiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiTm90YXRpb24i
KSB7CiAgICAgJGltcGxJbmNsdWRlc3siZG9tX3htbGltcGwuaCJ9ID0gMTsKICAgfSBlbHNpZiAo
JHR5cGUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpIHsKQEAgLTI1Miw3ICsyNjIsNyBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NO
YW1lKEtKUzo6RXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqKTtcbiIpOwogICAgIAogICAjIERl
c3RydWN0b3IKLSAgaWYgKCEkaGFzUGFyZW50KSB7CisgIGlmICghJGhhc1BhcmVudCBvciAkaW50
ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiKSB7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB2aXJ0dWFsIH4kY2xhc3NOYW1lKCk7XG4iKTsKICAgfQogICAKQEAgLTUzNiw2ICs1NDYsMTEg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7
Y2xhc3NOYW1lfTo6fiRjbGFzc05hbWUoKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4gICAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2ltcGwuZ2V0KCkpO1xu
fVxuXG4iKTsgICAgCiAgIH0KKworICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRvY3VtZW50Iikg
eworICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9Ojp+JGNsYXNzTmFtZSgpXG4i
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiAgICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9y
Z2V0RE9NT2JqZWN0KHN0YXRpY19jYXN0PCR7aW1wbENsYXNzTmFtZX0qPihtX2ltcGwuZ2V0KCkp
KTtcbn1cblxuIik7ICAgIAorICB9CiAgIAogICAjIEF0dHJpYnV0ZXMKICAgaWYgKCRudW1BdHRy
aWJ1dGVzIG5lIDApIHsKQEAgLTcxOSw2ICs3MzQsOCBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAg
ICAgICAgICAkdHlwZSBlcSAiRG9jdW1lbnRUeXBlIiBvcgogICAgICAgICAgICAkdHlwZSBlcSAi
UmFuZ2UiKSB7CiAgICAgcmV0dXJuICIke3R5cGV9KiI7CisgIH0gZWxzaWYgKCR0eXBlIGVxICJO
b2RlRmlsdGVyIikgeworICAgICAgcmV0dXJuICJQYXNzUmVmUHRyPCR7dHlwZX0+IjsKICAgfSBl
bHNpZiAoJHR5cGUgZXEgIkNvbXBhcmVIb3ciKSB7CiAgICAgcmV0dXJuICJSYW5nZTo6Q29tcGFy
ZUhvdyI7CiAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKQEAgLTc2Myw2ICs3
ODAsOCBAQCBzdWIgVHlwZUNhbkZhaWxDb252ZXJzaW9uCiAgICAgICByZXR1cm4gMDsKICAgfSAg
ZWxzaWYgKCR0eXBlIGVxICJSYW5nZSIpIHsKICAgICAgIHJldHVybiAwOworICB9ICBlbHNpZiAo
JHR5cGUgZXEgIk5vZGVGaWx0ZXIiKSB7CisgICAgICByZXR1cm4gMDsKICAgfSBlbHNlIHsKICAg
ICBkaWUgIkRvbid0IGtub3cgd2hldGhlciBhIEpTIHZhbHVlIGNhbiBmYWlsIGNvbnZlcnNpb24g
dG8gdHlwZSAkdHlwZS4iCiAgIH0KQEAgLTgxNiw2ICs4MzUsOSBAQCBzdWIgSlNWYWx1ZVRvTmF0
aXZlCiAgIH0gZWxzaWYgKCR0eXBlIGVxICJFbGVtZW50IikgewogICAgICRpbXBsSW5jbHVkZXN7
Imtqc19kb20uaCJ9ID0gMTsKICAgICByZXR1cm4gInRvRWxlbWVudCgkdmFsdWUpIjsKKyAgfSBl
bHNpZiAoJHR5cGUgZXEgIk5vZGVGaWx0ZXIiKSB7CisgICAgJGltcGxJbmNsdWRlc3sia2pzX3Ry
YXZlcnNhbC5oIn0gPSAxOworICAgIHJldHVybiAidG9Ob2RlRmlsdGVyKCR2YWx1ZSkiOwogICB9
IGVsc2UgewogICAgIGRpZSAiRG9uJ3Qga25vdyBob3cgdG8gY29udmVydCBhIEpTIHZhbHVlIG9m
IHR5cGUgJHR5cGUuIgogICB9CkBAIC04NDEsMjggKzg2Myw0NyBAQCBzdWIgTmF0aXZlVG9KU1Zh
bHVlCiAgICAgaWYgKGRlZmluZWQgJGNvbnYpIHsKICAgICAgIGlmICgkY29udiBlcSAiTnVsbCIp
IHsKICAgICAgICAgcmV0dXJuICJqc1N0cmluZ09yTnVsbCgkdmFsdWUpIjsKKyAgICAgIH0gZWxz
aWYgKCRjb252IGVxICJVbmRlZmluZWQiKSB7CisgICAgICAgIHJldHVybiAianNTdHJpbmdPclVu
ZGVmaW5lZCgkdmFsdWUpIjsKKyAgICAgIH0gZWxzaWYgKCRjb252IGVxICJGYWxzZSIpIHsKKyAg
ICAgICAgcmV0dXJuICJqc1N0cmluZ09yRmFsc2UoJHZhbHVlKSI7CiAgICAgICB9IGVsc2Ugewog
ICAgICAgICBkaWUgIlVua25vd24gdmFsdWUgZm9yIENvbnZlcnROdWxsU3RyaW5nVG8gZXh0ZW5k
ZWQgYXR0cmlidXRlIjsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgcmV0dXJuICJqc1N0
cmluZygkdmFsdWUpIjsKICAgICB9CisgIH0gZWxzaWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRh
dGlvbiIpIHsKKyAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CisgICAgJGltcGxJ
bmNsdWRlc3siSlNET01JbXBsZW1lbnRhdGlvbi5oIn0gPSAxOworICAgIHJldHVybiAidG9KUyhl
eGVjLCAkdmFsdWUpIjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIk5vZGUiIG9yCiAgICAgICAgICAg
ICR0eXBlIGVxICJUZXh0IiBvcgorICAgICAgICAgICAkdHlwZSBlcSAiQ29tbWVudCIgb3IKKyAg
ICAgICAgICAgJHR5cGUgZXEgIkNEQVRBU2VjdGlvbiIgb3IKICAgICAgICAgICAgJHR5cGUgZXEg
IkRvY3VtZW50VHlwZSIgb3IKICAgICAgICAgICAgJHR5cGUgZXEgIkRvY3VtZW50IiBvcgorICAg
ICAgICAgICAkdHlwZSBlcSAiRW50aXR5UmVmZXJlbmNlIiBvcgorICAgICAgICAgICAkdHlwZSBl
cSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uIiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiSFRNTERv
Y3VtZW50IiBvcgogICAgICAgICAgICAkdHlwZSBlcSAiRWxlbWVudCIgb3IKICAgICAgICAgICAg
JHR5cGUgZXEgIkF0dHIiIG9yCiAgICAgICAgICAgICR0eXBlIGVxICJEb2N1bWVudEZyYWdtZW50
IikgewogICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1
ZGVzeyJDb21tZW50LmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siQ0RBVEFTZWN0aW9uLmgi
fSA9IDE7CiAgICAgJGltcGxJbmNsdWRlc3siTm9kZS5oIn0gPSAxOwogICAgICRpbXBsSW5jbHVk
ZXN7IkVsZW1lbnQuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJEb2N1bWVudFR5cGUuaCJ9
ID0gMTsKICAgICByZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlKSI7CiAgIH0gZWxzaWYgKCR0eXBl
IGVxICJFdmVudFRhcmdldCIpIHsKICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7
CiAgICAgJGltcGxJbmNsdWRlc3siRXZlbnRUYXJnZXROb2RlLmgifSA9IDE7CiAgICAgcmV0dXJu
ICJ0b0pTKGV4ZWMsICR2YWx1ZSkiOworICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnQiKSB7Cisg
ICAgJGltcGxJbmNsdWRlc3sia2pzX2V2ZW50cy5oIn0gPSAxOworICAgICRpbXBsSW5jbHVkZXN7
ImRvbTJfZXZlbnRzaW1wbC5oIn0gPSAxOworICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUp
IjsKICAgfSBlbHNpZiAoJHR5cGUgZXEgIk5vZGVMaXN0IiBvciAkdHlwZSBlcSAiTmFtZWROb2Rl
TWFwIikgewogICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICByZXR1cm4g
InRvSlMoZXhlYywgJHZhbHVlKSI7CkBAIC04NzEsNiArOTEyLDEwIEBAIHN1YiBOYXRpdmVUb0pT
VmFsdWUKICAgICAkaW1wbEluY2x1ZGVzeyJjc3NfcnVsZWltcGwuaCJ9ID0gMTsKICAgICAkaW1w
bEluY2x1ZGVzeyJranNfY3NzLmgifSA9IDE7CiAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1
ZSkiOyAgICAKKyAgfSBlbHNpZiAoJHR5cGUgZXEgIlN0eWxlU2hlZXRMaXN0IikgeworICAgICRp
bXBsSW5jbHVkZXN7ImNzc19zdHlsZXNoZWV0aW1wbC5oIn0gPSAxOworICAgICRpbXBsSW5jbHVk
ZXN7Imtqc19jc3MuaCJ9ID0gMTsKKyAgICByZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlLCBpbXBs
KSI7ICAgIAogICB9IGVsc2lmICgkdHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5
cGUgZXEgIlJlY3QiKSB7CiAgICAgJGltcGxJbmNsdWRlc3siY3NzX3ZhbHVlaW1wbC5oIn0gPSAx
OwogICAgICRpbXBsSW5jbHVkZXN7Imtqc19jc3MuaCJ9ID0gMTsKQEAgLTg4OCw2ICs5MzMsMTAg
QEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICB9IGVsc2lmICgkdHlwZSBlcSAidmlld3M6OkFic3Ry
YWN0VmlldyIpIHsKICAgICAkaW1wbEluY2x1ZGVzeyJranNfdmlld3MuaCJ9ID0gMTsKICAgICBy
ZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlKSI7CisgIH0gZWxzaWYgKCR0eXBlIGVxICJOb2RlSXRl
cmF0b3IiIG9yCisJICAgJHR5cGUgZXEgIlRyZWVXYWxrZXIiKSB7CisgICAgJGltcGxJbmNsdWRl
c3sia2pzX3RyYXZlcnNhbC5oIn0gPSAxOworICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUp
IjsKICAgfSBlbHNlIHsKICAgICBkaWUgIkRvbid0IGtub3cgaG93IHRvIGNvbnZlcnQgYSB2YWx1
ZSBvZiB0eXBlICR0eXBlIHRvIGEgSlMgVmFsdWUiOwogICB9CkluZGV4OiBXZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAxMzY5OSkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBhbGwgOiBcCiAgICAgSlNDU1NQcmltaXRpdmVWYWx1
ZS5oIFwKICAgICBKU0RPTUltcGxlbWVudGF0aW9uLmggXAogICAgIEpTRE9NUGFyc2VyLmx1dC5o
IFwKKyAgICBKU0RvY3VtZW50LmggXAogICAgIEpTRG9jdW1lbnRUeXBlLmggXAogICAgIEpTRWxl
bWVudC5oIFwKICAgICBKU0VudGl0eS5oIFwKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGNvcmUg
eworCisgICAgaW50ZXJmYWNlIFtMZWdhY3lQYXJlbnQ9S0pTOjpET01FdmVudFRhcmdldE5vZGVd
IERvY3VtZW50IDogRXZlbnRUYXJnZXROb2RlIHsKKworICAgICAgICAvLyBET00gTGV2ZWwgMSBD
b3JlCisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnRUeXBlIGRv
Y3R5cGU7CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NSW1wbGVtZW50
YXRpb24gaW1wbGVtZW50YXRpb247CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRWxlbWVudCBkb2N1bWVudEVsZW1lbnQ7CisgICAgICAgIAorICAgICAgICBFbGVtZW50IGNy
ZWF0ZUVsZW1lbnQoaW4gRE9NU3RyaW5nIHRhZ05hbWUpCisgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIAorICAgICAgICBEb2N1bWVudEZyYWdtZW50IGNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgCisgICAgICAgIFRleHQgY3JlYXRlVGV4dE5vZGUo
aW4gRE9NU3RyaW5nIGRhdGEpOworICAgICAgICAKKyAgICAgICAgQ29tbWVudCBjcmVhdGVDb21t
ZW50KGluIERPTVN0cmluZyBkYXRhKTsKKyAgICAgICAgCisgICAgICAgIENEQVRBU2VjdGlvbiBj
cmVhdGVDREFUQVNlY3Rpb24oaW4gRE9NU3RyaW5nIGRhdGEpCisgICAgICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBj
cmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oaW4gRE9NU3RyaW5nIHRhcmdldCwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9N
U3RyaW5nIGRhdGEpCisgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IAorICAgICAgICBBdHRyIGNyZWF0ZUF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSkKKyAgICAg
ICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisgICAgICAgIEVudGl0eVJl
ZmVyZW5jZSBjcmVhdGVFbnRpdHlSZWZlcmVuY2UoaW4gRE9NU3RyaW5nIG5hbWUpCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisgICAgICAgIE5vZGVMaXN0IGdl
dEVsZW1lbnRzQnlUYWdOYW1lKGluIERPTVN0cmluZyB0YWduYW1lKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIERPTSBMZXZlbCAyIENvcmUKKyAgICAgICAgCisgICAgICAgIE5vZGUgaW1wb3J0Tm9k
ZShpbiBOb2RlIGltcG9ydGVkTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xl
YW4gZGVlcCkKKyAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisg
ICAgICAgIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZpZWRO
YW1lKQorICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICAKKyAgICAg
ICAgQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQor
ICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICAKKyAgICAgICAgTm9k
ZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2Nh
bE5hbWUpOworICAgICAgICAKKyAgICAgICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZChpbiBET01T
dHJpbmcgZWxlbWVudElkKTsKKworICAgICAgICAvLyBET00gTGV2ZWwgMiBFdmVudHMgKERvY3Vt
ZW50RXZlbnRzIGludGVyZmFjZSkKKworICAgICAgICBFdmVudCBjcmVhdGVFdmVudChpbiBET01T
dHJpbmcgZXZlbnRUeXBlKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAg
ICAgICAgLy8gRE9NIExldmVsIDIgVHJhbnZlcnNhbCBhbmQgUmFuZ2UgKERvY3VtZW50UmFuZ2Ug
aW50ZXJmYWNlKQorCisgICAgICAgIFJhbmdlIGNyZWF0ZVJhbmdlKCk7CisKKyAgICAgICAgLy8g
RE9NIExldmVsIDIgVHJhbnZlcnNhbCBhbmQgUmFuZ2UgKERvY3VtZW50VHJhdmVyc2FsIGludGVy
ZmFjZSkKKworICAgICAgICBOb2RlSXRlcmF0b3IgY3JlYXRlTm9kZUl0ZXJhdG9yKGluIE5vZGUg
cm9vdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5zaWdu
ZWQgbG9uZyB3aGF0VG9TaG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIE5vZGVGaWx0ZXIgZmlsdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIGJvb2xlYW4gZW50aXR5UmVmZXJlbmNlRXhwYW5zaW9uKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgVHJlZVdhbGtlciBjcmVhdGVUcmVl
V2Fsa2VyKGluIE5vZGUgcm9vdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gTm9kZUZpbHRlciBmaWx0ZXIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBlbnRpdHlSZWZlcmVuY2VFeHBhbnNpb24pCisgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICAvLyBET00gTGV2ZWwgMiBB
YnN0cmFjdCBWaWV3cyAoRG9jdW1lbnRWaWV3IGludGVyZmFjZSkKKworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdmlld3M6OkFic3RyYWN0VmlldyBkZWZhdWx0VmlldzsKKworICAgICAgICAv
LyBET00gTGV2ZWwgMiBTdHlsZSAoRG9jdW1lbnRTdHlsZSBpbnRlcmZhY2UpCisKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hlZXRMaXN0IHN0eWxlU2hlZXRzOworCisgICAgICAg
IC8vIERPTSBMZXZlbCAyIFN0eWxlIChEb2N1bWVudENTUyBpbnRlcmZhY2UpCisKKyAgICAgICAg
Q1NTU3R5bGVEZWNsYXJhdGlvbiBnZXRPdmVycmlkZVN0eWxlKGluIEVsZW1lbnQgZWx0LCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBw
c2V1ZG9FbHQpOworCisgICAgICAgIC8vIERPTSBMZXZlbCAzIENvcmUKKworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIGlucHV0
RW5jb2Rpbmc7CisgICAgICAgIE5vZGUgYWRvcHROb2RlKGluIE5vZGUgc291cmNlKQorICAgICAg
ICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIC8vIENvbW1vbiBleHRlbnNp
b25zCisKKyAgICAgICAgYm9vbGVhbiBleGVjQ29tbWFuZChpbiBET01TdHJpbmcgY29tbWFuZCwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VySW50ZXJmYWNlLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgdmFsdWUpOworCisgICAg
ICAgIGJvb2xlYW4gcXVlcnlDb21tYW5kRW5hYmxlZChpbiBET01TdHJpbmcgY29tbWFuZCk7CisK
KyAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRJbmRldGVybShpbiBET01TdHJpbmcgY29tbWFu
ZCk7CisKKyAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRTdGF0ZShpbiBET01TdHJpbmcgY29t
bWFuZCk7CisKKyAgICAgICAgYm9vbGVhbiBxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoaW4gRE9NU3Ry
aW5nIGNvbW1hbmQpOworCisgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPUZhbHNlXSBET01T
dHJpbmcgcXVlcnlDb21tYW5kVmFsdWUoaW4gRE9NU3RyaW5nIGNvbW1hbmQpOworCisgICAgICAg
IC8vIElFIGV4dGVuc2lvbnMKKworICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5n
VG89VW5kZWZpbmVkXSBET01TdHJpbmcgY2hhcnNldDsKKworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgZGVmYXVsdENo
YXJzZXQ7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1Rv
PVVuZGVmaW5lZF0gRE9NU3RyaW5nIHJlYWR5U3RhdGU7CisKKyAgICAgICAgRWxlbWVudCBlbGVt
ZW50RnJvbVBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKKworICAgICAgICAvLyBNb3ppbGxh
IGV4dGVuc2lvbnMKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3Ry
aW5nVG89TnVsbF0gRE9NU3RyaW5nIGNoYXJhY3RlclNldDsKKworICAgICAgICAvLyBXZWJLaXQg
ZXh0ZW5zaW9ucworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJp
bmdUbz1OdWxsXSBET01TdHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldDsKKworICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIHNlbGVjdGVkU3R5
bGVzaGVldFNldDsKKworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEzNjk5
KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNiAr
NjA5LDQxIEBAIEVsZW1lbnQgKkRvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCAKICAgICBy
ZXR1cm4gMDsKIH0KIAorU3RyaW5nIERvY3VtZW50OjpyZWFkeVN0YXRlKCkKK3sKKyAgICBpZiAo
RnJhbWUgKmYgPSBmcmFtZSgpKSB7CisgICAgICAgIGlmIChmLT5pc0NvbXBsZXRlKCkpIAorICAg
ICAgICAgICAgcmV0dXJuICJjb21wbGV0ZSI7CisgICAgICAgIGlmIChwYXJzaW5nKCkpIAorICAg
ICAgICAgICAgcmV0dXJuICJsb2FkaW5nIjsKKyAgICAgIHJldHVybiAibG9hZGVkIjsKKyAgICAg
IC8vIEZJWE1FOiBXaGF0IGRvZXMgdGhlIGludGVyYWN0aXZlIHZhbHVlIG1lYW4gPworICAgICAg
Ly8gRklYTUU6IE1pc3Npbmcgc3VwcG9ydCBmb3IgInVuaW5pdGlhbGl6ZWQiCisgICAgfQorICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIERvY3VtZW50OjppbnB1dEVuY29kaW5nKCkK
K3sKKyAgICBpZiAoRGVjb2RlciogZCA9IGRlY29kZXIoKSkKKyAgICAgICAgcmV0dXJuIGQtPmVu
Y29kaW5nTmFtZSgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIERvY3VtZW50
OjpkZWZhdWx0Q2hhcnNldCgpCit7CisgICAgaWYgKEZyYW1lICpmID0gZnJhbWUoKSkKKyAgICAg
ICAgcmV0dXJuIGYtPnNldHRpbmdzKCktPmVuY29kaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCit2b2lkIERvY3VtZW50OjpzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkK
K3sKKyAgICBpZiAoIWRlY29kZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGRlY29kZXIoKS0+
c2V0RW5jb2RpbmdOYW1lKGNoYXJzZXQuZGVwcmVjYXRlZFN0cmluZygpLmFzY2lpKCksIERlY29k
ZXI6OlVzZXJDaG9zZW5FbmNvZGluZyk7Cit9CisKIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50
RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkpCklu
ZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHJldmlzaW9uIDEzNjk5KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCwxNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxO
b2RlPiBpbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnROUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWlj
U3RyaW5nJikgY29uc3Q7CisKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBp
bnQgeSkgY29uc3Q7CisgICAgU3RyaW5nIHJlYWR5U3RhdGUoKTsKKyAgICBTdHJpbmcgaW5wdXRF
bmNvZGluZygpOworICAgIFN0cmluZyBkZWZhdWx0Q2hhcnNldCgpOworCisgICAgU3RyaW5nIGNo
YXJzZXQoKSB7IHJldHVybiBpbnB1dEVuY29kaW5nKCk7IH0KKyAgICBTdHJpbmcgY2hhcmFjdGVy
U2V0KCkgeyByZXR1cm4gaW5wdXRFbmNvZGluZygpOyB9CisKKyAgICB2b2lkIHNldENoYXJzZXQo
Y29uc3QgU3RyaW5nJik7CiAKICAgICBQYXNzUmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNjk5KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEwMyw2ICsxMDMsOCBAQAogCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNTA5
QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07CiAJCTY1OTM5MjM4MDlBRTQzNDYwMDJD
NTMxRiAvKiBLVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovOyB9OwogCQk2NTkzOTIz
QTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFj
Lm1tICovOyB9OworCQk2NTlEREM4MjA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlEREM4MDA5
RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi87IH07CisJCTY1OUREQzgzMDlFMTk4
QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5o
ICovOyB9OwogCQk2NUEyMTQ2ODA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0NjcwOTdBMzI5MTAwQjkw
NTBBIC8qIFBhZ2UuaCAqLzsgfTsKIAkJNjVBMjE0ODQwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1l
VHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCAqLzsgfTsKIAkJNjVBMjE0
ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1l
VHJlZS5oICovOyB9OwpAQCAtMTIyMiw2ICsxMjI0LDcgQEAKIAkJNjU0NUY2NkUwOUI4MkZFRDAw
MTMwMDZGIC8qIFRyYW5zZmVySm9iQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBUcmFuc2ZlckpvYkNsaWVudC5oOyBwYXRoID0gcGxhdGZvcm0vVHJhbnNmZXJKb2JD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0NUY2NkYwOUI4MkZFRDAw
MTMwMDZGIC8qIFRyYW5zZmVySm9iSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFRyYW5zZmVySm9iSW50ZXJuYWwuaDsgcGF0aCA9IHBsYXRmb3JtL1RyYW5zZmVy
Sm9iSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0NUY2NzUwOUI4
MzAxODAwMTMwMDZGIC8qIFRyYW5zZmVySm9iTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFRyYW5zZmVySm9iTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAgLyogRG9jdW1lbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1NEVDNjBGMDk3Nzc4RjUwMERBQjUyQyAvKiBXZWJDb3JlRnJhbWVCcmlkZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZUJyaWRnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTRFQzYxMDA5Nzc3OEY1MDBEQUI1MkMgLyog
V2ViQ29yZUZyYW1lQnJpZGdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkNvcmVGcmFtZUJyaWRnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RBVEFTZWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDcsNiArMTMxMCw4IEBACiAJCTY1OTM5MjM1MDlBRTQz
NDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBLVVJMLmNwcDsgcGF0aCA9IHBsYXRmb3JtL0tVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gS1VSTC5oOyBwYXRoID0gcGxhdGZvcm0vS1VSTC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYg
LyogS1VSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBL
VVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTlEREM4MDA5RTE5OEJB
MDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSlNEb2N1bWVudC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRG9jdW1lbnQuaDsgcGF0
aCA9IEpTRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBMjE0Njcw
OTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBMjE0ODIwOTdBM0Y1
MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRnJhbWVUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVB
MjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnJhbWVUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjI0LDYgKzI2MjksOCBAQAogCQkJCTkzMDcwNUU4MDlFMEM5RjAwMEIxN0ZFNCAvKiBKU0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKIAkJCQk5MzA3MDVFQTA5RTBDOUY2MDBCMTdGRTQgLyog
SlNDU1NQcmltaXRpdmVWYWx1ZS5oICovLAogCQkJCTY1REYzMUUxMDlEMUNDNjAwMDBCRTMyNSAv
KiBKU0RvY3VtZW50VHlwZS5jcHAgKi8sCisJCQkJNjU5RERDODAwOUUxOThCQTAwMUJGM0M2IC8q
IEpTRG9jdW1lbnQuY3BwICovLAorCQkJCTY1OUREQzgxMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0Rv
Y3VtZW50LmggKi8sCiAJCQkJNjVERjMxRTIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRG9jdW1lbnRU
eXBlLmggKi8sCiAJCQkJNjVERjMxRTMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1wbGVtZW50
YXRpb24uY3BwICovLAogCQkJCTY1REYzMUU0MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUltcGxl
bWVudGF0aW9uLmggKi8sCkBAIC00MDQ2LDYgKzQwNTMsNyBAQAogCQlGNTIzRDMyNDAyREU0NDc4
MDE4NjM1Q0EgLyogZG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAgLyogRG9jdW1lbnQuaWRsICovLAogCQkJ
CUY1MjNEMzA3MDJERTQ0NzYwMTg2MzVDQSAvKiBBYnN0cmFjdFZpZXcuY3BwICovLAogCQkJCUY1
MjNEMzA4MDJERTQ0NzYwMTg2MzVDQSAvKiBBYnN0cmFjdFZpZXcuaCAqLywKIAkJCQlCQzNCMzY0
NzA1QzlENUUyMDBFNDI5MDIgLyogQXRvbWljU3RyaW5nTGlzdC5oICovLApAQCAtNDc4OCw2ICs0
Nzk2LDcgQEAKIAkJCQlBODY2MjlEMzA5REEyQjQ4MDA5NjMzQTUgLyogSlNLZXlib2FyZEV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI2REMwQjA5REFENUJFMDBBRkM4NDcgLyogQ2hhcnNl
dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDcwNTZDMDlFMEFGOEYwMEIxN0ZFNCAvKiBj
c3NoZWxwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1OUREQzgzMDlFMTk4QkEwMDFCRjNDNiAv
KiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA3MDVEQTA5RTBDOUJGMDBCMTdG
RTQgLyogSlNDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA3MDVFQjA5RTBDOUY2MDBC
MTdGRTQgLyogSlNDU1NQcmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAt
NTQ4MCw2ICs1NDg5LDcgQEAKIAkJCQlBODY2MjlEMjA5REEyQjQ4MDA5NjMzQTUgLyogSlNNb3Vz
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NjYyOUQ0MDlEQTJCNDgwMDk2MzNBNSAv
KiBKU0tleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMyNkRDMEMwOURBRDVE
NjAwQUZDODQ3IC8qIENoYXJzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1OUREQzgy
MDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MDcwNUQ4MDlFMEM5QjcwMEIxN0ZFNCAvKiBKU0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTMwNzA1RTkwOUUwQzlGMDAwQjE3RkU0IC8qIEpTQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjk5KQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NyBAQAorMjAwNi0wNC0wNSAgTWFjaWVqIFN0
YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gYXV0b2dlbmVyYXRlIGJpbmRpbmdzIGZvciBtYW55IG9mIHRo
ZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIG9mIERvY3VtZW50CisgICAgICAgIGh0dHA6Ly9idWd6
aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2MworCisgICAgICAgIC0gYWxz
byByZW1vdmVkIGRvY3VtZW50LmFjdHVhbEVuY29kaW5nIHNpbmNlIGl0IGlzIG5vdCBpbiBhbnkg
c3BlYworICAgICAgICBvciBpbXBsZW1lbnRlZCBieSBhbnkgb3RoZXIgYnJvd3NlcgorICAgICAg
ICAKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBhZGQgSlNEb2N1bWVudC5oIHRvIHJl
c3VsdHMKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVk
IG5ldyBmaWxlcyB0byBwcm9qZWN0CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06IFN1cHBvcnQgZm9yIG5ldyBzdHVmZiBuZWVkZWQgYnkgRG9jdW1lbnQuCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZWFkeVN0YXRlKTogbW92ZWQgaW1wbCBoZXJlIGZyb20gSlMgYmluZGluZ3MKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjppbnB1dEVuY29kaW5nKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkZWZhdWx0Q2hhcnNldCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0Q2hhcnNldCk6IGRpdHRvCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hhcnNldCk6IGFkZGVkLCBzeW5vbnltIGZvciBpbnB1
dEVuY29kaW5nLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNoYXJhY3RlclNldCk6IGRp
dHRvCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogQWRkZWQuIEZ1bGwgaW50ZXJmYWNlIGZv
ciB0aGUgRG9jdW1lbnQgb2JqZWN0LgorICAgICAgICAqIGtodG1sL2VjbWEvSlNYTUxIdHRwUmVx
dWVzdC5jcHA6CisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3RQcm90b0Z1bmM6OmNhbGxB
c0Z1bmN0aW9uKTogSlNEb2N1bWVudCwgbm90IERPTURvY3VtZW50CisgICAgICAgICoga2h0bWwv
ZWNtYS9KU1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoS0pTOjpYU0xUUHJvY2Vzc29yUHJv
dG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6IGRpdHRvCisgICAgICAgICoga2h0bWwvZWNtYS9ranNf
YmluZGluZy5jcHA6CisgICAgICAgIChLSlM6OmpzU3RyaW5nT3JGYWxzZSk6IEFkZGVkIHRoaXMg
Y29udmVuaWVuY2UgZm9yIHRoZSBtZXRob2Qgb24gRG9jdW1lbnQKKyAgICAgICAgdGhhdCBiaXp6
YXJlbHkgcmV0dXJucyBmYWxzZSBvbiBmYWlsdXJlIGFuZCBhIHN0cmluZyBvdGhlcndpc2UuCisg
ICAgICAgICoga2h0bWwvZWNtYS9ranNfYmluZGluZy5oOgorICAgICAgICAqIGtodG1sL2VjbWEv
a2pzX2Nzcy5jcHA6CisgICAgICAgIChLSlM6OnRvSlMpOiByZW5hbWVkIGZvciBjb25zaXN0ZW5j
eQorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2Nzcy5oOgorICAgICAgICAqIGtodG1sL2VjbWEv
a2pzX2RvbS5jcHA6CisgICAgICAgIC0gcmVtb3ZlZCBhbGwgdHJhY2VzIG9mIERPTURvY3VtZW50
CisgICAgICAgIChLSlM6OnRvSlMpOiBKU0RvY3VtZW50LCBub3QgRE9NRG9jdW1lbnQKKyAgICAg
ICAgKiBraHRtbC9lY21hL2tqc19kb20uaDoKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19odG1s
LmNwcDoKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6SlNIVE1MRG9jdW1lbnQ6OkpT
SFRNTERvY3VtZW50KTogaW5oZXJpdCBmcm9tIEpTRG9jdW1lbnQKKyAgICAgICAgKEtKUzo6SlNI
VE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdCk6IGRpdHRvCisgICAgICAgIChLSlM6OkpT
SFRNTERvY3VtZW50OjpwdXQpOiBkaXR0bworICAgICAgICAqIGtodG1sL2VjbWEva2pzX2h0bWwu
aDoKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc190cmF2ZXJzYWwuY3BwOgorICAgICAgICAoS0pT
Ojp0b0pTKTogYWRkZWQgb3ZlcmxvYWRzCisgICAgICAgIChLSlM6OnRvTm9kZUZpbHRlcik6IGhh
bmRsZSBKUyBmdW5jdGlvbnMgYXMgd2VsbCBhcyBpbXBsIE5vZGVGaWx0ZXIgb2JqZWN0cworICAg
ICAgICAqIGtodG1sL2VjbWEva2pzX3RyYXZlcnNhbC5oOgorICAgICAgICAqIHBsYXRmb3JtL0F0
b21pY1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcpOiBBbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gU3RyaW5nLgorCisyMDA2LTA0LTAz
ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzOgor
ICAgICAgICAqIGtodG1sL2VjbWEva2pzX2JpbmRpbmcuY3BwOgorICAgICAgICAoS0pTOjpqc1N0
cmluZ09yRmFsc2UpOgorICAgICAgICAqIGtodG1sL2VjbWEva2pzX2JpbmRpbmcuaDoKKyAgICAg
ICAgKiBraHRtbC9lY21hL2tqc19kb20uY3BwOgorICAgICAgICAoS0pTOjpET01Eb2N1bWVudDo6
Z2V0VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OkRPTURvY3VtZW50OjpwdXRWYWx1ZVBy
b3BlcnR5KToKKyAgICAgICAgKEtKUzo6RE9NRG9jdW1lbnRQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0
aW9uKToKKyAgICAgICAgKEtKUzo6dG9KUyk6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfZG9t
Lmg6CisgICAgICAgIChLSlM6OkRPTURvY3VtZW50OjopOgorICAgICAgICAqIGtodG1sL2VjbWEv
a2pzX2h0bWwuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pTOjpKU0hUTUxEb2N1
bWVudDo6SlNIVE1MRG9jdW1lbnQpOgorICAgICAgICAoS0pTOjpKU0hUTUxEb2N1bWVudDo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEtKUzo6SlNIVE1MRG9jdW1lbnQ6OnB1dCk6Cisg
ICAgICAgICoga2h0bWwvZWNtYS9ranNfaHRtbC5oOgorICAgICAgICAqIHBsYXRmb3JtL0F0b21p
Y1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcp
OgorCiAyMDA2LTA0LTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKdXN0aW4gKGVkaXRpbmcgcGFydHMpIGFuZCBBZGVsZSAodGhlIHJlc3Qp
LgpAQCAtMzcwLDcgKzQ0NCw3IEBACiAKICAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CiAKLTIwMDYtMDQtMDMgIERhdmUgSHlhdHQKKzIwMDYtMDQtMDMgIERhdmUg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGJhc2ljIHRoZW1l
IHN1cHBvcnQgb24gV2luMzIuICBTdGlsbCBtdWNoIHRvIGRvLCBidXQKICAgICAgICAgdGhlIGJh
Y2tncm91bmRzIG9mIGJ1dHRvbnMsIHRleHRmaWVsZHMsIGNoZWNrYm94ZXMgYW5kIHJhZGlvCg==
</data>
<flag name="review"
          id="2056"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>