<?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>15922</bug_id>
          
          <creation_ts>2007-11-09 07:55:40 -0800</creation_ts>
          <short_desc>Implement more of Mozilla Selection API</short_desc>
          <delta_ts>2007-11-10 12:33:07 -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>HTML Editing</component>
          <version>528+ (Nightly build)</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60778</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-09 07:55:40 -0800</bug_when>
    <thetext>Looks like there is still not much in common between WebKit and Firefox Selection objects.

Patch for more Firefox methods forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60780</commentid>
    <comment_count>1</comment_count>
      <attachid>17156</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-09 08:07:29 -0800</bug_when>
    <thetext>Created attachment 17156
proposed patch

What is the conceptual difference between DOMSelection, Selection and SelectionController? Looks like we may have too many of those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60782</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-09 08:32:13 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; What is the conceptual difference between DOMSelection, Selection and
&gt; SelectionController? Looks like we may have too many of those.

DOMSelection is the DOM&apos;s &quot;selection object&quot; API. It has the same relationship to SelectionController that DOMWindow has to Frame. Right now there&apos;s a problem in that we were &quot;grooming&quot; SelectionController to be this DOM object. So it has many functions that should simply be moved into DOMSelection. I think it&apos;s worthwhile to break out the DOM API just as we break out many aspects of the Frame object.

Selection vs. SelectionController is another story. Selection is supposed to be an object that represents &quot;a selection&quot;; not necessarily what is selected right at this moment in a frame. A sort of &quot;super-DOMRange&quot;. SelectionController, on the other hand, is &quot;the selection management for a particular frame&quot;. However, there is some ancient code that uses SelectionController in the way we intend to use Selection, making a copy of it and modifying it. That should go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60841</commentid>
    <comment_count>3</comment_count>
      <attachid>17156</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-10 12:17:41 -0800</bug_when>
    <thetext>Comment on attachment 17156
proposed patch

r=me

But this is following the wrong pattern: We want to move the DOM operations into DOMSelection and not add them all to SelectionController unless they are somehow more generally useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60843</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-10 12:33:07 -0800</bug_when>
    <thetext>Committed revision 27666.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17156</attachid>
            <date>2007-11-09 08:07:29 -0800</date>
            <delta_ts>2007-11-10 12:17:41 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>15922r1_patch.txt</filename>
            <type>text/plain</type>
            <size>25702</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzY0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDctMTEtMDkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBueXBv
cC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjIKKyAgICAgICAgSW1w
bGVtZW50IG1vcmUgb2YgTW96aWxsYSBTZWxlY3Rpb24gQVBJCisKKyAgICAgICAgVGVzdHM6IGVk
aXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zTm9kZS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5n
L3NlbGVjdGlvbi9kZWxldGVGcm9tRG9jdW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZWRpdGlu
Zy9zZWxlY3Rpb24vZXh0ZW5kLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdEFsbENoaWxkcmVuLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpkZWxl
dGVGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6
Y29udGFpbnNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNl
bGVjdEFsbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6
OmV4dGVuZCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIEFkZGVkIGRlbGV0ZUZyb21Eb2N1bWVudCgpLCBjb250YWluc05vZGUoKSwgYW5kIHNlbGVj
dEFsbENoaWxkcmVuKCkuIFJlaW1wbGVtZW50ZWQgZXh0ZW5kKCksCisgICAgICAgIHdoaWNoIGV4
aXN0ZWQsIGJ1dCBkaWRuJ3QgbWF0Y2ggRmlyZWZveCBiZWhhdmlvciBhbmQgd2Fzbid0IGV4cG9z
ZWQgdmlhIGJpbmRpbmdzLgorICAgICAgICBSZW1vdmVkIGEgY29tbWVudCBtZW50aW9uaW5nIHJl
bW92ZVJhbmdlKCksIGFzIHRoaXMgbWV0aG9kIG1ha2VzIG5vIHNlbnNlIHdpdGhvdXQgbXVsdGlw
bGUKKyAgICAgICAgc2VsZWN0aW9uIHJhbmdlIHN1cHBvcnQuCisKKyAgICAgICAgKiBwYWdlL0RP
TVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmV4dGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmNvbnRhaW5zTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01TZWxlY3Rpb246OnNlbGVjdEFsbENoaWxkcmVuKToKKyAgICAgICAgKiBwYWdl
L0RPTVNlbGVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmlkbDoKKyAgICAg
ICAgRXhwb3NlZCB0aGUgbmV3IG1ldGhvZHMuCisKIDIwMDctMTEtMDkgIFNpbW9uIEhhdXNtYW5u
ICA8aGF1c21hbm5Aa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBub2JvZHksIGJ1aWxk
L2xpbmsgZml4IGZvciBRdC9XaW5kb3dzLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjc2MzcpCisrKyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNCw2ICs4MjQsNjEgQEAgdm9p
ZCBTZWxlY3Rpb25Db250cm9sbGVyOjphZGRSYW5nZShjb25zdAogICAgIH0KIH0KIAordm9pZCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpkZWxldGVGcm9tRG9jdW1lbnQoKQoreworICAgIGlmIChpc05v
bmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGlzQ29sbGFwc2VkKCkpCisgICAgICAg
IG1vZGlmeShFWFRFTkQsIEJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisKKyAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBtX3NlbC50b1JhbmdlKCk7CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBzZWxlY3RlZFJhbmdlLT5kZWxldGVDb250ZW50cyhlYyk7
CisgICAgQVNTRVJUKCFlYyk7CisgICAgCisgICAgc2V0QmFzZUFuZEV4dGVudChzZWxlY3RlZFJh
bmdlLT5zdGFydENvbnRhaW5lcihlYyksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KGVjKSwg
c2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9m
ZnNldChlYyksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKworYm9vbCBTZWxlY3Rpb25Db250
cm9sbGVyOjpjb250YWluc05vZGUoY29uc3QgTm9kZSogbiwgYm9vbCBhbGxvd1BhcnRpYWwpIGNv
bnN0Cit7CisgICAgaWYgKCFuIHx8IGlzTm9uZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBOb2RlKiBwYXJlbnROb2RlID0gbi0+cGFyZW50Tm9kZSgpOworICAgIHVuc2lnbmVkIG5v
ZGVJbmRleCA9IG4tPm5vZGVJbmRleCgpOworICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5n
ZSA9IG1fc2VsLnRvUmFuZ2UoKTsKKworICAgIGlmICghcGFyZW50Tm9kZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYm9vbCBub2RlRnVs
bHlTZWxlY3RlZCA9IFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMocGFyZW50Tm9kZSwgbm9k
ZUluZGV4LCBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyksIHNlbGVjdGVkUmFuZ2Ut
PnN0YXJ0T2Zmc2V0KGVjKSkgPj0gMAorICAgICAgICAmJiBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5
UG9pbnRzKHBhcmVudE5vZGUsIG5vZGVJbmRleCArIDEsIHNlbGVjdGVkUmFuZ2UtPmVuZENvbnRh
aW5lcihlYyksIHNlbGVjdGVkUmFuZ2UtPmVuZE9mZnNldChlYykpIDw9IDA7CisgICAgQVNTRVJU
KCFlYyk7CisgICAgaWYgKG5vZGVGdWxseVNlbGVjdGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGJvb2wgbm9kZUZ1bGx5VW5zZWxlY3RlZCA9IFJhbmdlOjpjb21wYXJlQm91bmRhcnlQ
b2ludHMocGFyZW50Tm9kZSwgbm9kZUluZGV4LCBzZWxlY3RlZFJhbmdlLT5lbmRDb250YWluZXIo
ZWMpLCBzZWxlY3RlZFJhbmdlLT5lbmRPZmZzZXQoZWMpKSA+IDAKKyAgICAgICAgfHwgUmFuZ2U6
OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhwYXJlbnROb2RlLCBub2RlSW5kZXggKyAxLCBzZWxlY3Rl
ZFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KGVj
KSkgPCAwOworICAgIEFTU0VSVCghZWMpOworICAgIGlmIChub2RlRnVsbHlVbnNlbGVjdGVkKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYWxsb3dQYXJ0aWFsIHx8IG4tPmlz
VGV4dE5vZGUoKTsKK30KKwordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZWxlY3RBbGxDaGls
ZHJlbihOb2RlKiBuLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW4pCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRoaXMgZG9lc24ndCAoYW5kIHNob3VsZG4ndCkgc2VsZWN0IHRl
eHQgbm9kZSBjaGFyYWN0ZXJzLgorICAgIHNldEJhc2VBbmRFeHRlbnQobiwgMCwgbiwgbi0+Y2hp
bGROb2RlQ291bnQoKSwgZWMpOworfQorCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldEJh
c2VBbmRFeHRlbnQoTm9kZSAqYmFzZU5vZGUsIGludCBiYXNlT2Zmc2V0LCBOb2RlICpleHRlbnRO
b2RlLCBpbnQgZXh0ZW50T2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoYmFz
ZU9mZnNldCA8IDAgfHwgZXh0ZW50T2Zmc2V0IDwgMCkgewpAQCAtODY5LDEzICs5MjQsMjAgQEAg
dm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjplbXB0eSgpCiAgICAgbW92ZVRvKFZpc2libGVQb3Np
dGlvbigpKTsKIH0KIAotdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpleHRlbmQoTm9kZSAqbm9k
ZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OmV4dGVuZChOb2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChvZmZzZXQg
PCAwCisgICAgICAgIHx8IG5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygpICYmIG9mZnNldCA+IG5v
ZGUtPmNhcmV0TWF4T2Zmc2V0KCkKKyAgICAgICAgfHwgIW5vZGUtPm9mZnNldEluQ2hhcmFjdGVy
cygpICYmIG9mZnNldCA+IChpbnQpbm9kZS0+Y2hpbGROb2RlQ291bnQoKSkgewogICAgICAgICBl
YyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1vdmVUbyhW
aXNpYmxlUG9zaXRpb24obm9kZSwgb2Zmc2V0LCBET1dOU1RSRUFNKSk7CisgICAgbV9zZWwuZXhw
YW5kVXNpbmdHcmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgc2V0RXh0ZW50
KFZpc2libGVQb3NpdGlvbihub2RlLCBvZmZzZXQsIERPV05TVFJFQU0pKTsKIH0KIAogdm9pZCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpsYXlvdXQoKQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5oCShyZXZpc2lvbiAyNzYzNykKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBtb2RpZnkoY29uc3QgU3RyaW5nJiBhbHRlclN0cmluZywgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb25TdHJpbmcsIGNvbnN0IFN0cmluZyYgZ3JhbnVsYXJpdHlTdHJpbmcsIGJvb2wg
dXNlclRyaWdnZXJlZCA9IGZhbHNlKTsKICAgICAKICAgICAvLyBNb3ppbGxhIFNlbGVjdGlvbiBP
YmplY3QgQVBJCi0gICAgLy8gSW4gRmlyZUZveCwgYW5jaG9yL2ZvY3VzIGFyZSB0aGUgZXF1YWwg
dG8gdGhlIHN0YXJ0L2VuZCBvZiB0aGUgc2VsZWN0aW9uLAorICAgIC8vIEluIEZpcmVmb3gsIGFu
Y2hvci9mb2N1cyBhcmUgdGhlIGVxdWFsIHRvIHRoZSBzdGFydC9lbmQgb2YgdGhlIHNlbGVjdGlv
biwKICAgICAvLyBidXQgcmVmbGVjdCB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIHRoZSBzZWxlY3Rp
b24gd2FzIG1hZGUgYnkgdGhlIHVzZXIuICBUaGF0IGRvZXMKICAgICAvLyBub3QgbWVhbiB0aGF0
IHRoZXkgYXJlIGJhc2UvZXh0ZW50LCBzaW5jZSB0aGUgYmFzZS9leHRlbnQgZG9uJ3QgcmVmbGVj
dAogICAgIC8vIGV4cGFuc2lvbi4KQEAgLTEzNCwxMCArMTM0LDkgQEAgcHVibGljOgogICAgIGlu
dCByYW5nZUNvdW50KCkgY29uc3QgeyByZXR1cm4gIWlzTm9uZSgpID8gMSA6IDA7IH0KICAgICB2
b2lkIHJlbW92ZUFsbFJhbmdlcygpOwogICAgIHZvaWQgYWRkUmFuZ2UoY29uc3QgUmFuZ2UqKTsK
LSAgICAvL3ZvaWQgZGVsZXRlRnJvbURvY3VtZW50KCk7Ci0gICAgLy9ib29sIGNvbnRhaW5zTm9k
ZShOb2RlICpub2RlLCBib29sIGVudGlyZWx5Q29udGFpbmVkKTsKLSAgICAvL3ZvaWQgc2VsZWN0
QWxsQ2hpbGRyZW4oY29uc3QgTm9kZSAqKTsKLSAgICAvL3ZvaWQgcmVtb3ZlUmFuZ2UoY29uc3Qg
UmFuZ2UgKik7CisgICAgdm9pZCBkZWxldGVGcm9tRG9jdW1lbnQoKTsKKyAgICBib29sIGNvbnRh
aW5zTm9kZShjb25zdCBOb2RlKiwgYm9vbCBhbGxvd1BhcnRpYWwpIGNvbnN0OworICAgIHZvaWQg
c2VsZWN0QWxsQ2hpbGRyZW4oTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAgICAvLyBN
aWNyb3NvZnQgU2VsZWN0aW9uIE9iamVjdCBBUEkKICAgICB2b2lkIGVtcHR5KCk7CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RE9NU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjc2MzcpCisrKyBXZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDYgKzE4NiwxMyBAQCB2b2lkIERPTVNl
bGVjdGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmluZyYgCiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uQ29u
dHJvbGxlcigpLT5tb2RpZnkoYWx0ZXIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogfQogCit2
b2lkIERPTVNlbGVjdGlvbjo6ZXh0ZW5kKE5vZGUqIG4sIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnJh
bWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+ZXh0ZW5kKG4sIG9mZnNldCwgZWMpOworfQorCiBQ
YXNzUmVmUHRyPFJhbmdlPiBET01TZWxlY3Rpb246OmdldFJhbmdlQXQoaW50IGluZGV4LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fZnJhbWUpCkBAIC0yMDcsNiArMjE0LDI3IEBA
IHZvaWQgRE9NU2VsZWN0aW9uOjphZGRSYW5nZShSYW5nZSogcmFuZ2UKICAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb25Db250cm9sbGVyKCktPmFkZFJhbmdlKHJhbmdlKTsKIH0KIAordm9pZCBET01TZWxl
Y3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCgpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAg
ICByZXR1cm47CisgICAgbV9mcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5kZWxldGVGcm9t
RG9jdW1lbnQoKTsKK30KKworYm9vbCBET01TZWxlY3Rpb246OmNvbnRhaW5zTm9kZShjb25zdCBO
b2RlKiBuLCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9mcmFtZS0+c2VsZWN0aW9uQ29udHJv
bGxlcigpLT5jb250YWluc05vZGUobiwgYWxsb3dQYXJ0aWFsKTsKK30KKwordm9pZCBET01TZWxl
Y3Rpb246OnNlbGVjdEFsbENoaWxkcmVuKE5vZGUqIG4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnJhbWUtPnNlbGVjdGlv
bkNvbnRyb2xsZXIoKS0+c2VsZWN0QWxsQ2hpbGRyZW4obiwgZWMpOworfQorCiBTdHJpbmcgRE9N
U2VsZWN0aW9uOjp0b1N0cmluZygpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogV2ViQ29y
ZS9wYWdlL0RPTVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01TZWxl
Y3Rpb24uaAkocmV2aXNpb24gMjc2MzcpCisrKyBXZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzZXRQb3NpdGlvbihOb2RlKiwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgICAgICB2b2lkIHNldFBvc2l0aW9uKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
ICAgIHZvaWQgbW9kaWZ5KGNvbnN0IFN0cmluZyYgYWx0ZXIsIGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uLCBjb25zdCBTdHJpbmcmIGdyYW51bGFyaXR5KTsKKyAgICAgICAgdm9pZCBleHRlbmQoTm9k
ZSosIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgUGFzc1JlZlB0cjxSYW5n
ZT4gZ2V0UmFuZ2VBdChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCByZW1vdmVB
bGxSYW5nZXMoKTsKICAgICAgICAgdm9pZCBhZGRSYW5nZShSYW5nZSopOworICAgICAgICB2b2lk
IGRlbGV0ZUZyb21Eb2N1bWVudCgpOworICAgICAgICBib29sIGNvbnRhaW5zTm9kZShjb25zdCBO
b2RlKiwgYm9vbCBwYXJ0bHlDb250YWluZWQpIGNvbnN0OworICAgICAgICB2b2lkIHNlbGVjdEFs
bENoaWxkcmVuKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgU3RyaW5nIHRvU3Ry
aW5nKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCShyZXZpc2lvbiAyNzYzNykKKysrIFdl
YkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUs
MTggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICAgICAgICAgdm9pZCBjb2xsYXBzZVRvRW5kKCk7CiAgICAgICAgIHZvaWQgY29sbGFwc2VUb1N0
YXJ0KCk7CisgICAgICAgIHZvaWQgZGVsZXRlRnJvbURvY3VtZW50KCk7CisgICAgICAgIGJvb2xl
YW4gY29udGFpbnNOb2RlKGluIE5vZGUgbm9kZSwgaW4gYm9vbGVhbiBhbGxvd1BhcnRpYWwpOwor
ICAgICAgICB2b2lkIHNlbGVjdEFsbENoaWxkcmVuKGluIE5vZGUgbm9kZSkKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIGVtcHR5KCk7CiAgICAgICAgIHZv
aWQgc2V0QmFzZUFuZEV4dGVudChpbiBOb2RlIGJhc2VOb2RlLCBpbiBsb25nIGJhc2VPZmZzZXQs
IGluIE5vZGUgZXh0ZW50Tm9kZSwgaW4gbG9uZyBleHRlbnRPZmZzZXQpCiAgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRQb3NpdGlvbihpbiBOb2RlIG5v
ZGUsIGluIFtPcHRpb25hbF0gbG9uZyBvZmZzZXQpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKICAgICAgICAgdm9pZCBtb2RpZnkoaW4gRE9NU3RyaW5nIGFsdGVyLCBpbiBET01T
dHJpbmcgZGlyZWN0aW9uLCBpbiBET01TdHJpbmcgZ3JhbnVsYXJpdHkpOworICAgICAgICB2b2lk
IGV4dGVuZChpbiBOb2RlIG5vZGUsIGluIGxvbmcgb2Zmc2V0KQorICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFJhbmdlIGdldFJhbmdlQXQoaW4gbG9uZyBpbmRleCkK
ICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZUFs
bFJhbmdlcygpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc2NDYpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwNy0xMS0wOSAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQG55cG9wLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTkyMgorICAgICAgICBJbXBsZW1lbnQgbW9yZSBvZiBNb3ppbGxhIFNlbGVjdGlvbiBB
UEkKKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zTm9kZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zTm9kZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9kZWxldGVGcm9tRG9jdW1lbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9kZWxldGVG
cm9tRG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdEFsbENo
aWxkcmVuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0QWxsQ2hpbGRyZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKwogMjAwNy0xMS0wOCAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zTm9kZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnNO
b2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NvbnRhaW5zTm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjYgQEAKK2Zvb2JhcmJhegorU3VjY2Vzczogcy5jb250YWluc05vZGUobnVsbCwgZmFsc2UpIGlz
IGZhbHNlLgorU3VjY2Vzczogcy5jb250YWluc05vZGUobnVsbCwgdHJ1ZSkgaXMgZmFsc2UuCitT
dWNjZXNzOiBzLmNvbnRhaW5zTm9kZSh0ZXN0RGl2LCBmYWxzZSkgaXMgZmFsc2UuCitTdWNjZXNz
OiBzLmNvbnRhaW5zTm9kZSh0ZXN0RGl2LCB0cnVlKSBpcyB0cnVlLgorU3VjY2Vzczogcy5jb250
YWluc05vZGUoc3BhbjEsIGZhbHNlKSBpcyBmYWxzZS4KK1N1Y2Nlc3M6IHMuY29udGFpbnNOb2Rl
KHNwYW4xLCB0cnVlKSBpcyB0cnVlLgorU3VjY2Vzczogcy5jb250YWluc05vZGUoc3BhbjIuZmly
c3RDaGlsZCwgZmFsc2UpIGlzIHRydWUuCitTdWNjZXNzOiBzLmNvbnRhaW5zTm9kZShzcGFuMi5m
aXJzdENoaWxkLCB0cnVlKSBpcyB0cnVlLgorU3VjY2Vzczogcy5jb250YWluc05vZGUoc3BhbjMu
Zmlyc3RDaGlsZCwgZmFsc2UpIGlzIGZhbHNlLgorU3VjY2Vzczogcy5jb250YWluc05vZGUoc3Bh
bjMuZmlyc3RDaGlsZCwgdHJ1ZSkgaXMgZmFsc2UuCitTdWNjZXNzOiBzLmNvbnRhaW5zTm9kZShk
b2N1bWVudCwgZmFsc2UpIGlzIGZhbHNlLgorU3VjY2Vzczogcy5jb250YWluc05vZGUoZG9jdW1l
bnQuYm9keSwgdHJ1ZSkgaXMgdHJ1ZS4KK1N1Y2Nlc3M6IHMuY29udGFpbnNOb2RlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiksIGZhbHNlKSBpcyBmYWxzZS4KK1N1Y2Nlc3M6IHMu
Y29udGFpbnNOb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiksIHRydWUpIGlz
IGZhbHNlLgorU3VjY2Vzczogcy5jb250YWluc05vZGUoZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
Y3JlYXRlRG9jdW1lbnRUeXBlKCJuYW1lIiwgIiIsICIiKSwgdHJ1ZSkgaXMgZmFsc2UuCitTdWNj
ZXNzOiBzLmNvbnRhaW5zTm9kZShzcGFuMi5maXJzdENoaWxkLCBmYWxzZSkgaXMgdHJ1ZS4KK1N1
Y2Nlc3M6IHMuY29udGFpbnNOb2RlKHNwYW4yLmZpcnN0Q2hpbGQsIHRydWUpIGlzIHRydWUuCitT
dWNjZXNzOiBzLmNvbnRhaW5zTm9kZShzcGFuMiwgZmFsc2UpIGlzIGZhbHNlLgorU3VjY2Vzczog
cy5jb250YWluc05vZGUoc3BhbjIsIHRydWUpIGlzIHRydWUuCitTdWNjZXNzOiBzLmNvbnRhaW5z
Tm9kZShzcGFuMSwgZmFsc2UpIGlzIGZhbHNlLgorU3VjY2Vzczogcy5jb250YWluc05vZGUoc3Bh
bjEsIHRydWUpIGlzIHRydWUuCitTdWNjZXNzOiBzLmNvbnRhaW5zTm9kZShzcGFuMiwgZmFsc2Up
IGlzIHRydWUuCitTdWNjZXNzOiBzLmNvbnRhaW5zTm9kZShzcGFuMi5maXJzdENoaWxkLCBmYWxz
ZSkgaXMgdHJ1ZS4KK1N1Y2Nlc3M6IHMuY29udGFpbnNOb2RlKHNwYW4zLCBmYWxzZSkgaXMgZmFs
c2UuCitTdWNjZXNzOiBzLmNvbnRhaW5zTm9kZShzcGFuMywgdHJ1ZSkgaXMgdHJ1ZS4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zTm9k
ZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9w
bGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnNOb2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnNOb2RlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jb250YWluc05vZGUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3OCBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiPjxz
cGFuIGlkPSJzcGFuMSI+Zm9vPHNwYW4gaWQ9InNwYW4yIj5iYXI8L3NwYW4+PC9zcGFuPjxzcGFu
IGlkPSJzcGFuMyI+YmF6PC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit2YXIgdGVzdERpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7Cit2YXIgc3BhbjEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3BhbjEiKTsKK3ZhciBzcGFuMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzcGFuMiIpOwordmFyIHNwYW4zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW4zIik7
CisKK2Z1bmN0aW9uIGxvZyhzdHIpIHsKKyAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0
cikpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQo
bGkpOworfQorCitmdW5jdGlvbiBzaG91bGRCZShleHByLCBleHBlY3RlZCkgeworICAgIHZhciBh
Y3R1YWwgPSBldmFsKGV4cHIpOworICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAg
IGxvZygiRmFpbHVyZTogIiArIGV4cHIgKyAiIHNob3VsZCBiZSAiICsgZXhwZWN0ZWQgKyAiLCB3
YXMgIiArIGFjdHVhbCArICIuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIlN1Y2Nlc3M6ICIg
KyBleHByICsgIiBpcyAiICsgZXhwZWN0ZWQgKyAiLiIpOworfQorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KwordmFyIHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworCisvLyBzZWxlY3Qgc3BhbjIKK3Iu
c2V0U3RhcnQoc3BhbjEsIDEpOworci5zZXRFbmQoc3BhbjEsIDIpOworcy5hZGRSYW5nZShyKTsK
Kworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKG51bGwsIGZhbHNlKScsIGZhbHNlKTsKK3Nob3Vs
ZEJlKCdzLmNvbnRhaW5zTm9kZShudWxsLCB0cnVlKScsIGZhbHNlKTsKK3Nob3VsZEJlKCdzLmNv
bnRhaW5zTm9kZSh0ZXN0RGl2LCBmYWxzZSknLCBmYWxzZSk7CitzaG91bGRCZSgncy5jb250YWlu
c05vZGUodGVzdERpdiwgdHJ1ZSknLCB0cnVlKTsKK3Nob3VsZEJlKCdzLmNvbnRhaW5zTm9kZShz
cGFuMSwgZmFsc2UpJywgZmFsc2UpOworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4xLCB0
cnVlKScsIHRydWUpOworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4yLmZpcnN0Q2hpbGQs
IGZhbHNlKScsIHRydWUpOworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4yLmZpcnN0Q2hp
bGQsIHRydWUpJywgdHJ1ZSk7CitzaG91bGRCZSgncy5jb250YWluc05vZGUoc3BhbjMuZmlyc3RD
aGlsZCwgZmFsc2UpJywgZmFsc2UpOworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4zLmZp
cnN0Q2hpbGQsIHRydWUpJywgZmFsc2UpOworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKGRvY3Vt
ZW50LCBmYWxzZSknLCBmYWxzZSk7CitzaG91bGRCZSgncy5jb250YWluc05vZGUoZG9jdW1lbnQu
Ym9keSwgdHJ1ZSknLCB0cnVlKTsKK3Nob3VsZEJlKCdzLmNvbnRhaW5zTm9kZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLCBmYWxzZSknLCBmYWxzZSk7CitzaG91bGRCZSgncy5j
b250YWluc05vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKSwgdHJ1ZSknLCBm
YWxzZSk7CitzaG91bGRCZSgncy5jb250YWluc05vZGUoZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
Y3JlYXRlRG9jdW1lbnRUeXBlKCJuYW1lIiwgIiIsICIiKSwgdHJ1ZSknLCBmYWxzZSk7CisKKy8v
IHBhcnRpYWxseSBzZWxlY3QgYSB0ZXh0IG5vZGUKK3Iuc2V0U3RhcnQoc3BhbjIuZmlyc3RDaGls
ZCwgMSk7CityLnNldEVuZChzcGFuMi5maXJzdENoaWxkLCAyKTsKK3MucmVtb3ZlQWxsUmFuZ2Vz
KCk7CitzLmFkZFJhbmdlKHIpOworCitzaG91bGRCZSgncy5jb250YWluc05vZGUoc3BhbjIuZmly
c3RDaGlsZCwgZmFsc2UpJywgdHJ1ZSk7CitzaG91bGRCZSgncy5jb250YWluc05vZGUoc3BhbjIu
Zmlyc3RDaGlsZCwgdHJ1ZSknLCB0cnVlKTsKK3Nob3VsZEJlKCdzLmNvbnRhaW5zTm9kZShzcGFu
MiwgZmFsc2UpJywgZmFsc2UpOworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4yLCB0cnVl
KScsIHRydWUpOworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4xLCBmYWxzZSknLCBmYWxz
ZSk7CitzaG91bGRCZSgncy5jb250YWluc05vZGUoc3BhbjEsIHRydWUpJywgdHJ1ZSk7CisKKy8v
IHNlbGVjdCBzZXZlcmFsIG5vZGVzCityLnNldFN0YXJ0KHNwYW4xLmZpcnN0Q2hpbGQsIDEpOwor
ci5zZXRFbmQoc3BhbjMuZmlyc3RDaGlsZCwgMik7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5h
ZGRSYW5nZShyKTsKKworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4yLCBmYWxzZSknLCB0
cnVlKTsKK3Nob3VsZEJlKCdzLmNvbnRhaW5zTm9kZShzcGFuMi5maXJzdENoaWxkLCBmYWxzZSkn
LCB0cnVlKTsKK3Nob3VsZEJlKCdzLmNvbnRhaW5zTm9kZShzcGFuMywgZmFsc2UpJywgZmFsc2Up
Oworc2hvdWxkQmUoJ3MuY29udGFpbnNOb2RlKHNwYW4zLCB0cnVlKScsIHRydWUpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zTm9kZS5odG1sCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3Zu
Om1pbWUtdHlwZQogICArIHRleHQvaHRtbAoKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZGVsZXRlRnJvbURvY3VtZW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZy
b21Eb2N1bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorZnoK
K1N1Y2Nlc3M6IHNwYW4xLnRleHRDb250ZW50IGlzIGZvb2FyLgorU3VjY2Vzczogc3BhbjEudGV4
dENvbnRlbnQgaXMgZm9hci4KK1N1Y2Nlc3M6IHNwYW4xLnRleHRDb250ZW50IGlzIGZvYXIuCitT
dWNjZXNzOiBzcGFuMS5maXJzdENoaWxkLm5leHRTaWJsaW5nLmlkIGlzIHNwYW4yLgorU3VjY2Vz
czogc3BhbjEuZmlyc3RDaGlsZC5uZXh0U2libGluZy5maXJzdENoaWxkLm5vZGVWYWx1ZSBpcyAu
CitTdWNjZXNzOiB0ZXN0LnRleHRDb250ZW50IGlzIGZ6LgoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZGVsZXRlRnJvbURvY3VtZW50LWV4cGVjdGVk
LnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6
IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9kZWxldGVGcm9tRG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9kZWxldGVGcm9tRG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RlbGV0ZUZyb21Eb2N1bWVudC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
dGVzdCI+PHNwYW4gaWQ9InNwYW4xIj5mb288c3BhbiBpZD0ic3BhbjIiPmJhcjwvc3Bhbj48L3Nw
YW4+PHNwYW4gaWQ9InNwYW4zIj5iYXo8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciB0ZXN0
RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3ZhciBzcGFuMSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuMSIpOwordmFyIHNwYW4yID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNwYW4yIik7Cit2YXIgc3BhbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c3BhbjMiKTsKKworZnVuY3Rpb24gbG9nKHN0cikgeworICAgIHZhciBsaSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cHIsIGV4cGVjdGVkKSB7Cisg
ICAgdmFyIGFjdHVhbCA9IGV2YWwoZXhwcik7CisgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkK
KyAgICAgICAgbG9nKCJGYWlsdXJlOiAiICsgZXhwciArICIgc2hvdWxkIGJlICIgKyBleHBlY3Rl
ZCArICIsIHdhcyAiICsgYWN0dWFsICsgIi4iKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiU3Vj
Y2VzczogIiArIGV4cHIgKyAiIGlzICIgKyBleHBlY3RlZCArICIuIik7Cit9CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCit2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisKKworLy8gZGVsZXRl
IGEgY29sbGFwc2VkIHNlbGVjdGlvbgorci5zZXRTdGFydChzcGFuMi5maXJzdENoaWxkLCAxKTsK
K3Iuc2V0RW5kKHNwYW4yLmZpcnN0Q2hpbGQsIDEpOworcy5hZGRSYW5nZShyKTsKKworcy5kZWxl
dGVGcm9tRG9jdW1lbnQoKQorc2hvdWxkQmUoJ3NwYW4xLnRleHRDb250ZW50JywgJ2Zvb2FyJyk7
Cit0cnkgeworICBzLmRlbGV0ZUZyb21Eb2N1bWVudCgpCisgIHNob3VsZEJlKCdzcGFuMS50ZXh0
Q29udGVudCcsICdmb2FyJyk7Cit9IGNhdGNoIChleCkgeworICBsb2coZXgpOworfQorCisKKy8v
IHRyeSB0byBkZWxldGUgYSBjb2xsYXBzZWQgc2VsZWN0aW9uIGF0IHRoZSBzdGFydAorci5zZXRT
dGFydChzcGFuMS5maXJzdENoaWxkLCAwKTsKK3Iuc2V0RW5kKHNwYW4xLmZpcnN0Q2hpbGQsIDAp
Oworcy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7CisKK3RyeSB7CisgIHMuZGVs
ZXRlRnJvbURvY3VtZW50KCkKKyAgc2hvdWxkQmUoJ3NwYW4xLnRleHRDb250ZW50JywgJ2ZvYXIn
KTsKK30gY2F0Y2ggKGV4KSB7CisgIGxvZyhleCk7Cit9CisKKworLy8gZGVsZXRlIHdob2xlIGNv
bnRlbnRzCityLnNldFN0YXJ0KHNwYW4yLmZpcnN0Q2hpbGQsIDApOworci5zZXRFbmQoc3BhbjIu
Zmlyc3RDaGlsZCwgMik7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsKKwor
cy5kZWxldGVGcm9tRG9jdW1lbnQoKQorc2hvdWxkQmUoJ3NwYW4xLmZpcnN0Q2hpbGQubmV4dFNp
YmxpbmcuaWQnLCAnc3BhbjInKTsKK3Nob3VsZEJlKCdzcGFuMS5maXJzdENoaWxkLm5leHRTaWJs
aW5nLmZpcnN0Q2hpbGQubm9kZVZhbHVlJywgJycpOworCisKKy8vIHBhcnRpYWxseSBkZWxldGUg
dHdvIG5vZGVzCityLnNldFN0YXJ0KHNwYW4xLmZpcnN0Q2hpbGQsIDEpOworci5zZXRFbmQoc3Bh
bjMuZmlyc3RDaGlsZCwgMik7CitzLnJlbW92ZUFsbFJhbmdlcygpOworcy5hZGRSYW5nZShyKTsK
Kworcy5kZWxldGVGcm9tRG9jdW1lbnQoKQorc2hvdWxkQmUoJ3Rlc3QudGV4dENvbnRlbnQnLCAn
ZnonKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kZWxldGVGcm9tRG9jdW1lbnQuaHRtbApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK2Zvb2JhcmJhegorU3VjY2Vzczog
d2luZG93LmdldFNlbGVjdGlvbigpIGlzIGFyLgorU3VjY2Vzczogcy5leHRlbmQoc3BhbjIuZmly
c3RDaGlsZCwgNCkgcmFpc2VkIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
LgorU3VjY2Vzczogcy5leHRlbmQoc3BhbjIuZmlyc3RDaGlsZCwgLTEpIHJhaXNlZCBFcnJvcjog
SU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK1N1Y2Nlc3M6IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKSBpcyBiLgorU3VjY2Vzczogd2luZG93LmdldFNlbGVjdGlvbigpIGlzIGFyYmF6Lgor
U3VjY2Vzczogcy5leHRlbmQoKSByYWlzZWQgRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgorU3VjY2Vzczogcy5leHRlbmQoc3BhbjMpIHJhaXNlZCBFcnJvcjogVFlQ
RV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitTdWNjZXNzOiBzLmV4dGVuZChudWxs
LCAwKSByYWlzZWQgRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5k
LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3Bs
YWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0
IEBACis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0idGVzdCI+PHNwYW4gaWQ9InNwYW4xIj5mb288
c3BhbiBpZD0ic3BhbjIiPmJhcjwvc3Bhbj48L3NwYW4+PHNwYW4gaWQ9InNwYW4zIj5iYXo8L3Nw
YW4+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgcyA9IHdp
bmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3QiKTsKK3ZhciBzcGFuMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuMSIp
OwordmFyIHNwYW4yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW4yIik7Cit2YXIgc3Bh
bjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BhbjMiKTsKKworZnVuY3Rpb24gbG9nKHN0
cikgeworICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZEJlKGV4cHIsIGV4cGVjdGVkKSB7CisgICAgdmFyIGFjdHVhbCA9IGV2YWwoZXhwcik7
CisgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJGYWlsdXJlOiAiICsg
ZXhwciArICIgc2hvdWxkIGJlICIgKyBleHBlY3RlZCArICIsIHdhcyAiICsgYWN0dWFsICsgIi4i
KTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiU3VjY2VzczogIiArIGV4cHIgKyAiIGlzICIgKyBl
eHBlY3RlZCArICIuIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGV4cHIpIHsKKyAgICB0
cnkgeworICAgICAgICBldmFsKGV4cHIpOworICAgICAgICBsb2coIkZhaWx1cmU6ICIgKyBleHBy
ICsgIiBkaWRuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIiArICIuIik7CisgICAgfSBjYXRjaCAoZXgp
IHsKKyAgICAgICAgbG9nKCJTdWNjZXNzOiAiICsgZXhwciArICIgcmFpc2VkICIgKyBleCArICIu
Iik7CisgICAgfQorfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIHIgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworCisKK3Iuc2V0U3RhcnQoc3BhbjIuZmlyc3RDaGlsZCwgMSk7CityLnNldEVu
ZChzcGFuMi5maXJzdENoaWxkLCAxKTsKK3MuYWRkUmFuZ2Uocik7CisKK3MuZXh0ZW5kKHNwYW4y
LmZpcnN0Q2hpbGQsIDMpOworc2hvdWxkQmUoJ3dpbmRvdy5nZXRTZWxlY3Rpb24oKScsICdhcicp
OworCitzaG91bGRUaHJvdygncy5leHRlbmQoc3BhbjIuZmlyc3RDaGlsZCwgNCknKTsKKworc2hv
dWxkVGhyb3coJ3MuZXh0ZW5kKHNwYW4yLmZpcnN0Q2hpbGQsIC0xKScpOworCitzLmV4dGVuZChz
cGFuMi5maXJzdENoaWxkLCAwKTsKK3Nob3VsZEJlKCd3aW5kb3cuZ2V0U2VsZWN0aW9uKCknLCAn
YicpOworCitzLmV4dGVuZChzcGFuMywgMSk7CitzaG91bGRCZSgnd2luZG93LmdldFNlbGVjdGlv
bigpJywgJ2FyYmF6Jyk7CisKK3Nob3VsZFRocm93KCdzLmV4dGVuZCgpJyk7CitzaG91bGRUaHJv
dygncy5leHRlbmQoc3BhbjMpJyk7CitzaG91bGRUaHJvdygncy5leHRlbmQobnVsbCwgMCknKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQuaHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3RBbGxDaGlsZHJlbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0QWxsQ2hpbGRyZW4tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0QWxs
Q2hpbGRyZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK2Zvb2Jh
cgorU3VjY2Vzczogcy5hbmNob3JOb2RlIGlzIFtvYmplY3QgVGV4dF0uCitTdWNjZXNzOiBzLmFu
Y2hvck9mZnNldCBpcyAwLgorU3VjY2Vzczogcy5mb2N1c05vZGUgaXMgW29iamVjdCBUZXh0XS4K
K1N1Y2Nlc3M6IHMuZm9jdXNPZmZzZXQgaXMgMC4KK1N1Y2Nlc3M6IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKSBpcyBmb28uCitTdWNjZXNzOiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkgaXMgZm9vYmFyLgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0
QWxsQ2hpbGRyZW4tZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQog
ICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdEFsbENoaWxkcmVuLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0QWxsQ2hpbGRyZW4u
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dEFsbENoaWxkcmVuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgor
PGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0Ij48c3BhbiBpZD0ic3BhbjEiPmZvbzwvc3Bhbj48c3Bhbj5i
YXI8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIg
cyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKTsKK3ZhciBzcGFuMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
cGFuMSIpOworCitmdW5jdGlvbiBsb2coc3RyKSB7CisgICAgdmFyIGxpID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShzdHIpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVu
ZENoaWxkKGxpKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwciwgZXhwZWN0ZWQpIHsKKyAg
ICB2YXIgYWN0dWFsID0gZXZhbChleHByKTsKKyAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQor
ICAgICAgICBsb2coIkZhaWx1cmU6ICIgKyBleHByICsgIiBzaG91bGQgYmUgIiArIGV4cGVjdGVk
ICsgIiwgd2FzICIgKyBhY3R1YWwgKyAiLiIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJTdWNj
ZXNzOiAiICsgZXhwciArICIgaXMgIiArIGV4cGVjdGVkICsgIi4iKTsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKK3ZhciByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKworCisvLyBzZWxlY3Qg
c3BhbjEKK3Iuc2V0U3RhcnQodGVzdCwgMCk7CityLnNldEVuZCh0ZXN0LCAxKTsKK3MuYWRkUmFu
Z2Uocik7CisKKy8vIHJlcGxhY2UgdGhlIHNlbGVjdGlvbiB3aXRoIHNwYW4xJ3MgdGV4dCBub2Rl
IGNoaWxkcmVuCitzLnNlbGVjdEFsbENoaWxkcmVuKHNwYW4xLmZpcnN0Q2hpbGQpOworc2hvdWxk
QmUoJ3MuYW5jaG9yTm9kZScsIHNwYW4xLmZpcnN0Q2hpbGQpOworc2hvdWxkQmUoJ3MuYW5jaG9y
T2Zmc2V0JywgMCk7CitzaG91bGRCZSgncy5mb2N1c05vZGUnLCBzcGFuMS5maXJzdENoaWxkKTsK
K3Nob3VsZEJlKCdzLmZvY3VzT2Zmc2V0JywgMCk7IC8vIFN0cmFuZ2UsIGJ1dCBtYXRjaGVzIEZp
cmVmb3gKKworLy8gcmVwbGFjZSB0aGUgc2VsZWN0aW9uIHdpdGggc3BhbjEncyBjaGlsZHJlbgor
cy5zZWxlY3RBbGxDaGlsZHJlbihzcGFuMSk7CitzaG91bGRCZSgnd2luZG93LmdldFNlbGVjdGlv
bigpJywgJ2ZvbycpOworCisvLyByZXBsYWNlIHRoZSBzZWxlY3Rpb24gd2l0aCB0ZXN0J3MgY2hp
bGRyZW4KK3Muc2VsZWN0QWxsQ2hpbGRyZW4odGVzdCk7CitzaG91bGRCZSgnd2luZG93LmdldFNl
bGVjdGlvbigpJywgJ2Zvb2JhcicpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdEFs
bENoaWxkcmVuLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9o
dG1sCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzYzNykKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEzMjcsNyArMTMyNywxMCBAQCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YmFzZU9mZnNldCBbbnVtYmVyCiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UgW2Z1bmN0
aW9uXQogd2luZG93LmdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQgW2Z1bmN0aW9uXQogd2lu
ZG93LmdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9TdGFydCBbZnVuY3Rpb25dCit3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuY29udGFpbnNOb2RlIFtmdW5jdGlvbl0KK3dpbmRvdy5nZXRTZWxlY3Rpb24o
KS5kZWxldGVGcm9tRG9jdW1lbnQgW2Z1bmN0aW9uXQogd2luZG93LmdldFNlbGVjdGlvbigpLmVt
cHR5IFtmdW5jdGlvbl0KK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5leHRlbmQgW2Z1bmN0aW9uXQog
d2luZG93LmdldFNlbGVjdGlvbigpLmV4dGVudE5vZGUgW251bGxdCiB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuZXh0ZW50T2Zmc2V0IFtudW1iZXJdCiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZm9jdXNO
b2RlIFtudWxsXQpAQCAtMTMzNyw2ICsxMzQwLDcgQEAgd2luZG93LmdldFNlbGVjdGlvbigpLmlz
Q29sbGFwc2VkIFtib29sZQogd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSBbZnVuY3Rpb25d
CiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmFuZ2VDb3VudCBbbnVtYmVyXQogd2luZG93LmdldFNl
bGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcyBbZnVuY3Rpb25dCit3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2VsZWN0QWxsQ2hpbGRyZW4gW2Z1bmN0aW9uXQogd2luZG93LmdldFNlbGVjdGlvbigpLnNl
dEJhc2VBbmRFeHRlbnQgW2Z1bmN0aW9uXQogd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0
aW9uIFtmdW5jdGlvbl0KIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50eXBlIFtzdHJpbmddCg==
</data>
<flag name="review"
          id="7298"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>