<?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>55207</bug_id>
          
          <creation_ts>2011-02-25 00:06:03 -0800</creation_ts>
          <short_desc>Move HTMLEquivalent and its subclasses to EditingStyle</short_desc>
          <delta_ts>2011-02-25 21:26:46 -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>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49956</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>kalman</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>357737</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-25 00:06:03 -0800</bug_when>
    <thetext>Right now, ApplyStyleCommand is responsible for both determining which style, elements, attributes to be removed and to be added.  In the long run, we&apos;d like to move this responsibility over to EditingStyle.

This is bug is about moving HTMLEquivalent and its subclasses along with the logic to determine which elements and attributes are moved from ApplyStyleCommand to EditingStyle.  While this introduces a slight overhad, it simplifies the code in ApplyStyleCommand significantly and helps to separate the responsibilities of ApplyStyleCommand and EditingStyle so it should be a win in the long term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357745</commentid>
    <comment_count>1</comment_count>
      <attachid>83779</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-25 00:20:34 -0800</bug_when>
    <thetext>Created attachment 83779
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358378</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-25 21:26:46 -0800</bug_when>
    <thetext>Committed r79758: &lt;http://trac.webkit.org/changeset/79758&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83779</attachid>
            <date>2011-02-25 00:20:34 -0800</date>
            <delta_ts>2011-02-25 07:47:40 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-55207-20110225172032.patch</filename>
            <type>text/plain</type>
            <size>31467</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NjYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDItMjUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBIVE1MRXF1aXZhbGVudCBhbmQgaXRzIHN1YmNsYXNzZXMg
dG8gRWRpdGluZ1N0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NTIwNworCisgICAgICAgIE1vdmVkIEhUTUxFcXVpdmFsZW50IGFuZCBpdHMgc3Vi
Y2xhc3NlcyBmcm9tIEFwcGx5U3R5bGVDb21tYW5kIHRvIEVkaXRpbmdTdHlsZSwKKyAgICAgICAg
YW5kIHJlbmFtZWQgSFRNTEVxdWl2YWxlbnQsIEhUTUxFcXVpdmFsZW50VmFsdWVMaXN0LCBIVE1M
QXR0cmlidXRlRXF1aXZhbGVudCwKKyAgICAgICAgYW5kIEhUTUxFcXVpdmFsZW50Rm9udFNpemVB
dHRyaWJ1dGUgdG8gSFRNTEVsZW1lbnRFcXVpdmFsZW50LCBIVE1MVGV4dERlY29yYXRpb25FcXVp
dmFsZW50LAorICAgICAgICBIVE1MQXR0cmlidXRlRXF1aXZhbGVudCwgYW5kIEhUTUxGb250U2l6
ZUVxdWl2YWxlbnQgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIEFsc28gZXh0cmFjdGVkIHRoZSBs
b2dpYyB0byBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudCBhbmQgYXR0cmlidXRlIGFyZSByZW1vdmVk
CisgICAgICAgIGFzIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50LCBjb25mbGlj
dHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcywKKyAgICAgICAgYW5kIGV4dHJhY3RDb25m
bGljdGluZ0ltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5k
OjpyZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5
U3R5bGVDb21tYW5kOjpyZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudCk6CisgICAgICAgICog
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZhbGVudDo6Y3JlYXRl
KTogTW92ZWQgZnJvbSBBcHBseVN0eWxlQ29tbWFuZC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudEVxdWl2YWxlbnQ6On5IVE1MRWxlbWVudEVxdWl2YWxlbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZhbGVudDo6bWF0Y2hlcyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRFcXVpdmFsZW50OjpoYXNBdHRyaWJ1dGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZhbGVudDo6cHJvcGVydHlF
eGlzdHNJblN0eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudEVxdWl2
YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnRFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZhbGVudDo6YWRkVG9TdHlsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudDo6Y3JlYXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dERlY29yYXRpb25FcXVpdmFsZW50
OjpIVE1MVGV4dERlY29yYXRpb25FcXVpdmFsZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dERlY29yYXRpb25FcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50OjpjcmVhdGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50OjptYXRj
aGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6
aGFzQXR0cmlidXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1
aXZhbGVudDo6YXR0cmlidXRlTmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0
dHJpYnV0ZUVxdWl2YWxlbnQ6OkhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0
eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6
YWRkVG9TdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dHJpYnV0ZUVxdWl2
YWxlbnQ6OmF0dHJpYnV0ZVZhbHVlQXNDU1NWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvbnRTaXplRXF1aXZhbGVudDo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9udFNpemVFcXVpdmFsZW50OjpIVE1MRm9udFNpemVFcXVpdmFsZW50KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udFNpemVFcXVpdmFsZW50OjphdHRyaWJ1dGVW
YWx1ZUFzQ1NTVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6
Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Omh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpleHRyYWN0Q29uZmxpY3Rp
bmdJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKTogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9F
ZGl0aW5nU3R5bGUuaDoKKwogMjAxMS0wMi0yNCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA3OTY1NikK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTUxLDcgKzExNTEsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1v
dmVJbmxpbmVTdHlsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVtb3ZlZCA9
IGZhbHNlOwotICAgIGlmIChyZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudChzdHlsZS0+c3R5
bGUoKSwgZWxlbWVudC5nZXQoKSwgbW9kZSwgZXh0cmFjdGVkU3R5bGUpKQorICAgIGlmIChyZW1v
dmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudChzdHlsZSwgZWxlbWVudC5nZXQoKSwgbW9kZSwgZXh0
cmFjdGVkU3R5bGUpKQogICAgICAgICByZW1vdmVkID0gdHJ1ZTsKIAogICAgIGlmICghZWxlbWVu
dC0+aW5Eb2N1bWVudCgpKQpAQCAtMTE2NCwyMzMgKzExNjQsNiBAQCBib29sIEFwcGx5U3R5bGVD
b21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsCiAKICAgICByZXR1cm4gcmVtb3ZlZDsKIH0KLQotY2xh
c3MgSFRNTEVxdWl2YWxlbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEhUTUxF
cXVpdmFsZW50PiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgcHJpbWl0aXZl
VmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEhUTUxFcXVpdmFsZW50KHByb3BlcnR5SUQsIHByaW1pdGl2ZVZhbHVl
LCB0YWdOYW1lKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+SFRNTEVxdWl2YWxlbnQoKSB7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50KSBjb25zdCB7IHJldHVy
biAhbV90YWdOYW1lIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoKm1fdGFnTmFtZSk7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBi
b29sIHByb3BlcnR5RXhpc3RzSW5TdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29u
c3QgeyByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsgfQot
ICAgIHZpcnR1YWwgYm9vbCB2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCosIENTU1N0eWxl
RGVjbGFyYXRpb24qKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVG9TdHlsZShFbGVtZW50
KiwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAg
IEhUTUxFcXVpdmFsZW50KENTU1Byb3BlcnR5SUQpOwotICAgIEhUTUxFcXVpdmFsZW50KENTU1By
b3BlcnR5SUQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpOwotICAgIEhUTUxFcXVpdmFs
ZW50KENTU1Byb3BlcnR5SUQsIGludCBwcmltaXRpdmVWYWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSk7Ci0gICAgY29uc3QgaW50IG1fcHJvcGVydHlJRDsKLSAgICBjb25zdCBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fcHJpbWl0aXZlVmFsdWU7Ci0gICAgY29uc3QgUXVhbGlm
aWVkTmFtZSogbV90YWdOYW1lOyAvLyBXZSBjYW4gc3RvcmUgYSBwb2ludGVyIGJlY2F1c2UgSFRN
TCB0YWcgbmFtZXMgYXJlIGNvbnN0IGdsb2JhbC4KLX07Ci0KLUhUTUxFcXVpdmFsZW50OjpIVE1M
RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlEIGlkKQotICAgIDogbV9wcm9wZXJ0eUlEKGlkKQotICAg
ICwgbV90YWdOYW1lKDApCi17Ci19Ci0KLUhUTUxFcXVpdmFsZW50OjpIVE1MRXF1aXZhbGVudChD
U1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQotICAgIDogbV9w
cm9wZXJ0eUlEKGlkKQotICAgICwgbV90YWdOYW1lKCZ0YWdOYW1lKQotewotfQotCi1IVE1MRXF1
aXZhbGVudDo6SFRNTEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlJRCBpZCwgaW50IHByaW1pdGl2ZVZh
bHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQotICAgIDogbV9wcm9wZXJ0eUlEKGlk
KQotICAgICwgbV9wcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihwcmltaXRpdmVWYWx1ZSkpCi0gICAgLCBtX3RhZ05hbWUoJnRhZ05hbWUpCi17Ci0gICAg
QVNTRVJUKHByaW1pdGl2ZVZhbHVlICE9IENTU1ZhbHVlSW52YWxpZCk7Ci19Ci0KLWJvb2wgSFRN
TEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50KiBlbGVtZW50LCBDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QKLXsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKLSAgICByZXR1
cm4gbWF0Y2hlcyhlbGVtZW50KSAmJiB2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
ICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkpLT5nZXRJZGVu
dCgpID09IG1fcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7Ci19Ci0KLXZvaWQgSFRNTEVxdWl2
YWxlbnQ6OmFkZFRvU3R5bGUoRWxlbWVudCosIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSkgY29uc3QKLXsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHkobV9wcm9wZXJ0eUlELCBtX3By
aW1pdGl2ZVZhbHVlLT5jc3NUZXh0KCkpOwotfQotCi1jbGFzcyBIVE1MRXF1aXZhbGVudFZhbHVl
TGlzdCA6IHB1YmxpYyBIVE1MRXF1aXZhbGVudAotewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPEhUTUxFcXVpdmFsZW50PiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBp
bnQgcHJpbWl0aXZlVmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxFcXVpdmFsZW50VmFsdWVMaXN0KHByb3Bl
cnR5SUQsIHByaW1pdGl2ZVZhbHVlLCB0YWdOYW1lKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgYm9v
bCB2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCosIENTU1N0eWxlRGVjbGFyYXRpb24qKSBj
b25zdDsKLQotcHJpdmF0ZToKLSAgICBIVE1MRXF1aXZhbGVudFZhbHVlTGlzdChDU1NQcm9wZXJ0
eUlELCBpbnQgcHJpbWl0aXZlVmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpOwot
fTsKLQotSFRNTEVxdWl2YWxlbnRWYWx1ZUxpc3Q6OkhUTUxFcXVpdmFsZW50VmFsdWVMaXN0KENT
U1Byb3BlcnR5SUQgaWQsIGludCBwcmltaXRpdmVWYWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSkKLSAgICA6IEhUTUxFcXVpdmFsZW50KGlkLCBwcmltaXRpdmVWYWx1ZSwgdGFnTmFt
ZSkKLXsKLX0KLQotYm9vbCBIVE1MRXF1aXZhbGVudFZhbHVlTGlzdDo6dmFsdWVJc1ByZXNlbnRJ
blN0eWxlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25z
dAotewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3R5bGVWYWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7Ci0gICAgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCkgJiYg
c3R5bGVWYWx1ZSAmJiBzdHlsZVZhbHVlLT5pc1ZhbHVlTGlzdCgpICYmIHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KHN0eWxlVmFsdWUuZ2V0KCkpLT5oYXNWYWx1ZShtX3ByaW1pdGl2ZVZhbHVl
LmdldCgpKTsKLX0KLQotY2xhc3MgSFRNTEVxdWl2YWxlbnRBdHRyaWJ1dGUgOiBwdWJsaWMgSFRN
TEVxdWl2YWxlbnQKLXsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxIVE1MRXF1aXZh
bGVudD4gY3JlYXRlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxFcXVpdmFsZW50QXR0cmlidXRlKHByb3BlcnR5SUQs
IHRhZ05hbWUsIGF0dHJOYW1lKSk7Ci0gICAgfQotICAgIHN0YXRpYyBQYXNzT3duUHRyPEhUTUxF
cXVpdmFsZW50PiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRN
TEVxdWl2YWxlbnRBdHRyaWJ1dGUocHJvcGVydHlJRCwgYXR0ck5hbWUpKTsKLSAgICB9Ci0KLSAg
ICBib29sIG1hdGNoZXMoRWxlbWVudCogZWxlbSkgY29uc3QgeyByZXR1cm4gSFRNTEVxdWl2YWxl
bnQ6Om1hdGNoZXMoZWxlbSkgJiYgZWxlbS0+aGFzQXR0cmlidXRlKG1fYXR0ck5hbWUpOyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgdmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQqLCBDU1NTdHlsZURl
Y2xhcmF0aW9uKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFRvU3R5bGUoRWxlbWVudCos
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBhdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoRWxlbWVudCopIGNvbnN0Owot
ICAgIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyTmFtZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgSFRNTEVxdWl2YWxlbnRBdHRy
aWJ1dGUoQ1NTUHJvcGVydHlJRCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwotICAgIEhUTUxFcXVpdmFsZW50QXR0cmlidXRlKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKLSAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiBtX2F0dHJOYW1lOyAvLyBXZSBjYW4gc3RvcmUgYSByZWZlcmVuY2UgYmVj
YXVzZSBIVE1MIGF0dHJpYnV0ZSBuYW1lcyBhcmUgY29uc3QgZ2xvYmFsLgotfTsKLQotSFRNTEVx
dWl2YWxlbnRBdHRyaWJ1dGU6OkhUTUxFcXVpdmFsZW50QXR0cmlidXRlKENTU1Byb3BlcnR5SUQg
aWQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQotICAgIDogSFRNTEVxdWl2YWxlbnQoaWQsIHRhZ05hbWUpCi0gICAgLCBtX2F0dHJO
YW1lKGF0dHJOYW1lKQotewotfQotCi1IVE1MRXF1aXZhbGVudEF0dHJpYnV0ZTo6SFRNTEVxdWl2
YWxlbnRBdHRyaWJ1dGUoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi0gICAgOiBIVE1MRXF1aXZhbGVudChpZCkKLSAgICAsIG1fYXR0ck5hbWUoYXR0ck5h
bWUpCi17Ci19Ci0KLWJvb2wgSFRNTEVxdWl2YWxlbnRBdHRyaWJ1dGU6OnZhbHVlSXNQcmVzZW50
SW5TdHlsZShFbGVtZW50KiBlbGVtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29u
c3QKLXsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gYXR0cmlidXRlVmFsdWVBc0NTU1Zh
bHVlKGVsZW1lbnQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3R5bGVWYWx1ZSA9IHN0eWxlLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7Ci0gICAgCi0gICAgLy8gRklYTUU6IFRo
aXMgaXMgdmVyeSBpbmVmZmljaWVudCB3YXkgb2YgY29tcGFyaW5nIHZhbHVlcwotICAgIC8vIGJ1
dCB3ZSBjYW4ndCBzdHJpbmcgY29tcGFyZSBhdHRyaWJ1dGUgdmFsdWUgYW5kIENTUyBwcm9wZXJ0
eSB2YWx1ZS4KLSAgICByZXR1cm4gdmFsdWUgJiYgc3R5bGVWYWx1ZSAmJiB2YWx1ZS0+Y3NzVGV4
dCgpID09IHN0eWxlVmFsdWUtPmNzc1RleHQoKTsKLX0KLQotdm9pZCBIVE1MRXF1aXZhbGVudEF0
dHJpYnV0ZTo6YWRkVG9TdHlsZShFbGVtZW50KiBlbGVtZW50LCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUpIGNvbnN0Ci17Ci0gICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUg
PSBhdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoZWxlbWVudCkpCi0gICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShtX3Byb3BlcnR5SUQsIHZhbHVlLT5jc3NUZXh0KCkpOwotfQotCi1QYXNzUmVmUHRy
PENTU1ZhbHVlPiBIVE1MRXF1aXZhbGVudEF0dHJpYnV0ZTo6YXR0cmlidXRlVmFsdWVBc0NTU1Zh
bHVlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotICAg
IGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlKG1fYXR0ck5hbWUpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGR1bW15U3R5
bGU7Ci0gICAgZHVtbXlTdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUo
KTsKLSAgICBkdW1teVN0eWxlLT5zZXRQcm9wZXJ0eShtX3Byb3BlcnR5SUQsIGVsZW1lbnQtPmdl
dEF0dHJpYnV0ZShtX2F0dHJOYW1lKSk7Ci0gICAgcmV0dXJuIGR1bW15U3R5bGUtPmdldFByb3Bl
cnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKLX0KLQotY2xhc3MgSFRNTEVxdWl2YWxlbnRGb250
U2l6ZUF0dHJpYnV0ZSA6IHB1YmxpYyBIVE1MRXF1aXZhbGVudEF0dHJpYnV0ZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SFRNTEVxdWl2YWxlbnQ+IGNyZWF0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxFcXVpdmFsZW50Rm9udFNpemVBdHRyaWJ1
dGUoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYXR0cmlidXRl
VmFsdWVBc0NTU1ZhbHVlKEVsZW1lbnQqKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBIVE1MRXF1
aXZhbGVudEZvbnRTaXplQXR0cmlidXRlKCk7Ci19OwotCi1IVE1MRXF1aXZhbGVudEZvbnRTaXpl
QXR0cmlidXRlOjpIVE1MRXF1aXZhbGVudEZvbnRTaXplQXR0cmlidXRlKCkKLSAgICA6IEhUTUxF
cXVpdmFsZW50QXR0cmlidXRlKENTU1Byb3BlcnR5Rm9udFNpemUsIGZvbnRUYWcsIHNpemVBdHRy
KQotewotfQotCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBIVE1MRXF1aXZhbGVudEZvbnRTaXplQXR0
cmlidXRlOjphdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoRWxlbWVudCogZWxlbWVudCkgY29uc3QK
LXsKLSAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGUo
bV9hdHRyTmFtZSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIGludCBzaXplOwotICAgIGlmICgh
SFRNTEZvbnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250U2l6ZU51bWJlcihlbGVtZW50LT5nZXRB
dHRyaWJ1dGUobV9hdHRyTmFtZSksIHNpemUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoc2l6ZSk7Ci19Ci0KLWJvb2wg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQsIElubGluZVN0
eWxlUmVtb3ZhbE1vZGUgbW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3Rl
ZFN0eWxlKQotewotICAgIHN0YXRpYyBjb25zdCBIVE1MRXF1aXZhbGVudCogSFRNTEVxdWl2YWxl
bnRzW10gPSB7Ci0gICAgICAgIEhUTUxFcXVpdmFsZW50OjpjcmVhdGUoQ1NTUHJvcGVydHlGb250
V2VpZ2h0LCBDU1NWYWx1ZUJvbGQsIGJUYWcpLmxlYWtQdHIoKSwKLSAgICAgICAgSFRNTEVxdWl2
YWxlbnQ6OmNyZWF0ZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIENTU1ZhbHVlQm9sZCwgc3Ryb25n
VGFnKS5sZWFrUHRyKCksCi0gICAgICAgIEhUTUxFcXVpdmFsZW50OjpjcmVhdGUoQ1NTUHJvcGVy
dHlWZXJ0aWNhbEFsaWduLCBDU1NWYWx1ZVN1Yiwgc3ViVGFnKS5sZWFrUHRyKCksCi0gICAgICAg
IEhUTUxFcXVpdmFsZW50OjpjcmVhdGUoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBDU1NWYWx1
ZVN1cGVyLCBzdXBUYWcpLmxlYWtQdHIoKSwKLSAgICAgICAgSFRNTEVxdWl2YWxlbnQ6OmNyZWF0
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTVmFsdWVJdGFsaWMsIGlUYWcpLmxlYWtQdHIoKSwK
LSAgICAgICAgSFRNTEVxdWl2YWxlbnQ6OmNyZWF0ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NT
VmFsdWVJdGFsaWMsIGVtVGFnKS5sZWFrUHRyKCksCi0KLSAgICAgICAgLy8gdGV4dC1kZWNvcmF0
aW9ucyBzaG91bGQgYmUgQ1NTVmFsdWVMaXN0Ci0gICAgICAgIEhUTUxFcXVpdmFsZW50VmFsdWVM
aXN0OjpjcmVhdGUoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgQ1NTVmFsdWVVbmRlcmxpbmUs
IHVUYWcpLmxlYWtQdHIoKSwKLSAgICAgICAgSFRNTEVxdWl2YWxlbnRWYWx1ZUxpc3Q6OmNyZWF0
ZShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBDU1NWYWx1ZUxpbmVUaHJvdWdoLCBzVGFnKS5s
ZWFrUHRyKCksCi0gICAgICAgIEhUTUxFcXVpdmFsZW50VmFsdWVMaXN0OjpjcmVhdGUoQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbiwgQ1NTVmFsdWVMaW5lVGhyb3VnaCwgc3RyaWtlVGFnKS5sZWFr
UHRyKCksCi0KLSAgICAgICAgLy8gRklYTUU6IGZvbnQgYXR0cmlidXRlcyBzaG91bGQgb25seSBi
ZSByZW1vdmVkIGlmIHZhbHVlcyB3ZXJlIGRpZmZlcmVudAotICAgICAgICBIVE1MRXF1aXZhbGVu
dEF0dHJpYnV0ZTo6Y3JlYXRlKENTU1Byb3BlcnR5Q29sb3IsIGZvbnRUYWcsIGNvbG9yQXR0ciku
bGVha1B0cigpLAotICAgICAgICBIVE1MRXF1aXZhbGVudEF0dHJpYnV0ZTo6Y3JlYXRlKENTU1By
b3BlcnR5Rm9udEZhbWlseSwgZm9udFRhZywgZmFjZUF0dHIpLmxlYWtQdHIoKSwKLSAgICAgICAg
SFRNTEVxdWl2YWxlbnRGb250U2l6ZUF0dHJpYnV0ZTo6Y3JlYXRlKCkubGVha1B0cigpLAotCi0g
ICAgICAgIEhUTUxFcXVpdmFsZW50QXR0cmlidXRlOjpjcmVhdGUoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpckF0dHIpLmxlYWtQdHIoKSwKLSAgICAgICAgSFRNTEVxdWl2YWxlbnRBdHRyaWJ1dGU6
OmNyZWF0ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBkaXJBdHRyKS5sZWFrUHRyKCksCi0gICAg
fTsKLQotICAgIC8vIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzdHls
ZVB1c2hlZERvd24gd2hlbiBtb2RlID09IFJlbW92ZU5vbmUgYmVjYXVzZSBvZiBlYXJseSBleGl0
LgotICAgIEFTU0VSVChzdHlsZSk7Ci0gICAgQVNTRVJUKCFleHRyYWN0ZWRTdHlsZSB8fCBtb2Rl
ICE9IFJlbW92ZU5vbmUpOwotICAgIGJvb2wgcmVtb3ZlZCA9IGZhbHNlOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChIVE1MRXF1aXZhbGVudHMpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgSFRNTEVxdWl2YWxlbnQqIGVxdWl2YWxlbnQgPSBIVE1MRXF1aXZhbGVu
dHNbaV07Ci0KLSAgICAgICAgLy8gdW5pY29kZS1iaWRpIGFuZCBkaXJlY3Rpb24gYXJlIHB1c2hl
ZCBkb3duIHNlcGFyYXRlbHkgc28gZG9uJ3QgcHVzaCBkb3duIHdpdGggb3RoZXIgc3R5bGVzLgot
ICAgICAgICBpZiAoKGV4dHJhY3RlZFN0eWxlICYmIGVxdWl2YWxlbnQtPmhhc0F0dHJpYnV0ZSgp
ICYmIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFcXVpdmFsZW50QXR0cmlidXRlKj4oZXF1aXZhbGVu
dCktPmF0dHJpYnV0ZU5hbWUoKSA9PSBkaXJBdHRyKQotICAgICAgICAgICAgfHwgIWVxdWl2YWxl
bnQtPm1hdGNoZXMoZWxlbWVudCkgfHwgIWVxdWl2YWxlbnQtPnByb3BlcnR5RXhpc3RzSW5TdHls
ZShzdHlsZSkKLSAgICAgICAgICAgIHx8IChtb2RlICE9IFJlbW92ZUFsd2F5cyAmJiBlcXVpdmFs
ZW50LT52YWx1ZUlzUHJlc2VudEluU3R5bGUoZWxlbWVudCwgc3R5bGUpKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkKLSAgICAgICAgICAgIGVx
dWl2YWxlbnQtPmFkZFRvU3R5bGUoZWxlbWVudCwgZXh0cmFjdGVkU3R5bGUpOwotCi0gICAgICAg
IGlmIChtb2RlID09IFJlbW92ZU5vbmUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
ICAgICBpZiAoIWVxdWl2YWxlbnQtPmhhc0F0dHJpYnV0ZSgpKSB7Ci0gICAgICAgICAgICByZXBs
YWNlV2l0aFNwYW5PclJlbW92ZUlmV2l0aG91dEF0dHJpYnV0ZXMoZWxlbWVudCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlbW92ZWQgPSB0cnVlOwot
ICAgICAgICByZW1vdmVOb2RlQXR0cmlidXRlKGVsZW1lbnQsIHN0YXRpY19jYXN0PGNvbnN0IEhU
TUxFcXVpdmFsZW50QXR0cmlidXRlKj4oZXF1aXZhbGVudCktPmF0dHJpYnV0ZU5hbWUoKSk7Ci0g
ICAgICAgIGlmIChpc0VtcHR5Rm9udFRhZyhlbGVtZW50KSB8fCBpc1NwYW5XaXRob3V0QXR0cmli
dXRlc09yVW5zdHlsZVN0eWxlU3BhbihlbGVtZW50KSkKLSAgICAgICAgICAgIHJlbW92ZU5vZGVQ
cmVzZXJ2aW5nQ2hpbGRyZW4oZWxlbWVudCk7Ci0gICAgfQotICAgIHJldHVybiByZW1vdmVkOwot
fQogICAgIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVwbGFjZVdpdGhTcGFuT3JSZW1vdmVJ
ZldpdGhvdXRBdHRyaWJ1dGVzKEhUTUxFbGVtZW50KiYgZWxlbSkKIHsKQEAgLTE0MTUsNyArMTE4
OCwzNiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZXBsYWNlV2l0aFNwYW5PCiAgICAgICAg
IGVsZW0gPSBuZXdTcGFuRWxlbWVudDsKICAgICB9CiB9CisgICAgCitib29sIEFwcGx5U3R5bGVD
b21tYW5kOjpyZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudChFZGl0aW5nU3R5bGUqIHN0eWxl
LCBIVE1MRWxlbWVudCogZWxlbWVudCwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSBtb2RlLCBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpCit7CisgICAgQVNTRVJUKHN0
eWxlKTsKKyAgICBpZiAobW9kZSA9PSBSZW1vdmVOb25lKSB7CisgICAgICAgIEFTU0VSVCghZXh0
cmFjdGVkU3R5bGUpOworICAgICAgICByZXR1cm4gc3R5bGUtPmNvbmZsaWN0c1dpdGhJbXBsaWNp
dFN0eWxlT2ZFbGVtZW50KGVsZW1lbnQpIHx8IHN0eWxlLT5jb25mbGljdHNXaXRoSW1wbGljaXRT
dHlsZU9mQXR0cmlidXRlcyhlbGVtZW50KTsKKyAgICB9CiAKKyAgICBBU1NFUlQobW9kZSA9PSBS
ZW1vdmVJZk5lZWRlZCB8fCBtb2RlID09IFJlbW92ZUFsd2F5cyk7CisgICAgaWYgKHN0eWxlLT5j
b25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudChlbGVtZW50LCBleHRyYWN0ZWRTdHls
ZSwgbW9kZSA9PSBSZW1vdmVBbHdheXMgPyBFZGl0aW5nU3R5bGU6OkV4dHJhY3RNYXRjaGluZ1N0
eWxlIDogRWRpdGluZ1N0eWxlOjpEb05vdEV4dHJhY3RNYXRjaGluZ1N0eWxlKSkgeworICAgICAg
ICByZXBsYWNlV2l0aFNwYW5PclJlbW92ZUlmV2l0aG91dEF0dHJpYnV0ZXMoZWxlbWVudCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIHVuaWNvZGUtYmlkaSBhbmQgZGly
ZWN0aW9uIGFyZSBwdXNoZWQgZG93biBzZXBhcmF0ZWx5IHNvIGRvbid0IHB1c2ggZG93biB3aXRo
IG90aGVyIHN0eWxlcworICAgIFZlY3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1dGVzOworICAg
IGlmICghc3R5bGUtPmV4dHJhY3RDb25mbGljdGluZ0ltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMo
ZWxlbWVudCwgZXh0cmFjdGVkU3R5bGUgPyBFZGl0aW5nU3R5bGU6OlByZXNlcnZlV3JpdGluZ0Rp
cmVjdGlvbiA6IEVkaXRpbmdTdHlsZTo6RG9Ob3RQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sCisg
ICAgICAgIGV4dHJhY3RlZFN0eWxlLCBhdHRyaWJ1dGVzLCBtb2RlID09IFJlbW92ZUFsd2F5cyA/
IEVkaXRpbmdTdHlsZTo6RXh0cmFjdE1hdGNoaW5nU3R5bGUgOiBFZGl0aW5nU3R5bGU6OkRvTm90
RXh0cmFjdE1hdGNoaW5nU3R5bGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIHJlbW92
ZU5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlc1tpXSk7CisKKyAgICBpZiAoaXNFbXB0
eUZvbnRUYWcoZWxlbWVudCkgfHwgaXNTcGFuV2l0aG91dEF0dHJpYnV0ZXNPclVuc3R5bGVTdHls
ZVNwYW4oZWxlbWVudCkpCisgICAgICAgIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oZWxl
bWVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKIGJvb2wgQXBwbHlTdHlsZUNvbW1h
bmQ6OnJlbW92ZUNTU1N0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBlbGVt
ZW50LCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlIG1vZGUsIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBleHRyYWN0ZWRTdHlsZSkKIHsKICAgICBBU1NFUlQoc3R5bGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkocmV2aXNpb24gNzk2NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDggKzgwLDggQEAgcHJpdmF0ZToKICAgICBib29sIHJlbW92ZVN0eWxlRnJvbVJ1
bkJlZm9yZUFwcGx5aW5nU3R5bGUoRWRpdGluZ1N0eWxlKiwgUmVmUHRyPE5vZGU+JiBydW5TdGFy
dCwgUmVmUHRyPE5vZGU+JiBydW5FbmQpOwogICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVGcm9t
RWxlbWVudChFZGl0aW5nU3R5bGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5
bGVSZW1vdmFsTW9kZSA9IFJlbW92ZUlmTmVlZGVkLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogZXh0cmFjdGVkU3R5bGUgPSAwKTsKICAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxp
bmVTdHlsZUZyb21FbGVtZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBlbGVt
ZW50KSB7cmV0dXJuIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW1lbnQs
IFJlbW92ZU5vbmUpO30KLSAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92
YWxNb2RlLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpOwogICAg
IHZvaWQgcmVwbGFjZVdpdGhTcGFuT3JSZW1vdmVJZldpdGhvdXRBdHRyaWJ1dGVzKEhUTUxFbGVt
ZW50KiYpOworICAgIGJvb2wgcmVtb3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQoRWRpdGluZ1N0
eWxlKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlLCBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpOwogICAgIGJvb2wgcmVtb3ZlQ1NTU3R5bGUo
RWRpdGluZ1N0eWxlKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlID0gUmVt
b3ZlSWZOZWVkZWQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRyYWN0ZWRTdHlsZSA9
IDApOwogICAgIEhUTUxFbGVtZW50KiBoaWdoZXN0QW5jZXN0b3JXaXRoQ29uZmxpY3RpbmdJbmxp
bmVTdHlsZShFZGl0aW5nU3R5bGUqLCBOb2RlKik7CiAgICAgdm9pZCBhcHBseUlubGluZVN0eWxl
VG9QdXNoRG93bihOb2RlKiwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDc5NjU2KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJIVE1MRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKQEAgLTg1LDYgKzg2LDE3NSBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhCiAgICAgcmV0dXJuIGNvcHlFZGl0
aW5nUHJvcGVydGllcyhzdHlsZS5nZXQoKSk7CiB9CiAKK2NsYXNzIEhUTUxFbGVtZW50RXF1aXZh
bGVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SFRNTEVsZW1lbnRFcXVpdmFs
ZW50PiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgcHJpbWl0aXZlVmFsdWUs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEhUTUxFbGVtZW50RXF1aXZhbGVudChwcm9wZXJ0eUlELCBwcmltaXRpdmVWYWx1
ZSwgdGFnTmFtZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUTUxFbGVtZW50RXF1aXZhbGVu
dCgpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
IHsgcmV0dXJuICFtX3RhZ05hbWUgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSgqbV90YWdOYW1lKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgcHJvcGVydHlFeGlzdHNJblN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlKSBjb25zdCB7IHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShtX3Byb3BlcnR5
SUQpOyB9CisgICAgdmlydHVhbCBib29sIHZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50Kiwg
Q1NTU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0eWxl
KEVsZW1lbnQqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0OworCitwcm90ZWN0
ZWQ6CisgICAgSFRNTEVsZW1lbnRFcXVpdmFsZW50KENTU1Byb3BlcnR5SUQpOworICAgIEhUTUxF
bGVtZW50RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlELCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lKTsKKyAgICBIVE1MRWxlbWVudEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlJRCwgaW50IHByaW1p
dGl2ZVZhbHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsKKyAgICBjb25zdCBpbnQg
bV9wcm9wZXJ0eUlEOworICAgIGNvbnN0IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9wcmlt
aXRpdmVWYWx1ZTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBtX3RhZ05hbWU7IC8vIFdlIGNh
biBzdG9yZSBhIHBvaW50ZXIgYmVjYXVzZSBIVE1MIHRhZyBuYW1lcyBhcmUgY29uc3QgZ2xvYmFs
LgorfTsKKworSFRNTEVsZW1lbnRFcXVpdmFsZW50OjpIVE1MRWxlbWVudEVxdWl2YWxlbnQoQ1NT
UHJvcGVydHlJRCBpZCkKKyAgICA6IG1fcHJvcGVydHlJRChpZCkKKyAgICAsIG1fdGFnTmFtZSgw
KQoreworfQorCitIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVudChD
U1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQorICAgIDogbV9w
cm9wZXJ0eUlEKGlkKQorICAgICwgbV90YWdOYW1lKCZ0YWdOYW1lKQoreworfQorCitIVE1MRWxl
bWVudEVxdWl2YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlEIGlkLCBp
bnQgcHJpbWl0aXZlVmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCisgICAgOiBt
X3Byb3BlcnR5SUQoaWQpCisgICAgLCBtX3ByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKHByaW1pdGl2ZVZhbHVlKSkKKyAgICAsIG1fdGFnTmFtZSgmdGFn
TmFtZSkKK3sKKyAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUgIT0gQ1NTVmFsdWVJbnZhbGlkKTsK
K30KKworYm9vbCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShF
bGVtZW50KiBlbGVtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QKK3sKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9w
cm9wZXJ0eUlEKTsKKyAgICByZXR1cm4gbWF0Y2hlcyhlbGVtZW50KSAmJiB2YWx1ZSAmJiB2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUuZ2V0KCkpLT5nZXRJZGVudCgpID09IG1fcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7
Cit9CisKK3ZvaWQgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjphZGRUb1N0eWxlKEVsZW1lbnQqLCBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0Cit7CisgICAgc3R5bGUtPnNl
dFByb3BlcnR5KG1fcHJvcGVydHlJRCwgbV9wcmltaXRpdmVWYWx1ZS0+Y3NzVGV4dCgpKTsKK30K
KworY2xhc3MgSFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudCA6IHB1YmxpYyBIVE1MRWxlbWVu
dEVxdWl2YWxlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEhUTUxFbGVtZW50
RXF1aXZhbGVudD4gY3JlYXRlKGludCBwcmltaXRpdmVWYWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTFRleHRE
ZWNvcmF0aW9uRXF1aXZhbGVudChwcmltaXRpdmVWYWx1ZSwgdGFnTmFtZSkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIGJvb2wgdmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQqLCBDU1NTdHlsZURl
Y2xhcmF0aW9uKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSFRNTFRleHREZWNvcmF0aW9uRXF1
aXZhbGVudChpbnQgcHJpbWl0aXZlVmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUp
OworfTsKKworSFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudDo6SFRNTFRleHREZWNvcmF0aW9u
RXF1aXZhbGVudChpbnQgcHJpbWl0aXZlVmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUpCisgICAgOiBIVE1MRWxlbWVudEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
biwgcHJpbWl0aXZlVmFsdWUsIHRhZ05hbWUpCit7Cit9CisKK2Jvb2wgSFRNTFRleHREZWNvcmF0
aW9uRXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQqIGVsZW1lbnQsIENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdAoreworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
c3R5bGVWYWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7Cisg
ICAgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCkgJiYgc3R5bGVWYWx1ZSAmJiBzdHlsZVZhbHVlLT5p
c1ZhbHVlTGlzdCgpICYmIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHN0eWxlVmFsdWUuZ2V0
KCkpLT5oYXNWYWx1ZShtX3ByaW1pdGl2ZVZhbHVlLmdldCgpKTsKK30KKworY2xhc3MgSFRNTEF0
dHJpYnV0ZUVxdWl2YWxlbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnRFcXVpdmFsZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxIVE1MQXR0cmlidXRlRXF1aXZhbGVudD4gY3JlYXRl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50KHByb3BlcnR5SUQsIHRhZ05hbWUsIGF0
dHJOYW1lKSk7CisgICAgfQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVp
dmFsZW50PiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTEF0
dHJpYnV0ZUVxdWl2YWxlbnQocHJvcGVydHlJRCwgYXR0ck5hbWUpKTsKKyAgICB9CisKKyAgICBi
b29sIG1hdGNoZXMoRWxlbWVudCogZWxlbSkgY29uc3QgeyByZXR1cm4gSFRNTEVsZW1lbnRFcXVp
dmFsZW50OjptYXRjaGVzKGVsZW0pICYmIGVsZW0tPmhhc0F0dHJpYnV0ZShtX2F0dHJOYW1lKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIHZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50KiwgQ1NTU3R5
bGVEZWNsYXJhdGlvbiopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0eWxlKEVsZW1l
bnQqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0OworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gYXR0cmlidXRlVmFsdWVBc0NTU1ZhbHVlKEVsZW1lbnQqKSBjb25z
dDsKKyAgICBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXR0ck5hbWU7IH0KKworcHJvdGVjdGVkOgorICAgIEhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50KENTU1Byb3BlcnR5SUQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKKyAgICBIVE1MQXR0cmlidXRlRXF1aXZhbGVu
dChDU1NQcm9wZXJ0eUlELCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CisgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbV9hdHRyTmFtZTsgLy8gV2UgY2FuIHN0b3JlIGEgcmVmZXJlbmNl
IGJlY2F1c2UgSFRNTCBhdHRyaWJ1dGUgbmFtZXMgYXJlIGNvbnN0IGdsb2JhbC4KK307CisKK0hU
TUxBdHRyaWJ1dGVFcXVpdmFsZW50OjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudChDU1NQcm9wZXJ0
eUlEIGlkLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKKyAgICA6IEhUTUxFbGVtZW50RXF1aXZhbGVudChpZCwgdGFnTmFtZSkKKyAg
ICAsIG1fYXR0ck5hbWUoYXR0ck5hbWUpCit7Cit9CisKK0hUTUxBdHRyaWJ1dGVFcXVpdmFsZW50
OjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudChDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKKyAgICA6IEhUTUxFbGVtZW50RXF1aXZhbGVudChpZCkKKyAgICAs
IG1fYXR0ck5hbWUoYXR0ck5hbWUpCit7Cit9CisKK2Jvb2wgSFRNTEF0dHJpYnV0ZUVxdWl2YWxl
bnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50KiBlbGVtZW50LCBDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSkgY29uc3QKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gYXR0
cmlidXRlVmFsdWVBc0NTU1ZhbHVlKGVsZW1lbnQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3R5
bGVWYWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7CisgICAg
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgdmVyeSBpbmVmZmljaWVudCB3YXkgb2YgY29tcGFyaW5n
IHZhbHVlcworICAgIC8vIGJ1dCB3ZSBjYW4ndCBzdHJpbmcgY29tcGFyZSBhdHRyaWJ1dGUgdmFs
dWUgYW5kIENTUyBwcm9wZXJ0eSB2YWx1ZS4KKyAgICByZXR1cm4gdmFsdWUgJiYgc3R5bGVWYWx1
ZSAmJiB2YWx1ZS0+Y3NzVGV4dCgpID09IHN0eWxlVmFsdWUtPmNzc1RleHQoKTsKK30KKwordm9p
ZCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6YWRkVG9TdHlsZShFbGVtZW50KiBlbGVtZW50LCBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0Cit7CisgICAgaWYgKFJlZlB0
cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoZWxlbWVudCkpCisg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShtX3Byb3BlcnR5SUQsIHZhbHVlLT5jc3NUZXh0KCkp
OworfQorCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6YXR0
cmlidXRlVmFsdWVBc0NTU1ZhbHVlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGVsZW1lbnQpOworICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlKG1fYXR0ck5hbWUp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IGR1bW15U3R5bGU7CisgICAgZHVtbXlTdHlsZSA9IENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBkdW1teVN0eWxlLT5zZXRQcm9wZXJ0eShtX3Byb3Bl
cnR5SUQsIGVsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2F0dHJOYW1lKSk7CisgICAgcmV0dXJuIGR1
bW15U3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKK30KKworY2xhc3Mg
SFRNTEZvbnRTaXplRXF1aXZhbGVudCA6IHB1YmxpYyBIVE1MQXR0cmlidXRlRXF1aXZhbGVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SFRNTEZvbnRTaXplRXF1aXZhbGVudD4g
Y3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSFRNTEZvbnRTaXpl
RXF1aXZhbGVudCgpKTsKKyAgICB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBh
dHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoRWxlbWVudCopIGNvbnN0OworCitwcml2YXRlOgorICAg
IEhUTUxGb250U2l6ZUVxdWl2YWxlbnQoKTsKK307CisKK0hUTUxGb250U2l6ZUVxdWl2YWxlbnQ6
OkhUTUxGb250U2l6ZUVxdWl2YWxlbnQoKQorICAgIDogSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQo
Q1NTUHJvcGVydHlGb250U2l6ZSwgSFRNTE5hbWVzOjpmb250VGFnLCBIVE1MTmFtZXM6OnNpemVB
dHRyKQoreworfQorCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBIVE1MRm9udFNpemVFcXVpdmFsZW50
OjphdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoZWxlbWVudCk7CisgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGUobV9hdHRy
TmFtZSkpCisgICAgICAgIHJldHVybiAwOworICAgIGludCBzaXplOworICAgIGlmICghSFRNTEZv
bnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250U2l6ZU51bWJlcihlbGVtZW50LT5nZXRBdHRyaWJ1
dGUobV9hdHRyTmFtZSksIHNpemUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoc2l6ZSk7Cit9CisKIGZsb2F0IEVkaXRp
bmdTdHlsZTo6Tm9Gb250RGVsdGEgPSAwLjBmOwogCiBFZGl0aW5nU3R5bGU6OkVkaXRpbmdTdHls
ZSgpCkBAIC0zNjUsNiArNTM1LDk5IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRo
SW5saW5lU3QKICAgICByZXR1cm4gIWNvbmZsaWN0aW5nUHJvcGVydGllcy0+aXNFbXB0eSgpOwog
fQogCitib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1l
bnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRy
YWN0ZWRTdHlsZSwgU2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUgc2hvdWxkRXh0cmFjdE1hdGNo
aW5nU3R5bGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0IEhUTUxFbGVtZW50RXF1aXZhbGVudCogSFRN
TEVxdWl2YWxlbnRzW10gPSB7CisgICAgICAgIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6Y3JlYXRl
KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTVmFsdWVCb2xkLCBIVE1MTmFtZXM6OmJUYWcpLmxl
YWtQdHIoKSwKKyAgICAgICAgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjpjcmVhdGUoQ1NTUHJvcGVy
dHlGb250V2VpZ2h0LCBDU1NWYWx1ZUJvbGQsIEhUTUxOYW1lczo6c3Ryb25nVGFnKS5sZWFrUHRy
KCksCisgICAgICAgIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6Y3JlYXRlKENTU1Byb3BlcnR5VmVy
dGljYWxBbGlnbiwgQ1NTVmFsdWVTdWIsIEhUTUxOYW1lczo6c3ViVGFnKS5sZWFrUHRyKCksCisg
ICAgICAgIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6Y3JlYXRlKENTU1Byb3BlcnR5VmVydGljYWxB
bGlnbiwgQ1NTVmFsdWVTdXBlciwgSFRNTE5hbWVzOjpzdXBUYWcpLmxlYWtQdHIoKSwKKyAgICAg
ICAgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjpjcmVhdGUoQ1NTUHJvcGVydHlGb250U3R5bGUsIENT
U1ZhbHVlSXRhbGljLCBIVE1MTmFtZXM6OmlUYWcpLmxlYWtQdHIoKSwKKyAgICAgICAgSFRNTEVs
ZW1lbnRFcXVpdmFsZW50OjpjcmVhdGUoQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1ZhbHVlSXRh
bGljLCBIVE1MTmFtZXM6OmVtVGFnKS5sZWFrUHRyKCksCisKKyAgICAgICAgSFRNTFRleHREZWNv
cmF0aW9uRXF1aXZhbGVudDo6Y3JlYXRlKENTU1ZhbHVlVW5kZXJsaW5lLCBIVE1MTmFtZXM6OnVU
YWcpLmxlYWtQdHIoKSwKKyAgICAgICAgSFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudDo6Y3Jl
YXRlKENTU1ZhbHVlTGluZVRocm91Z2gsIEhUTUxOYW1lczo6c1RhZykubGVha1B0cigpLAorICAg
ICAgICBIVE1MVGV4dERlY29yYXRpb25FcXVpdmFsZW50OjpjcmVhdGUoQ1NTVmFsdWVMaW5lVGhy
b3VnaCwgSFRNTE5hbWVzOjpzdHJpa2VUYWcpLmxlYWtQdHIoKSwKKyAgICB9OworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKEhUTUxFcXVpdmFsZW50cyk7ICsr
aSkgeworICAgICAgICBjb25zdCBIVE1MRWxlbWVudEVxdWl2YWxlbnQqIGVxdWl2YWxlbnQgPSBI
VE1MRXF1aXZhbGVudHNbaV07CisgICAgICAgIGlmIChlcXVpdmFsZW50LT5tYXRjaGVzKGVsZW1l
bnQpICYmIGVxdWl2YWxlbnQtPnByb3BlcnR5RXhpc3RzSW5TdHlsZShtX211dGFibGVTdHlsZS5n
ZXQoKSkKKyAgICAgICAgICAgICYmIChzaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSA9PSBFeHRy
YWN0TWF0Y2hpbmdTdHlsZSB8fCAhZXF1aXZhbGVudC0+dmFsdWVJc1ByZXNlbnRJblN0eWxlKGVs
ZW1lbnQsIG1fbXV0YWJsZVN0eWxlLmdldCgpKSkpIHsKKyAgICAgICAgICAgIGlmIChleHRyYWN0
ZWRTdHlsZSkKKyAgICAgICAgICAgICAgICBlcXVpdmFsZW50LT5hZGRUb1N0eWxlKGVsZW1lbnQs
IGV4dHJhY3RlZFN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGNvbnN0IFZlY3RvcjxPd25QdHI8
SFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ+ID4mIGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8T3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVp
dmFsZW50PiA+LCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHMsICgpKTsKKworICAgIGlmICghSFRN
TEF0dHJpYnV0ZUVxdWl2YWxlbnRzLnNpemUoKSkgeworICAgICAgICBIVE1MQXR0cmlidXRlRXF1
aXZhbGVudHMuYXBwZW5kKEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50OjpjcmVhdGUoQ1NTUHJvcGVy
dHlDb2xvciwgSFRNTE5hbWVzOjpmb250VGFnLCBIVE1MTmFtZXM6OmNvbG9yQXR0cikpOworICAg
ICAgICBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHMuYXBwZW5kKEhUTUxBdHRyaWJ1dGVFcXVpdmFs
ZW50OjpjcmVhdGUoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBIVE1MTmFtZXM6OmZvbnRUYWcsIEhU
TUxOYW1lczo6ZmFjZUF0dHIpKTsKKyAgICAgICAgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnRzLmFw
cGVuZChIVE1MRm9udFNpemVFcXVpdmFsZW50OjpjcmVhdGUoKSk7CisKKyAgICAgICAgSFRNTEF0
dHJpYnV0ZUVxdWl2YWxlbnRzLmFwcGVuZChIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6Y3JlYXRl
KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBIVE1MTmFtZXM6OmRpckF0dHIpKTsKKyAgICAgICAgSFRN
TEF0dHJpYnV0ZUVxdWl2YWxlbnRzLmFwcGVuZChIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6Y3Jl
YXRlKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIEhUTUxOYW1lczo6ZGlyQXR0cikpOworICAgIH0K
KworICAgIHJldHVybiBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHM7Cit9CisKK2Jvb2wgRWRpdGlu
Z1N0eWxlOjpjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVu
dCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgaWYgKCFtX211
dGFibGVTdHlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgVmVjdG9yPE93
blB0cjxIVE1MQXR0cmlidXRlRXF1aXZhbGVudD4gPiYgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnRz
ID0gaHRtbEF0dHJpYnV0ZUVxdWl2YWxlbnRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKEhU
TUxBdHRyaWJ1dGVFcXVpdmFsZW50c1tpXS0+bWF0Y2hlcyhlbGVtZW50KSAmJiBIVE1MQXR0cmli
dXRlRXF1aXZhbGVudHNbaV0tPnByb3BlcnR5RXhpc3RzSW5TdHlsZShtX211dGFibGVTdHlsZS5n
ZXQoKSkKKyAgICAgICAgICAgICYmICFIVE1MQXR0cmlidXRlRXF1aXZhbGVudHNbaV0tPnZhbHVl
SXNQcmVzZW50SW5TdHlsZShlbGVtZW50LCBtX211dGFibGVTdHlsZS5nZXQoKSkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
RWRpdGluZ1N0eWxlOjpleHRyYWN0Q29uZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVz
KEhUTUxFbGVtZW50KiBlbGVtZW50LCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gc2hv
dWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLAorICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBleHRyYWN0ZWRTdHlsZSwgVmVjdG9yPFF1YWxpZmllZE5hbWU+JiBjb25mbGljdGluZ0F0
dHJpYnV0ZXMsIFNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlIHNob3VsZEV4dHJhY3RNYXRjaGlu
Z1N0eWxlKSBjb25zdAoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICAvLyBIVE1MQXR0cmli
dXRlRXF1aXZhbGVudDo6YWRkVG9TdHlsZSBkb2Vzbid0IHN1cHBvcnQgdW5pY29kZS1iaWRpIGFu
ZCBkaXJlY3Rpb24gcHJvcGVydGllcworICAgIEFTU0VSVCghZXh0cmFjdGVkU3R5bGUgfHwgc2hv
dWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uID09IFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbik7
CisgICAgaWYgKCFtX211dGFibGVTdHlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Y29uc3QgVmVjdG9yPE93blB0cjxIVE1MQXR0cmlidXRlRXF1aXZhbGVudD4gPiYgSFRNTEF0dHJp
YnV0ZUVxdWl2YWxlbnRzID0gaHRtbEF0dHJpYnV0ZUVxdWl2YWxlbnRzKCk7CisgICAgYm9vbCBy
ZW1vdmVkID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBIVE1MQXR0cmlidXRl
RXF1aXZhbGVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgSFRNTEF0dHJpYnV0ZUVx
dWl2YWxlbnQqIGVxdWl2YWxlbnQgPSBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHNbaV0uZ2V0KCk7
CisKKyAgICAgICAgLy8gdW5pY29kZS1iaWRpIGFuZCBkaXJlY3Rpb24gYXJlIHB1c2hlZCBkb3du
IHNlcGFyYXRlbHkgc28gZG9uJ3QgcHVzaCBkb3duIHdpdGggb3RoZXIgc3R5bGVzLgorICAgICAg
ICBpZiAoc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uID09IFByZXNlcnZlV3JpdGluZ0Rp
cmVjdGlvbiAmJiBlcXVpdmFsZW50LT5hdHRyaWJ1dGVOYW1lKCkgPT0gSFRNTE5hbWVzOjpkaXJB
dHRyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFlcXVpdmFsZW50LT5t
YXRjaGVzKGVsZW1lbnQpIHx8ICFlcXVpdmFsZW50LT5wcm9wZXJ0eUV4aXN0c0luU3R5bGUobV9t
dXRhYmxlU3R5bGUuZ2V0KCkpCisgICAgICAgICAgICB8fCAoc2hvdWxkRXh0cmFjdE1hdGNoaW5n
U3R5bGUgPT0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSAmJiBlcXVpdmFsZW50LT52YWx1ZUlz
UHJlc2VudEluU3R5bGUoZWxlbWVudCwgbV9tdXRhYmxlU3R5bGUuZ2V0KCkpKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkKKyAgICAgICAgICAg
IGVxdWl2YWxlbnQtPmFkZFRvU3R5bGUoZWxlbWVudCwgZXh0cmFjdGVkU3R5bGUpOworICAgICAg
ICBjb25mbGljdGluZ0F0dHJpYnV0ZXMuYXBwZW5kKGVxdWl2YWxlbnQtPmF0dHJpYnV0ZU5hbWUo
KSk7CisgICAgICAgIHJlbW92ZWQgPSB0cnVlOworICAgIH0KKworICAgIHJldHVybiByZW1vdmVk
OworfQorCiB2b2lkIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24sIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiBzaG91bGRQcmVzZXJ2
ZVdyaXRpbmdEaXJlY3Rpb24pCiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gNzk2NTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4
ICs0MywxMCBAQCBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgTm9kZTsKIGNsYXNzIFBvc2l0
aW9uOworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgU3R5
bGVkRWxlbWVudDsKIApAQCAtNTMsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFByb3Bl
cnRpZXNUb0luY2x1ZGUgeyBBbGxQcm9wZXJ0aWVzLCBPbmx5SW5oZXJpdGFibGVQcm9wZXJ0aWVz
IH07CiAgICAgZW51bSBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24geyBQcmVzZXJ2ZVdy
aXRpbmdEaXJlY3Rpb24sIERvTm90UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uIH07CisgICAgZW51
bSBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSB7IEV4dHJhY3RNYXRjaGluZ1N0eWxlLCBEb05v
dEV4dHJhY3RNYXRjaGluZ1N0eWxlIH07CiAgICAgc3RhdGljIGZsb2F0IE5vRm9udERlbHRhOwog
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBjcmVhdGUoKQpAQCAtOTYsNiAr
OTksMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1dpdGhJbmxp
bmVTdHlsZU9mRWxlbWVudChlbGVtZW50LCAmY29uZmxpY3RpbmdQcm9wZXJ0aWVzKTsKICAgICB9
CisgICAgYm9vbCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudChIVE1MRWxlbWVu
dCosIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRyYWN0ZWRTdHlsZSA9IDAsIFNob3Vs
ZEV4dHJhY3RNYXRjaGluZ1N0eWxlID0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3Q7
CisgICAgYm9vbCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxl
bWVudCopIGNvbnN0OworICAgIGJvb2wgZXh0cmFjdENvbmZsaWN0aW5nSW1wbGljaXRTdHlsZU9m
QXR0cmlidXRlcyhIVE1MRWxlbWVudCosIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiwg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlLAorICAgICAgICAgICAg
VmVjdG9yPFF1YWxpZmllZE5hbWU+JiBjb25mbGljdGluZ0F0dHJpYnV0ZXMsIFNob3VsZEV4dHJh
Y3RNYXRjaGluZ1N0eWxlKSBjb25zdDsKICAgICB2b2lkIHByZXBhcmVUb0FwcGx5QXQoY29uc3Qg
UG9zaXRpb24mLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gPSBEb05vdFByZXNlcnZl
V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgdm9pZCBtZXJnZVR5cGluZ1N0eWxlKERvY3VtZW50Kik7
CiAK
</data>
<flag name="review"
          id="75657"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>