<?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>111356</bug_id>
          
          <creation_ts>2013-03-04 12:38:44 -0800</creation_ts>
          <short_desc>Remove contextInternalContext from JSContextInternal.h</short_desc>
          <delta_ts>2013-03-04 13:49:33 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>846740</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-04 12:38:44 -0800</bug_when>
    <thetext>We don&apos;t need it any more since we have globalContextRef in JSContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846748</commentid>
    <comment_count>1</comment_count>
      <attachid>191295</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-04 12:47:10 -0800</bug_when>
    <thetext>Created attachment 191295
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846796</commentid>
    <comment_count>2</comment_count>
      <attachid>191295</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-04 13:34:40 -0800</bug_when>
    <thetext>Comment on attachment 191295
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846817</commentid>
    <comment_count>3</comment_count>
      <attachid>191295</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 13:49:30 -0800</bug_when>
    <thetext>Comment on attachment 191295
patch

Clearing flags on attachment: 191295

Committed r144668: &lt;http://trac.webkit.org/changeset/144668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846818</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 13:49:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191295</attachid>
            <date>2013-03-04 12:47:10 -0800</date>
            <delta_ts>2013-03-04 13:49:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>35663</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0NjYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBA
CisyMDEzLTAzLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGNvbnRleHRJbnRlcm5hbENvbnRleHQgZnJvbSBKU0NvbnRleHRJbnRl
cm5hbC5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTEzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBkb24ndCBuZWVkIGl0IGFueSBtb3JlIHNpbmNlIHdlIGhhdmUgZ2xvYmFsQ29udGV4dFJlZiBp
biBKU0NvbnRleHQuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAqIEFQ
SS9KU0NvbnRleHRJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAg
ICAoK1tKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6aW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tKU1Zh
bHVlIHZhbHVlV2l0aERvdWJsZTppbkNvbnRleHQ6XSk6CisgICAgICAgICgrW0pTVmFsdWUgdmFs
dWVXaXRoSW50MzI6aW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aFVJ
bnQzMjppbkNvbnRleHQ6XSk6CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0
SW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aE5ld0FycmF5SW5Db250
ZXh0Ol0pOgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVlV2l0aE5ld1JlZ3VsYXJFeHByZXNzaW9u
RnJvbVBhdHRlcm46ZmxhZ3M6aW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tKU1ZhbHVlIHZhbHVl
V2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6aW5Db250ZXh0Ol0pOgorICAgICAgICAoK1tKU1ZhbHVl
IHZhbHVlV2l0aE51bGxJbkNvbnRleHQ6XSk6CisgICAgICAgICgrW0pTVmFsdWUgdmFsdWVXaXRo
VW5kZWZpbmVkSW5Db250ZXh0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHRvQm9vbF0pOgorICAg
ICAgICAoLVtKU1ZhbHVlIHRvRG91YmxlXSk6CisgICAgICAgICgtW0pTVmFsdWUgdG9OdW1iZXJd
KToKKyAgICAgICAgKC1bSlNWYWx1ZSB0b1N0cmluZ10pOgorICAgICAgICAoLVtKU1ZhbHVlIHRv
RGF0ZV0pOgorICAgICAgICAoLVtKU1ZhbHVlIHRvQXJyYXldKToKKyAgICAgICAgKC1bSlNWYWx1
ZSB0b0RpY3Rpb25hcnldKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5Ol0pOgorICAgICAgICAo
LVtKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3Bl
cnR5Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHZhbHVlQXRJbmRleDpdKToKKyAgICAgICAgKC1b
SlNWYWx1ZSBzZXRWYWx1ZTphdEluZGV4Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzVW5kZWZp
bmVkXSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNOdWxsXSk6CisgICAgICAgICgtW0pTVmFsdWUg
aXNCb29sZWFuXSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNOdW1iZXJdKToKKyAgICAgICAgKC1b
SlNWYWx1ZSBpc1N0cmluZ10pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzT2JqZWN0XSk6CisgICAg
ICAgICgtW0pTVmFsdWUgaXNFcXVhbFRvT2JqZWN0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlz
RXF1YWxXaXRoVHlwZUNvZXJjaW9uVG9PYmplY3Q6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNJ
bnN0YW5jZU9mOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGNhbGxXaXRoQXJndW1lbnRzOl0pOgor
ICAgICAgICAoLVtKU1ZhbHVlIGNvbnN0cnVjdFdpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICgt
W0pTVmFsdWUgaW52b2tlTWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICh2YWx1ZVRv
T2JqZWN0KToKKyAgICAgICAgKG9iamVjdFRvVmFsdWVXaXRob3V0Q29weSk6CisgICAgICAgIChv
YmplY3RUb1ZhbHVlKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpbml0V2l0aFZhbHVlOmluQ29udGV4
dDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW0pTVmFsdWUg
ZGVzY3JpcHRpb25dKToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAo
Y3JlYXRlT2JqZWN0V2l0aEN1c3RvbUJyYW5kKToKKyAgICAgICAgKC1bSlNPYmpDQ2xhc3NJbmZv
IGFsbG9jYXRlQ29uc3RydWN0b3JBbmRQcm90b3R5cGVXaXRoU3VwZXJDbGFzc0luZm86XSk6Cisg
ICAgICAgICgtW0pTT2JqQ0NsYXNzSW5mbyB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAo
LVtKU1dyYXBwZXJNYXAganNXcmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAqIEFQSS9PYmpD
Q2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKE9iakNDYWxsYmFja0Z1bmN0aW9uOjpjYWxs
KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6CisKIDIwMTMt
MDMtMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
aW1wbGUgdmVjdG9yIHRyYWl0cyBmb3IgSlNDOjpJZGVudGlmaWVyLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHJldmlzaW9uIDE0NDY1MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsMTEg
KzE5MCw2IEBAIC0gKGlkKWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWwKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHRJbnRlcm5hbENvbnRl
eHQoSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIHJldHVybiBjb250ZXh0LT5tX2NvbnRleHQ7
Ci19Ci0KIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFttX3dyYXBwZXJNYXAgcmVsZWFzZV07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCShy
ZXZpc2lvbiAxNDQ2NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dElu
dGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDggKzYxLDYgQEAgcHJpdmF0ZToKIAogLSAo
aWQpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpY29udGV4dDsK
IAotSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHRJbnRlcm5hbENv
bnRleHQoSlNDb250ZXh0ICopOwotCiAtICh2b2lkKW5vdGlmeUV4Y2VwdGlvbjooSlNWYWx1ZVJl
ZilleGNlcHRpb247CiAtIChKU1ZhbHVlICopdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOihKU1Zh
bHVlUmVmKWV4Y2VwdGlvbjsKIC0gKEJPT0wpYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246KEpTVmFs
dWVSZWYpZXhjZXB0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQko
cmV2aXNpb24gMTQ0NjUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw2MiArNjksNjIgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0
aE9iamVjdDooaWQpdmFsdWUgaQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoQm9vbDooQk9PTCl2
YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIHsKLSAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoVmFsdWU6SlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHRJbnRlcm5hbENvbnRl
eHQoY29udGV4dCksIHZhbHVlKSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgcmV0dXJuIFtKU1Zh
bHVlIHZhbHVlV2l0aFZhbHVlOkpTVmFsdWVNYWtlQm9vbGVhbihbY29udGV4dCBnbG9iYWxDb250
ZXh0UmVmXSwgdmFsdWUpIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAogKyAoSlNWYWx1ZSAqKXZh
bHVlV2l0aERvdWJsZTooZG91YmxlKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4
dAogewotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpKU1ZhbHVlTWFrZU51bWJl
cihjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCB2YWx1ZSkgaW5Db250ZXh0OmNvbnRl
eHRdOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpKU1ZhbHVlTWFrZU51bWJl
cihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgdmFsdWUpIGluQ29udGV4dDpjb250ZXh0XTsK
IH0KIAogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aEludDMyOihpbnQzMl90KXZhbHVlIGluQ29udGV4
dDooSlNDb250ZXh0ICopY29udGV4dAogewotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhW
YWx1ZTpKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCB2
YWx1ZSkgaW5Db250ZXh0OmNvbnRleHRdOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhW
YWx1ZTpKU1ZhbHVlTWFrZU51bWJlcihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgdmFsdWUp
IGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAogKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVJbnQzMjoo
dWludDMyX3QpdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7Ci0gICAgcmV0
dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOkpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHRJbnRl
cm5hbENvbnRleHQoY29udGV4dCksIHZhbHVlKSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgcmV0
dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOkpTVmFsdWVNYWtlTnVtYmVyKFtjb250ZXh0IGds
b2JhbENvbnRleHRSZWZdLCB2YWx1ZSkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1Zh
bHVlICopdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7
Ci0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOkpTT2JqZWN0TWFrZShjb250ZXh0
SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCAwLCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAg
cmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOkpTT2JqZWN0TWFrZShbY29udGV4dCBnbG9i
YWxDb250ZXh0UmVmXSwgMCwgMCkgaW5Db250ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVl
ICopdmFsdWVXaXRoTmV3QXJyYXlJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIHsKLSAg
ICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6SlNPYmplY3RNYWtlQXJyYXkoY29udGV4
dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgMCwgTlVMTCwgMCkgaW5Db250ZXh0OmNvbnRleHRd
OworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpKU09iamVjdE1ha2VBcnJheShb
Y29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgMCwgTlVMTCwgMCkgaW5Db250ZXh0OmNvbnRleHRd
OwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoTmV3UmVndWxhckV4cHJlc3Npb25Gcm9tUGF0
dGVybjooTlNTdHJpbmcgKilwYXR0ZXJuIGZsYWdzOihOU1N0cmluZyAqKWZsYWdzIGluQ29udGV4
dDooSlNDb250ZXh0ICopY29udGV4dAogewogICAgIEpTU3RyaW5nUmVmIHBhdHRlcm5TdHJpbmcg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcGF0dGVybik7CiAgICAg
SlNTdHJpbmdSZWYgZmxhZ3NTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZT
dHJpbmdSZWYpZmxhZ3MpOwotICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdID0geyBKU1ZhbHVl
TWFrZVN0cmluZyhjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBwYXR0ZXJuU3RyaW5n
KSwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgZmxh
Z3NTdHJpbmcpIH07CisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbMl0gPSB7IEpTVmFsdWVNYWtl
U3RyaW5nKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBwYXR0ZXJuU3RyaW5nKSwgSlNWYWx1
ZU1ha2VTdHJpbmcoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIGZsYWdzU3RyaW5nKSB9Owog
ICAgIEpTU3RyaW5nUmVsZWFzZShwYXR0ZXJuU3RyaW5nKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uo
ZmxhZ3NTdHJpbmcpOwogCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOkpTT2Jq
ZWN0TWFrZVJlZ0V4cChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCAyLCBhcmd1bWVu
dHMsIDApIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
VmFsdWU6SlNPYmplY3RNYWtlUmVnRXhwKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCAyLCBh
cmd1bWVudHMsIDApIGluQ29udGV4dDpjb250ZXh0XTsKIH0KIAogKyAoSlNWYWx1ZSAqKXZhbHVl
V2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbkNvbnRleHQ6KEpT
Q29udGV4dCAqKWNvbnRleHQKIHsKICAgICBKU1N0cmluZ1JlZiBzdHJpbmcgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpbWVzc2FnZSk7Ci0gICAgSlNWYWx1ZVJlZiBh
cmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4
dCksIHN0cmluZyk7CisgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5n
KFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBzdHJpbmcpOwogICAgIEpTU3RyaW5nUmVsZWFz
ZShzdHJpbmcpOwogCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOkpTT2JqZWN0
TWFrZUVycm9yKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIDEsICZhcmd1bWVudCwg
MCkgaW5Db250ZXh0OmNvbnRleHRdOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1
ZTpKU09iamVjdE1ha2VFcnJvcihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgMSwgJmFyZ3Vt
ZW50LCAwKSBpbkNvbnRleHQ6Y29udGV4dF07CiB9CiAKICsgKEpTVmFsdWUgKil2YWx1ZVdpdGhO
dWxsSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7Ci0gICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aFZhbHVlOkpTVmFsdWVNYWtlTnVsbChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNv
bnRleHQpKSBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aFZhbHVlOkpTVmFsdWVNYWtlTnVsbChbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSkgaW5Db250
ZXh0OmNvbnRleHRdOwogfQogCiArIChKU1ZhbHVlICopdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7Ci0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0
aFZhbHVlOkpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4
dCkpIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFs
dWU6SlNWYWx1ZU1ha2VVbmRlZmluZWQoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0pIGluQ29u
dGV4dDpjb250ZXh0XTsKIH0KIAogLSAoaWQpdG9PYmplY3QKQEAgLTE0MCwxMyArMTQwLDEzIEBA
IC0gKGlkKXRvT2JqZWN0T2ZDbGFzczooQ2xhc3MpZXhwZWN0ZWRDbGEKIAogLSAoQk9PTCl0b0Jv
b2wKIHsKLSAgICByZXR1cm4gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0SW50ZXJuYWxDb250ZXh0
KF9jb250ZXh0KSwgbV92YWx1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oW19jb250
ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKIH0KIAogLSAoZG91YmxlKXRvRG91Ymxl
CiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIGRvdWJsZSByZXN1bHQgPSBK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUs
ICZleGNlcHRpb24pOworICAgIGRvdWJsZSByZXN1bHQgPSBKU1ZhbHVlVG9OdW1iZXIoW19jb250
ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhj
ZXB0aW9uKSB7CiAgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7
CkBAIC0xNjgsNyArMTY4LDcgQEAgLSAodWludDMyX3QpdG9VSW50MzIKIC0gKE5TTnVtYmVyICop
dG9OdW1iZXIKIHsKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgaWQgcmVzdWx0
ID0gdmFsdWVUb051bWJlcihjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1
ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFsdWVUb051bWJlcihbX2NvbnRleHQg
Z2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRp
b24pCiAgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMTc3LDcgKzE3Nyw3IEBAIC0gKE5TTnVtYmVyICopdG9OdW1iZXIK
IC0gKE5TU3RyaW5nICopdG9TdHJpbmcKIHsKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
Ci0gICAgaWQgcmVzdWx0ID0gdmFsdWVUb1N0cmluZyhjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9j
b250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFsdWVUb1N0
cmluZyhbX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwog
ICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKE5TU3Ry
aW5nICopdG9TdHJpbmcKIC0gKE5TRGF0ZSAqKXRvRGF0ZQogewogICAgIEpTVmFsdWVSZWYgZXhj
ZXB0aW9uID0gMDsKLSAgICBpZCByZXN1bHQgPSB2YWx1ZVRvRGF0ZShjb250ZXh0SW50ZXJuYWxD
b250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0g
dmFsdWVUb0RhdGUoW19jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0
aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0
aW9uOmV4Y2VwdGlvbl07CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE5NSw3ICsxOTUsNyBAQCAt
IChOU0RhdGUgKil0b0RhdGUKIC0gKE5TQXJyYXkgKil0b0FycmF5CiB7CiAgICAgSlNWYWx1ZVJl
ZiBleGNlcHRpb24gPSAwOwotICAgIGlkIHJlc3VsdCA9IHZhbHVlVG9BcnJheShjb250ZXh0SW50
ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVz
dWx0ID0gdmFsdWVUb0FycmF5KFtfY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgW19jb250ZXh0IG5vdGlm
eUV4Y2VwdGlvbjpleGNlcHRpb25dOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMDQsNyArMjA0
LDcgQEAgLSAoTlNBcnJheSAqKXRvQXJyYXkKIC0gKE5TRGljdGlvbmFyeSAqKXRvRGljdGlvbmFy
eQogewogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBpZCByZXN1bHQgPSB2YWx1
ZVRvRGljdGlvbmFyeShjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFsdWVUb0RpY3Rpb25hcnkoW19jb250ZXh0
IGdsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0
aW9uKQogICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTIxMywxMiArMjEzLDEyIEBAIC0gKE5TRGljdGlvbmFyeSAqKXRv
RGljdGlvbmFyeQogLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJv
cGVydHlOYW1lCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0
UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250
ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KFtfY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2Vw
dGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1
ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAogICAgIEpTU3RyaW5nUmVmIG5hbWUg
PSBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsK
LSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dEludGVy
bmFsQ29udGV4dChfY29udGV4dCksIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CisgICAgSlNW
YWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFByb3BlcnR5KFtfY29udGV4dCBnbG9iYWxDb250
ZXh0UmVmXSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uo
bmFtZSk7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1
ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKQEAgLTIyOSwxNCArMjI5LDE0IEBAIC0g
KEpTVmFsdWUgKil2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAKIC0gKHZvaWQpc2V0VmFsdWU6
KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQogewogICAgIEpT
VmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUsICZleGNl
cHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRl
eHQgZ2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNl
cHRpb24pIHsKICAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTT2Jq
ZWN0U2V0UHJvcGVydHkoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG9iamVjdCwg
bmFtZSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCAwLCAmZXhjZXB0aW9uKTsKKyAg
ICBKU09iamVjdFNldFByb3BlcnR5KFtfY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0
LCBuYW1lLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwog
ICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAg
IFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKQEAgLTI0NywxMiArMjQ3LDEy
IEBAIC0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OigKIC0gKEJPT0wpZGVs
ZXRlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiB7CiAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChj
b250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7Cisg
ICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtfY29udGV4dCBnbG9iYWxD
b250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25d
OwogCiAgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJPT0wgcmVzdWx0ID0gSlNPYmplY3REZWxl
dGVQcm9wZXJ0eShjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgb2JqZWN0LCBuYW1l
LCAmZXhjZXB0aW9uKTsKKyAgICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHko
W19jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIG5hbWUsICZleGNlcHRpb24pOwog
ICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICBy
ZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CkBAIC0y
NjMsMTIgKzI2MywxMiBAQCAtIChCT09MKWRlbGV0ZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3Bl
CiAtIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQogewogICAgIEpT
VmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUsICZleGNl
cHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbX2NvbnRl
eHQgZ2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNl
cHRpb24pCiAgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246
ZXhjZXB0aW9uXTsKIAogICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAgICBCT09MIHJlc3VsdCA9IEpT
T2JqZWN0SGFzUHJvcGVydHkoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG9iamVj
dCwgbmFtZSk7CisgICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KFtfY29udGV4
dCBnbG9iYWxDb250ZXh0UmVmXSwgb2JqZWN0LCBuYW1lKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uo
bmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI4NiwxMSArMjg2LDExIEBAIC0gKEpT
VmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW4KICAgICAgICAgcmV0dXJuIFtzZWxm
IHZhbHVlRm9yUHJvcGVydHk6W1tKU1ZhbHVlIHZhbHVlV2l0aERvdWJsZTppbmRleCBpbkNvbnRl
eHQ6X2NvbnRleHRdIHRvU3RyaW5nXV07CiAKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5h
bENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJl
ZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBt
X3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4g
W19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgSlNW
YWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0SW50ZXJu
YWxDb250ZXh0KF9jb250ZXh0KSwgb2JqZWN0LCAodW5zaWduZWQpaW5kZXgsICZleGNlcHRpb24p
OworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoW19j
b250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsICh1bnNpZ25lZClpbmRleCwgJmV4Y2Vw
dGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1
ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIApAQCAtMzA1LDEzICszMDUsMTMgQEAg
LSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgYXRJbmRleDooTlNVSQogICAgICAgICByZXR1cm4g
W3NlbGYgc2V0VmFsdWU6dmFsdWUgZm9yUHJvcGVydHk6W1tKU1ZhbHVlIHZhbHVlV2l0aERvdWJs
ZTppbmRleCBpbkNvbnRleHQ6X2NvbnRleHRdIHRvU3RyaW5nXV07CiAKICAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsK
KyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW19jb250ZXh0IGdsb2Jh
bENvbnRleHRSZWZdLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7
CiAgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHRJ
bnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBvYmplY3QsICh1bnNpZ25lZClpbmRleCwgb2JqZWN0
VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFNldFBy
b3BlcnR5QXRJbmRleChbX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIG9iamVjdCwgKHVuc2ln
bmVkKWluZGV4LCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksICZleGNlcHRpb24pOwog
ICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpl
eGNlcHRpb25dOwogICAgICAgICByZXR1cm47CkBAIC0zMjAsNDMgKzMyMCw0MyBAQCAtICh2b2lk
KXNldFZhbHVlOihpZCl2YWx1ZSBhdEluZGV4OihOU1VJCiAKIC0gKEJPT0wpaXNVbmRlZmluZWQK
IHsKLSAgICByZXR1cm4gSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHRJbnRlcm5hbENvbnRleHQo
X2NvbnRleHQpLCBtX3ZhbHVlKTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzVW5kZWZpbmVkKFtfY29u
dGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CiB9CiAKIC0gKEJPT0wpaXNOdWxsCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWVJc051bGwoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4
dCksIG1fdmFsdWUpOworICAgIHJldHVybiBKU1ZhbHVlSXNOdWxsKFtfY29udGV4dCBnbG9iYWxD
b250ZXh0UmVmXSwgbV92YWx1ZSk7CiB9CiAKIC0gKEJPT0wpaXNCb29sZWFuCiB7Ci0gICAgcmV0
dXJuIEpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1f
dmFsdWUpOworICAgIHJldHVybiBKU1ZhbHVlSXNCb29sZWFuKFtfY29udGV4dCBnbG9iYWxDb250
ZXh0UmVmXSwgbV92YWx1ZSk7CiB9CiAKIC0gKEJPT0wpaXNOdW1iZXIKIHsKLSAgICByZXR1cm4g
SlNWYWx1ZUlzTnVtYmVyKGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVl
KTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzTnVtYmVyKFtfY29udGV4dCBnbG9iYWxDb250ZXh0UmVm
XSwgbV92YWx1ZSk7CiB9CiAKIC0gKEJPT0wpaXNTdHJpbmcKIHsKLSAgICByZXR1cm4gSlNWYWx1
ZUlzU3RyaW5nKGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZUlzU3RyaW5nKFtfY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92
YWx1ZSk7CiB9CiAKIC0gKEJPT0wpaXNPYmplY3QKIHsKLSAgICByZXR1cm4gSlNWYWx1ZUlzT2Jq
ZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlKTsKKyAgICByZXR1
cm4gSlNWYWx1ZUlzT2JqZWN0KFtfY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7
CiB9CiAKIC0gKEJPT0wpaXNFcXVhbFRvT2JqZWN0OihpZCl2YWx1ZQogewotICAgIHJldHVybiBK
U1ZhbHVlSXNTdHJpY3RFcXVhbChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92
YWx1ZSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZUlzU3RyaWN0RXF1YWwoW19jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCBvYmpl
Y3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSkpOwogfQogCiAtIChCT09MKWlzRXF1YWxXaXRoVHlw
ZUNvZXJjaW9uVG9PYmplY3Q6KGlkKXZhbHVlCiB7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwotICAgIEJPT0wgcmVzdWx0ID0gSlNWYWx1ZUlzRXF1YWwoY29udGV4dEludGVybmFsQ29u
dGV4dChfY29udGV4dCksIG1fdmFsdWUsIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwg
JmV4Y2VwdGlvbik7CisgICAgQk9PTCByZXN1bHQgPSBKU1ZhbHVlSXNFcXVhbChbX2NvbnRleHQg
Z2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVl
KSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29u
dGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCkBAIC0zNjYsMTEgKzM2
NiwxMSBAQCAtIChCT09MKWlzRXF1YWxXaXRoVHlwZUNvZXJjaW9uVG9PYmplY3Q6CiAtIChCT09M
KWlzSW5zdGFuY2VPZjooaWQpdmFsdWUKIHsKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
Ci0gICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3IgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dElu
dGVybmFsQ29udGV4dChfY29udGV4dCksIG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIHZhbHVlKSwg
JmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3IgPSBKU1ZhbHVlVG9PYmpl
Y3QoW19jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2
YWx1ZSksICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBb
X2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEJPT0wg
cmVzdWx0ID0gSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKGNvbnRleHRJbnRlcm5hbENv
bnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlLCBjb25zdHJ1Y3RvciwgJmV4Y2VwdGlvbik7CisgICAg
Qk9PTCByZXN1bHQgPSBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoW19jb250ZXh0IGds
b2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlLCBjb25zdHJ1Y3RvciwgJmV4Y2VwdGlvbik7CiAgICAg
aWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwogCkBAIC0zODUsMTEgKzM4NSwxMSBAQCAtIChKU1ZhbHVlICop
Y2FsbFdpdGhBcmd1bWVudHM6KE5TQXJyYXkgCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG9iamVj
dFRvVmFsdWUoX2NvbnRleHQsIFthcmd1bWVudEFycmF5IG9iamVjdEF0SW5kZXg6aV0pOwogCiAg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtf
Y29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYg
KGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNl
cHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxs
QXNGdW5jdGlvbihjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgb2JqZWN0LCAwLCBh
cmd1bWVudENvdW50LCBhcmd1bWVudHMsICZleGNlcHRpb24pOworICAgIEpTVmFsdWVSZWYgcmVz
dWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihbX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0s
IG9iamVjdCwgMCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCAmZXhjZXB0aW9uKTsKICAgICBp
ZiAoZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwogCkBAIC00MDQsMTEgKzQwNCwxMSBAQCAtIChKU1ZhbHVlICop
Y29uc3RydWN0V2l0aEFyZ3VtZW50czooTlNBCiAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG9iamVj
dFRvVmFsdWUoX2NvbnRleHQsIFthcmd1bWVudEFycmF5IG9iamVjdEF0SW5kZXg6aV0pOwogCiAg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtf
Y29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYg
KGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNl
cHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2Fs
bEFzQ29uc3RydWN0b3IoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG9iamVjdCwg
YXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJlZiBy
ZXN1bHQgPSBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yKFtfY29udGV4dCBnbG9iYWxDb250ZXh0
UmVmXSwgb2JqZWN0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsICZleGNlcHRpb24pOwogICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5
RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKQEAgLTQyMywyMSArNDIzLDIxIEBAIC0gKEpTVmFsdWUg
KilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWUKICAgICAgICAgYXJndW1lbnRBcnJheVtpXSA9
IG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIFthcmd1bWVudHMgb2JqZWN0QXRJbmRleDppXSk7CiAK
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09iamVj
dCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92
YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IEpTVmFsdWVU
b09iamVjdChbX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUsICZleGNlcHRpb24p
OwogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9t
Tm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKICAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNT
dHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKW1ldGhvZCk7Ci0gICAgSlNWYWx1
ZVJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dEludGVybmFsQ29udGV4
dChfY29udGV4dCksIHRoaXNPYmplY3QsIG5hbWUsICZleGNlcHRpb24pOworICAgIEpTVmFsdWVS
ZWYgZnVuY3Rpb24gPSBKU09iamVjdEdldFByb3BlcnR5KFtfY29udGV4dCBnbG9iYWxDb250ZXh0
UmVmXSwgdGhpc09iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CiAgICAgSlNTdHJpbmdSZWxlYXNl
KG5hbWUpOwogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFs
dWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKLSAgICBKU09iamVjdFJlZiBvYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIGZ1
bmN0aW9uLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoW19jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBmdW5jdGlvbiwgJmV4Y2VwdGlvbik7
CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNP
YmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgb2Jq
ZWN0LCB0aGlzT2JqZWN0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudEFycmF5LCAmZXhjZXB0aW9u
KTsKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oW19jb250
ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBvYmplY3QsIHRoaXNPYmplY3QsIGFyZ3VtZW50Q291bnQs
IGFyZ3VtZW50QXJyYXksICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAg
IHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAK
QEAgLTcxMCwxMCArNzEwLDEwIEBAIHN0YXRpYyBpZCBjb250YWluZXJWYWx1ZVRvT2JqZWN0KEpT
R2xvYmEKIAogaWQgdmFsdWVUb09iamVjdChKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVSZWYg
dmFsdWUpCiB7Ci0gICAgSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sgcmVzdWx0ID0gdmFsdWVU
b09iamVjdFdpdGhvdXRDb3B5KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIHZhbHVl
KTsKKyAgICBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayByZXN1bHQgPSB2YWx1ZVRvT2JqZWN0
V2l0aG91dENvcHkoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIHZhbHVlKTsKICAgICBpZiAo
cmVzdWx0LnR5cGUgPT0gQ29udGFpbmVyTm9uZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5vYmpj
OwotICAgIHJldHVybiBjb250YWluZXJWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRl
eHQoY29udGV4dCksIHJlc3VsdCk7CisgICAgcmV0dXJuIGNvbnRhaW5lclZhbHVlVG9PYmplY3Qo
W2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdCk7CiB9CiAKIGlkIHZhbHVlVG9OdW1i
ZXIoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKQEAgLTg1Niw3ICs4NTYsNyBAQCBpbmxpbmUgYm9vbCBpc05TQm9vbGVh
bihpZCBvYmplY3QpCiAKIHN0YXRpYyBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIG9iamVj
dFRvVmFsdWVXaXRob3V0Q29weShKU0NvbnRleHQgKmNvbnRleHQsIGlkIG9iamVjdCkKIHsKLSAg
ICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dFJlZiA9IGNvbnRleHRJbnRlcm5hbENvbnRleHQo
Y29udGV4dCk7CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBn
bG9iYWxDb250ZXh0UmVmXTsKIAogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gKE9i
amNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHRSZWYpLCBDb250YWluZXJOb25lIH07CkBAIC04OTksNyArODk5LDcgQEAgc3RhdGlj
IE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sgb2JqZQogCiBKU1ZhbHVlUmVmIG9iamVjdFRv
VmFsdWUoSlNDb250ZXh0ICpjb250ZXh0LCBpZCBvYmplY3QpCiB7Ci0gICAgSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHRSZWYgPSBjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpOworICAg
IEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJl
Zl07CiAKICAgICBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIHRhc2sgPSBvYmplY3RUb1Zh
bHVlV2l0aG91dENvcHkoY29udGV4dCwgb2JqZWN0KTsKICAgICBpZiAodGFzay50eXBlID09IENv
bnRhaW5lck5vbmUpCkBAIC05NTcsNyArOTU3LDcgQEAgLSAoSlNWYWx1ZSAqKWluaXRXaXRoVmFs
dWU6KEpTVmFsdWVSZWYpdgogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgX2NvbnRleHQgPSBbY29u
dGV4dCByZXRhaW5dOwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKLSAgICBKU1ZhbHVlUHJvdGVjdChj
b250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSk7CisgICAgSlNWYWx1ZVBy
b3RlY3QoW19jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKICAgICByZXR1cm4g
c2VsZjsKIH0KIApAQCAtMTA3NSw3ICsxMDc1LDcgQEAgKyAoU0VMKXNlbGVjdG9yRm9yVmFsdWVU
b1N0cnVjdDooY29uc3QgYwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBKU1ZhbHVlVW5wcm90
ZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlKTsKKyAgICBKU1Zh
bHVlVW5wcm90ZWN0KFtfY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV92YWx1ZSk7CiAgICAg
W19jb250ZXh0IHJlbGVhc2VdOwogICAgIF9jb250ZXh0ID0gbmlsOwogICAgIFtzdXBlciBkZWFs
bG9jXTsKQEAgLTEwODMsNyArMTA4Myw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCiB7Ci0gICAgaWYgKGlkIHdyYXBwZWQgPSB0cnlVbndyYXBPYmpjT2Jq
ZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlKSkKKyAgICBpZiAo
aWQgd3JhcHBlZCA9IHRyeVVud3JhcE9iamNPYmplY3QoW19jb250ZXh0IGdsb2JhbENvbnRleHRS
ZWZdLCBtX3ZhbHVlKSkKICAgICAgICAgcmV0dXJuIFt3cmFwcGVkIGRlc2NyaXB0aW9uXTsKICAg
ICByZXR1cm4gW3NlbGYgdG9TdHJpbmddOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlzaW9uIDE0NDY1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0
LDcgQEAgc3RhdGljIEpTVmFsdWUgKmNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcgogICAgIGRlZmlu
aXRpb24uY2xhc3NOYW1lID0gW2JyYW5kIFVURjhTdHJpbmddOwogICAgIGRlZmluaXRpb24ucGFy
ZW50Q2xhc3MgPSBwYXJlbnRDbGFzczsKICAgICBKU0NsYXNzUmVmIGNsYXNzUmVmID0gSlNDbGFz
c0NyZWF0ZSgmZGVmaW5pdGlvbik7Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmplY3RN
YWtlKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIGNsYXNzUmVmLCBwcml2YXRlRGF0
YSk7CisgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmplY3RNYWtlKFtjb250ZXh0IGdsb2Jh
bENvbnRleHRSZWZdLCBjbGFzc1JlZiwgcHJpdmF0ZURhdGEpOwogICAgIEpTQ2xhc3NSZWxlYXNl
KGNsYXNzUmVmKTsKICAgICByZXR1cm4gW1tKU1ZhbHVlIGFsbG9jXSBpbml0V2l0aFZhbHVlOnJl
c3VsdCBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC0zNDMsNyArMzQzLDcgQEAgLSAodm9pZClh
bGxvY2F0ZUNvbnN0cnVjdG9yQW5kUHJvdG90eXBlVwogICAgIEFTU0VSVCghbV9jb25zdHJ1Y3Rv
ciB8fCAhbV9wcm90b3R5cGUpOwogICAgIEFTU0VSVCgobV9jbGFzcyA9PSBbTlNPYmplY3QgY2xh
c3NdKSA9PSAhc3VwZXJDbGFzc0luZm8pOwogICAgIGlmICghc3VwZXJDbGFzc0luZm8pIHsKLSAg
ICAgICAgSlNDb250ZXh0UmVmIGNDb250ZXh0ID0gY29udGV4dEludGVybmFsQ29udGV4dChtX2Nv
bnRleHQpOworICAgICAgICBKU0NvbnRleHRSZWYgY0NvbnRleHQgPSBbbV9jb250ZXh0IGdsb2Jh
bENvbnRleHRSZWZdOwogICAgICAgICBKU1ZhbHVlICpjb25zdHJ1Y3RvciA9IG1fY29udGV4dFtA
Ik9iamVjdCJdOwogICAgICAgICBpZiAoIW1fY29uc3RydWN0b3IpCiAgICAgICAgICAgICBtX2Nv
bnN0cnVjdG9yID0gdG9KUyhKU1ZhbHVlVG9PYmplY3QoY0NvbnRleHQsIHZhbHVlSW50ZXJuYWxW
YWx1ZShjb25zdHJ1Y3RvciksIDApKTsKQEAgLTM2OCw3ICszNjgsNyBAQCAtICh2b2lkKWFsbG9j
YXRlQ29uc3RydWN0b3JBbmRQcm90b3R5cGVXCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bnN0cnVjdG9yID0gY3JlYXRlT2JqZWN0V2l0aEN1c3RvbUJyYW5kKG1fY29udGV4dCwgW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xhc3NOYW1lXSwgd3JhcHBl
ckNsYXNzKCksIFttX2NsYXNzIHJldGFpbl0pOwogCi0gICAgICAgIEpTQ29udGV4dFJlZiBjQ29u
dGV4dCA9IGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KTsKKyAgICAgICAgSlNDb250
ZXh0UmVmIGNDb250ZXh0ID0gW21fY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXTsKICAgICAgICAg
bV9wcm90b3R5cGUgPSB0b0pTKEpTVmFsdWVUb09iamVjdChjQ29udGV4dCwgdmFsdWVJbnRlcm5h
bFZhbHVlKHByb3RvdHlwZSksIDApKTsKICAgICAgICAgbV9jb25zdHJ1Y3RvciA9IHRvSlMoSlNW
YWx1ZVRvT2JqZWN0KGNDb250ZXh0LCB2YWx1ZUludGVybmFsVmFsdWUoY29uc3RydWN0b3IpLCAw
KSk7CiAKQEAgLTM4Miw3ICszODIsNyBAQCAgICAgICAgIGZvckVhY2hQcm90b2NvbEltcGxlbWVu
dGluZ1Byb3RvCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFNldCBbUHJvdG90eXBlXS4KLSAg
ICAgICAgSlNPYmplY3RTZXRQcm90b3R5cGUoY29udGV4dEludGVybmFsQ29udGV4dChtX2NvbnRl
eHQpLCB0b1JlZihtX3Byb3RvdHlwZS5nZXQoKSksIHRvUmVmKHN1cGVyQ2xhc3NJbmZvLT5tX3By
b3RvdHlwZS5nZXQoKSkpOworICAgICAgICBKU09iamVjdFNldFByb3RvdHlwZShbbV9jb250ZXh0
IGdsb2JhbENvbnRleHRSZWZdLCB0b1JlZihtX3Byb3RvdHlwZS5nZXQoKSksIHRvUmVmKHN1cGVy
Q2xhc3NJbmZvLT5tX3Byb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgICAgIFtjb25zdHJ1Y3RvciBy
ZWxlYXNlXTsKICAgICAgICAgW3Byb3RvdHlwZSByZWxlYXNlXTsKQEAgLTQwNyw4ICs0MDcsOCBA
QCAtIChKU1ZhbHVlICopd3JhcHBlckZvck9iamVjdDooaWQpb2JqZWN0CiAgICAgICAgIFtzZWxm
IHJlYWxsb2NhdGVDb25zdHJ1Y3RvckFuZE9yUHJvdG90eXBlXTsKICAgICBBU1NFUlQoISFtX3By
b3RvdHlwZSk7CiAKLSAgICBKU09iamVjdFJlZiB3cmFwcGVyID0gSlNPYmplY3RNYWtlKGNvbnRl
eHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV9jbGFzc1JlZiwgW29iamVjdCByZXRhaW5d
KTsKLSAgICBKU09iamVjdFNldFByb3RvdHlwZShjb250ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29u
dGV4dCksIHdyYXBwZXIsIHRvUmVmKG1fcHJvdG90eXBlLmdldCgpKSk7CisgICAgSlNPYmplY3RS
ZWYgd3JhcHBlciA9IEpTT2JqZWN0TWFrZShbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBt
X2NsYXNzUmVmLCBbb2JqZWN0IHJldGFpbl0pOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKFtt
X2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIHdyYXBwZXIsIHRvUmVmKG1fcHJvdG90eXBlLmdl
dCgpKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOndyYXBwZXIgaW5Db250
ZXh0Om1fY29udGV4dF07CiB9CiAKQEAgLTQ4NSw3ICs0ODUsNyBAQCAtIChKU1ZhbHVlICopanNX
cmFwcGVyRm9yT2JqZWN0OihpZClvYmplCiAgICAgLy8gKDEpIEZvciBpbW1vcnRhbCBvYmplY3Rz
IEpTVmFsdWVzIHdpbGwgZWZmZWN0aXZlbHkgbGVhayBhbmQgdGhpcyByZXN1bHRzIGluIGVycm9y
IG91dHB1dCBiZWluZyBsb2dnZWQgLSB3ZSBzaG91bGQgYXZvaWQgYWRkaW5nIGFzc29jaWF0ZWQg
b2JqZWN0cyB0byBpbW1vcnRhbCBvYmplY3RzLgogICAgIC8vICgyKSBBIGxvbmcgbGl2ZWQgb2Jq
ZWN0IG1heSByYWNrIHVwIG1hbnkgSlNWYWx1ZXMuIFdoZW4gdGhlIGNvbnRleHRzIGFyZSByZWxl
YXNlZCB0aGVzZSB3aWxsIHVucHJvdGVjdCB0aGUgYXNzb2NpYXRlZCBKYXZhU2NyaXB0IG9iamVj
dHMsCiAgICAgLy8gICAgIGJ1dCBzdGlsbCwgd291bGQgcHJvYmFibHkgbmljZXIgaWYgd2UgbWFk
ZSBpdCBzbyB0aGF0IG9ubHkgb25lIGFzc29jaWF0ZWQgb2JqZWN0IHdhcyByZXF1aXJlZCwgYnJv
YWRjYXN0aW5nIG9iamVjdCBkZWFsbG9jLgotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9K
Uyhjb250ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCkpOworICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gdG9KUyhbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdKTsKICAgICBqc1dyYXBw
ZXIgPSB0b0pTKGV4ZWMsIHZhbHVlSW50ZXJuYWxWYWx1ZSh3cmFwcGVyKSkudG9PYmplY3QoZXhl
Yyk7CiAgICAgbV9jYWNoZWRKU1dyYXBwZXJzLnNldChvYmplY3QsIGpzV3JhcHBlcik7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxs
YmFja0Z1bmN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0JKHJldmlzaW9uIDE0NDY1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgQ2FsbGJhY2tBcmd1bWVudDo6fkNhbGxiYWNrQXJndW1lbnQoKQogY2xh
c3MgQ2FsbGJhY2tBcmd1bWVudEJvb2xlYW4gOiBwdWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7CiAg
ICAgdmlydHVhbCB2b2lkIHNldChOU0ludm9jYXRpb24gKmludm9jYXRpb24sIE5TSW50ZWdlciBh
cmd1bWVudE51bWJlciwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50LCBK
U1ZhbHVlUmVmKikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGJvb2wgdmFsdWUgPSBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIGFyZ3VtZW50KTsKKyAg
ICAgICAgYm9vbCB2YWx1ZSA9IEpTVmFsdWVUb0Jvb2xlYW4oW2NvbnRleHQgZ2xvYmFsQ29udGV4
dFJlZl0sIGFyZ3VtZW50KTsKICAgICAgICAgW2ludm9jYXRpb24gc2V0QXJndW1lbnQ6JnZhbHVl
IGF0SW5kZXg6YXJndW1lbnROdW1iZXJdOwogICAgIH0KIH07CkBAIC02Niw3ICs2Niw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWxsYmFja0FyZ3VtZW50SW50ZWdlciA6IHB1Ymxp
YyBDYWxsYmFja0FyZ3VtZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgc2V0KE5TSW52b2NhdGlvbiAq
aW52b2NhdGlvbiwgTlNJbnRlZ2VyIGFyZ3VtZW50TnVtYmVyLCBKU0NvbnRleHQgKmNvbnRleHQs
IEpTVmFsdWVSZWYgYXJndW1lbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIFQgdmFsdWUgPSAoVClKU0M6OnRvSW50MzIoSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIGFyZ3VtZW50LCBleGNlcHRpb24pKTsKKyAg
ICAgICAgVCB2YWx1ZSA9IChUKUpTQzo6dG9JbnQzMihKU1ZhbHVlVG9OdW1iZXIoW2NvbnRleHQg
Z2xvYmFsQ29udGV4dFJlZl0sIGFyZ3VtZW50LCBleGNlcHRpb24pKTsKICAgICAgICAgW2ludm9j
YXRpb24gc2V0QXJndW1lbnQ6JnZhbHVlIGF0SW5kZXg6YXJndW1lbnROdW1iZXJdOwogICAgIH0K
IH07CkBAIC03NSw3ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWxsYmFj
a0FyZ3VtZW50RG91YmxlIDogcHVibGljIENhbGxiYWNrQXJndW1lbnQgewogICAgIHZpcnR1YWwg
dm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1i
ZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgVCB2YWx1ZSA9IChUKUpTVmFsdWVU
b051bWJlcihjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBhcmd1bWVudCwgZXhjZXB0
aW9uKTsKKyAgICAgICAgVCB2YWx1ZSA9IChUKUpTVmFsdWVUb051bWJlcihbY29udGV4dCBnbG9i
YWxDb250ZXh0UmVmXSwgYXJndW1lbnQsIGV4Y2VwdGlvbik7CiAgICAgICAgIFtpbnZvY2F0aW9u
IHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmFyZ3VtZW50TnVtYmVyXTsKICAgICB9CiB9OwpA
QCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0KE5TSW52
b2NhdGlvbiAqaW52b2NhdGlvbiwgTlNJbnRlZ2VyIGFyZ3VtZW50TnVtYmVyLCBKU0NvbnRleHQg
KmNvbnRleHQsIEpTVmFsdWVSZWYgYXJndW1lbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgb3Zl
cnJpZGUKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gY29u
dGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVm
IGNvbnRleHRSZWYgPSBbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXTsKIAogICAgICAgICBpZCBv
YmplY3QgPSB0cnlVbndyYXBPYmpjT2JqZWN0KGNvbnRleHRSZWYsIGFyZ3VtZW50KTsKICAgICAg
ICAgaWYgKG9iamVjdCAmJiBbb2JqZWN0IGlzS2luZE9mQ2xhc3M6bV9jbGFzc10pIHsKQEAgLTEz
Niw3ICsxMzYsNyBAQCBwcml2YXRlOgogY2xhc3MgQ2FsbGJhY2tBcmd1bWVudE5TTnVtYmVyIDog
cHVibGljIENhbGxiYWNrQXJndW1lbnQgewogICAgIHZpcnR1YWwgdm9pZCBzZXQoTlNJbnZvY2F0
aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29u
dGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWQgdmFsdWUgPSB2YWx1ZVRvTnVtYmVyKGNvbnRleHRJbnRlcm5h
bENvbnRleHQoY29udGV4dCksIGFyZ3VtZW50LCBleGNlcHRpb24pOworICAgICAgICBpZCB2YWx1
ZSA9IHZhbHVlVG9OdW1iZXIoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIGFyZ3VtZW50LCBl
eGNlcHRpb24pOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFsdWUgYXRJbmRl
eDphcmd1bWVudE51bWJlcl07CiAgICAgfQogfTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBD
YWxsYmFja0FyZ3VtZW50TlNOdW1iZXIgOiBwdWJsaWMgCiBjbGFzcyBDYWxsYmFja0FyZ3VtZW50
TlNTdHJpbmcgOiBwdWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7CiAgICAgdmlydHVhbCB2b2lkIHNl
dChOU0ludm9jYXRpb24gKmludm9jYXRpb24sIE5TSW50ZWdlciBhcmd1bWVudE51bWJlciwgSlND
b250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZCB2YWx1ZSA9IHZhbHVlVG9TdHJpbmcoY29u
dGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgYXJndW1lbnQsIGV4Y2VwdGlvbik7CisgICAg
ICAgIGlkIHZhbHVlID0gdmFsdWVUb1N0cmluZyhbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwg
YXJndW1lbnQsIGV4Y2VwdGlvbik7CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2
YWx1ZSBhdEluZGV4OmFyZ3VtZW50TnVtYmVyXTsKICAgICB9CiB9OwpAQCAtMTUyLDcgKzE1Miw3
IEBAIGNsYXNzIENhbGxiYWNrQXJndW1lbnROU1N0cmluZyA6IHB1YmxpYyAKIGNsYXNzIENhbGxi
YWNrQXJndW1lbnROU0RhdGUgOiBwdWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7CiAgICAgdmlydHVh
bCB2b2lkIHNldChOU0ludm9jYXRpb24gKmludm9jYXRpb24sIE5TSW50ZWdlciBhcmd1bWVudE51
bWJlciwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZCB2YWx1ZSA9IHZhbHVlVG9E
YXRlKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIGFyZ3VtZW50LCBleGNlcHRpb24p
OworICAgICAgICBpZCB2YWx1ZSA9IHZhbHVlVG9EYXRlKFtjb250ZXh0IGdsb2JhbENvbnRleHRS
ZWZdLCBhcmd1bWVudCwgZXhjZXB0aW9uKTsKICAgICAgICAgW2ludm9jYXRpb24gc2V0QXJndW1l
bnQ6JnZhbHVlIGF0SW5kZXg6YXJndW1lbnROdW1iZXJdOwogICAgIH0KIH07CkBAIC0xNjAsNyAr
MTYwLDcgQEAgY2xhc3MgQ2FsbGJhY2tBcmd1bWVudE5TRGF0ZSA6IHB1YmxpYyBDYQogY2xhc3Mg
Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXkgOiBwdWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7CiAgICAg
dmlydHVhbCB2b2lkIHNldChOU0ludm9jYXRpb24gKmludm9jYXRpb24sIE5TSW50ZWdlciBhcmd1
bWVudE51bWJlciwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZCB2YWx1ZSA9IHZh
bHVlVG9BcnJheShjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBhcmd1bWVudCwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgaWQgdmFsdWUgPSB2YWx1ZVRvQXJyYXkoW2NvbnRleHQgZ2xvYmFs
Q29udGV4dFJlZl0sIGFyZ3VtZW50LCBleGNlcHRpb24pOwogICAgICAgICBbaW52b2NhdGlvbiBz
ZXRBcmd1bWVudDomdmFsdWUgYXRJbmRleDphcmd1bWVudE51bWJlcl07CiAgICAgfQogfTsKQEAg
LTE2OCw3ICsxNjgsNyBAQCBjbGFzcyBDYWxsYmFja0FyZ3VtZW50TlNBcnJheSA6IHB1YmxpYyBD
CiBjbGFzcyBDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5IDogcHVibGljIENhbGxiYWNrQXJn
dW1lbnQgewogICAgIHZpcnR1YWwgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBO
U0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBh
cmd1bWVudCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
aWQgdmFsdWUgPSB2YWx1ZVRvRGljdGlvbmFyeShjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRl
eHQpLCBhcmd1bWVudCwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWQgdmFsdWUgPSB2YWx1ZVRvRGlj
dGlvbmFyeShbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgYXJndW1lbnQsIGV4Y2VwdGlvbik7
CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmFyZ3VtZW50
TnVtYmVyXTsKICAgICB9CiB9OwpAQCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoKIGNsYXNzIENh
bGxiYWNrUmVzdWx0Vm9pZCA6IHB1YmxpYyBDYWxsYmFja1Jlc3VsdCB7CiAgICAgdmlydHVhbCBK
U1ZhbHVlUmVmIGdldChOU0ludm9jYXRpb24gKiwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVl
UmVmKikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdKTsKICAgICB9CiB9Owog
CkBAIC0yOTQsNyArMjk0LDcgQEAgY2xhc3MgQ2FsbGJhY2tSZXN1bHROdW1lcmljIDogcHVibGlj
IENhbAogICAgIHsKICAgICAgICAgVCB2YWx1ZTsKICAgICAgICAgW2ludm9jYXRpb24gZ2V0UmV0
dXJuVmFsdWU6JnZhbHVlXTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRl
eHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlTnVtYmVyKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCB2YWx1ZSk7CiAgICAgfQog
fTsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIGNsYXNzIENhbGxiYWNrUmVzdWx0Qm9vbGVhbiA6IHB1
YmxpYyBDYWwKICAgICB7CiAgICAgICAgIGJvb2wgdmFsdWU7CiAgICAgICAgIFtpbnZvY2F0aW9u
IGdldFJldHVyblZhbHVlOiZ2YWx1ZV07Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xl
YW4oY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VCb29sZWFuKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCB2YWx1ZSk7
CiAgICAgfQogfTsKIApAQCAtNDg5LDcgKzQ4OSw3IEBAIHN0YXRpYyBKU0NsYXNzUmVmIG9iakND
YWxsYmFja0Z1bmN0aW9uQ2wKIAogSlNWYWx1ZVJlZiBPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y2Fs
bChKU0NvbnRleHQgKmNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBjb250ZXh0SW50
ZXJuYWxDb250ZXh0KGNvbnRleHQpOworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVm
ID0gW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl07CiAKICAgICBzaXplX3QgZmlyc3RBcmd1bWVu
dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewpAQCAtNTgyLDEwICs1ODIsMTAgQEAgc3RhdGljIEpT
T2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRgogICAgIC8vIFRoZSByZXN1bHQgc2hvdWxk
IGJlIGEgcmVndWxhciBob3N0IGZ1bmN0aW9uLCByYXRoZXIgdGhhbiBhIGNhbGxhYmxlIEMgQVBJ
IG9iamVjdC4KICAgICAvLyBQYXRjaCBpbiB0aGUgcmlnaHQgbGVuZ3RoICYgW1Byb3RvdHlwZV0g
dmFsdWVzIGZvciBub3csIGJ1dCBzaG91bGQgZml4IHRoaXMuCiAgICAgLy8gRnVuY3Rpb24ucHJv
dG90eXBlLnRvU3RyaW5nIGN1cnJlbnRseSBmYWlscywgc2luY2UgdGhpcyBpcyBub3QgeWV0IGEg
c3ViY2xhc3Mgb2YgZnVuY3RvbiwgYnV0IGNhbGwgJiBhcHBseSBkbyB3b3JrLgotICAgIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHRJbnRlcm5hbENvbnRl
eHQoY29udGV4dCksIG9iakNDYWxsYmFja0Z1bmN0aW9uQ2xhc3MoKSwgbmV3IE9iakNDYWxsYmFj
a0Z1bmN0aW9uKGNvbnRleHQsIGludm9jYXRpb24sIHR5cGUsIGluc3RhbmNlQ2xhc3MsIGFyZ3Vt
ZW50cy5yZWxlYXNlKCksIHJlc3VsdC5yZWxlYXNlKCkpKTsKKyAgICBKU09iamVjdFJlZiBmdW5j
dGlvbk9iamVjdCA9IEpTT2JqZWN0TWFrZShbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgb2Jq
Q0NhbGxiYWNrRnVuY3Rpb25DbGFzcygpLCBuZXcgT2JqQ0NhbGxiYWNrRnVuY3Rpb24oY29udGV4
dCwgaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgYXJndW1lbnRzLnJlbGVhc2UoKSwg
cmVzdWx0LnJlbGVhc2UoKSkpOwogICAgIEpTVmFsdWUgKnZhbHVlID0gW0pTVmFsdWUgdmFsdWVX
aXRoVmFsdWU6ZnVuY3Rpb25PYmplY3QgaW5Db250ZXh0OmNvbnRleHRdOwogICAgIHZhbHVlW0Ai
bGVuZ3RoIl0gPSBAKGFyZ3VtZW50Q291bnQpOwotICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKGNv
bnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIGZ1bmN0aW9uT2JqZWN0LCB2YWx1ZUludGVy
bmFsVmFsdWUoY29udGV4dFtAIkZ1bmN0aW9uIl1bQCJwcm90b3R5cGUiXSkpOworICAgIEpTT2Jq
ZWN0U2V0UHJvdG90eXBlKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBmdW5jdGlvbk9iamVj
dCwgdmFsdWVJbnRlcm5hbFZhbHVlKGNvbnRleHRbQCJGdW5jdGlvbiJdW0AicHJvdG90eXBlIl0p
KTsKICAgICB2YWx1ZVtAInRvU3RyaW5nIl0gPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIihm
dW5jdGlvbigpeyByZXR1cm4gJyIKICAgICAgICAgImZ1bmN0aW9uIDxPYmplY3RpdmUtQz4oKSB7
IiAiXFxuIgogICAgICAgICAiICAgIFtuYXRpdmUgY29kZV0iICAgICAgICAgICJcXG4iCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQ2NjApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0wNCAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBj
b250ZXh0SW50ZXJuYWxDb250ZXh0IGZyb20gSlNDb250ZXh0SW50ZXJuYWwuaAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMzU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZG9uJ3QgbmVlZCBpdCBh
bnkgbW9yZSBzaW5jZSB3ZSBoYXZlIGdsb2JhbENvbnRleHRSZWYgaW4gSlNDb250ZXh0LgorCisg
ICAgICAgICogV2ViVmlldy9XZWJTY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0
V29ybGQgc2NyaXB0V29ybGRGb3JKYXZhU2NyaXB0Q29udGV4dDpdKToKKwogMjAxMy0wMy0wNCAg
S3VuaWhpa28gU2FrYW1vdG8gIDxrc2FrYW1vdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFk
ZCBidWlsZCBmbGFnIGZvciBGb250TG9hZGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlNjcmlwdFdvcmxkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0V29ybGQubW0JKHJldmlzaW9uIDE0NDY1MSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMCw3
ICsxMTAsNyBAQCArIChXZWJTY3JpcHRXb3JsZCAqKXNjcmlwdFdvcmxkRm9yR2xvYmFsCiAjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKICsgKFdlYlNjcmlwdFdvcmxkICopc2NyaXB0V29ybGRGb3JK
YXZhU2NyaXB0Q29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewotICAgIHJldHVybiBbc2Vs
ZiBzY3JpcHRXb3JsZEZvckdsb2JhbENvbnRleHQ6Y29udGV4dEludGVybmFsQ29udGV4dChjb250
ZXh0KV07CisgICAgcmV0dXJuIFtzZWxmIHNjcmlwdFdvcmxkRm9yR2xvYmFsQ29udGV4dDpbY29u
dGV4dCBnbG9iYWxDb250ZXh0UmVmXV07CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>