# License of this script, not of the application it contains: # # Copyright Erik Veenstra # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License, # version 2, as published by the Free Software Foundation. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA. # Parts of this code are based on code from Thomas Hurst # . # Tar2RubyScript constants unless defined?(BLOCKSIZE) ShowContent = ARGV.include?("--tar2rubyscript-list") JustExtract = ARGV.include?("--tar2rubyscript-justextract") ToTar = ARGV.include?("--tar2rubyscript-totar") Preserve = ARGV.include?("--tar2rubyscript-preserve") end ARGV.concat [] ARGV.delete_if{|arg| arg =~ /^--tar2rubyscript-/} ARGV << "--tar2rubyscript-preserve" if Preserve # Tar constants unless defined?(BLOCKSIZE) BLOCKSIZE = 512 NAMELEN = 100 MODELEN = 8 UIDLEN = 8 GIDLEN = 8 CHKSUMLEN = 8 SIZELEN = 12 MAGICLEN = 8 MODTIMELEN = 12 UNAMELEN = 32 GNAMELEN = 32 DEVLEN = 8 TMAGIC = "ustar" GNU_TMAGIC = "ustar " SOLARIS_TMAGIC = "ustar\00000" MAGICS = [TMAGIC, GNU_TMAGIC, SOLARIS_TMAGIC] LF_OLDFILE = '\0' LF_FILE = '0' LF_LINK = '1' LF_SYMLINK = '2' LF_CHAR = '3' LF_BLOCK = '4' LF_DIR = '5' LF_FIFO = '6' LF_CONTIG = '7' GNUTYPE_DUMPDIR = 'D' GNUTYPE_LONGLINK = 'K' # Identifies the *next* file on the tape as having a long linkname. GNUTYPE_LONGNAME = 'L' # Identifies the *next* file on the tape as having a long name. GNUTYPE_MULTIVOL = 'M' # This is the continuation of a file that began on another volume. GNUTYPE_NAMES = 'N' # For storing filenames that do not fit into the main header. GNUTYPE_SPARSE = 'S' # This is for sparse files. GNUTYPE_VOLHDR = 'V' # This file is a tape/volume header. Ignore it on extraction. end class Dir def self.rm_rf(entry) File.chmod(0755, entry) if File.ftype(entry) == "directory" pdir = Dir.pwd Dir.chdir(entry) Dir.new(".").each do |e| Dir.rm_rf(e) if not [".", ".."].include?(e) end Dir.chdir(pdir) begin Dir.delete(entry) rescue => e $stderr.puts e.message end else begin File.delete(entry) rescue => e $stderr.puts e.message end end end end class Reader def initialize(filehandle) @fp = filehandle end def extract each do |entry| entry.extract end end def list each do |entry| entry.list end end def each @fp.rewind while entry = next_entry yield(entry) end end def next_entry buf = @fp.read(BLOCKSIZE) if buf.length < BLOCKSIZE or buf == "\000" * BLOCKSIZE entry = nil else entry = Entry.new(buf, @fp) end entry end end class Entry attr_reader(:header, :data) def initialize(header, fp) @header = Header.new(header) readdata = lambda do |header| padding = (BLOCKSIZE - (header.size % BLOCKSIZE)) % BLOCKSIZE @data = fp.read(header.size) if header.size > 0 dummy = fp.read(padding) if padding > 0 end readdata.call(@header) if @header.longname? gnuname = @data[0..-2] header = fp.read(BLOCKSIZE) @header = Header.new(header) @header.name = gnuname readdata.call(@header) end end def extract if not @header.name.empty? if @header.dir? begin Dir.mkdir(@header.name, @header.mode) rescue SystemCallError => e $stderr.puts "Couldn't create dir #{@header.name}: " + e.message end elsif @header.file? begin File.open(@header.name, "wb") do |fp| fp.write(@data) fp.chmod(@header.mode) end rescue => e $stderr.puts "Couldn't create file #{@header.name}: " + e.message end else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end #File.chown(@header.uid, @header.gid, @header.name) #File.utime(Time.now, @header.mtime, @header.name) end end def list if not @header.name.empty? if @header.dir? $stderr.puts "d %s" % [@header.name] elsif @header.file? $stderr.puts "f %s (%s)" % [@header.name, @header.size] else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end end end end class Header attr_reader(:name, :uid, :gid, :size, :mtime, :uname, :gname, :mode, :linkflag) attr_writer(:name) def initialize(header) fields = header.unpack('A100 A8 A8 A8 A12 A12 A8 A1 A100 A8 A32 A32 A8 A8') types = ['str', 'oct', 'oct', 'oct', 'oct', 'time', 'oct', 'str', 'str', 'str', 'str', 'str', 'oct', 'oct'] begin converted = [] while field = fields.shift type = types.shift case type when 'str' then converted.push(field) when 'oct' then converted.push(field.oct) when 'time' then converted.push(Time::at(field.oct)) end end @name, @mode, @uid, @gid, @size, @mtime, @chksum, @linkflag, @linkname, @magic, @uname, @gname, @devmajor, @devminor = converted @name.gsub!(/^\.\//, "") @raw = header rescue ArgumentError => e raise "Couldn't determine a real value for a field (#{field})" end raise "Magic header value #{@magic.inspect} is invalid." if not MAGICS.include?(@magic) @linkflag = LF_FILE if @linkflag == LF_OLDFILE or @linkflag == LF_CONTIG @linkflag = LF_DIR if @name[-1] == '/' and @linkflag == LF_FILE @linkname = @linkname[1,-1] if @linkname[0] == '/' @size = 0 if @size < 0 @name = @linkname + '/' + @name if @linkname.size > 0 end def file? @linkflag == LF_FILE end def dir? @linkflag == LF_DIR end def longname? @linkflag == GNUTYPE_LONGNAME end end class Content @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def list begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).list} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class TempSpace @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @olddir = Dir.pwd temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" @tempdir = "#{temp}/tar2rubyscript.d.#{Process.pid}.#{@@count}" @@tempspace = self @newdir = @tempdir @touchthread = Thread.new do loop do sleep 60*60 touch(@tempdir) touch(@tempfile) end end end def extract Dir.rm_rf(@tempdir) if File.exists?(@tempdir) Dir.mkdir(@tempdir) newlocation do # Create the temp environment. File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} # Eventually look for a subdirectory. entries = Dir.entries(".") entries.delete(".") entries.delete("..") if entries.length == 1 entry = entries.shift.dup if File.directory?(entry) @newdir = "#{@tempdir}/#{entry}" end end end # Remember all File objects. @ioobjects = [] ObjectSpace::each_object(File) do |obj| @ioobjects << obj end at_exit do @touchthread.kill # Close all File objects, opened in init.rb . ObjectSpace::each_object(File) do |obj| obj.close if (not obj.closed? and not @ioobjects.include?(obj)) end # Remove the temp environment. Dir.chdir(@olddir) Dir.rm_rf(@tempfile) Dir.rm_rf(@tempdir) end self end def cleanup @archive = nil self end def touch(entry) entry = entry.gsub!(/[\/\\]*$/, "") unless entry.nil? return unless File.exists?(entry) if File.directory?(entry) pdir = Dir.pwd begin Dir.chdir(entry) begin Dir.new(".").each do |e| touch(e) unless [".", ".."].include?(e) end ensure Dir.chdir(pdir) end rescue Errno::EACCES => error $stderr.puts error end else File.utime(Time.now, File.mtime(entry), entry) end end def oldlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@olddir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @olddir) if not file.nil? end res end def newlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@newdir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @newdir) if not file.nil? end res end def self.oldlocation(file="") if block_given? @@tempspace.oldlocation { yield } else @@tempspace.oldlocation(file) end end def self.newlocation(file="") if block_given? @@tempspace.newlocation { yield } else @@tempspace.newlocation(file) end end end class Extract @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def extract begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class MakeTar def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @tarfile = File.expand_path(__FILE__).gsub(/\.rbw?$/, "") + ".tar" end def extract File.open(@tarfile, "wb") {|f| f.write @archive} self end def cleanup @archive = nil self end end def oldlocation(file="") if block_given? TempSpace.oldlocation { yield } else TempSpace.oldlocation(file) end end def newlocation(file="") if block_given? TempSpace.newlocation { yield } else TempSpace.newlocation(file) end end if ShowContent Content.new.list.cleanup elsif JustExtract Extract.new.extract.cleanup elsif ToTar MakeTar.new.extract.cleanup else TempSpace.new.extract.cleanup $:.unshift(newlocation) $:.push(oldlocation) s = ENV["PATH"].dup if Dir.pwd[1..2] == ":/" # Hack ??? s << ";#{newlocation.gsub(/\//, "\\")}" s << ";#{oldlocation.gsub(/\//, "\\")}" else s << ":#{newlocation}" s << ":#{oldlocation}" end ENV["PATH"] = s TAR2RUBYSCRIPT = true unless defined?(TAR2RUBYSCRIPT) newlocation do if __FILE__ == $0 $0.replace(File.expand_path("./init.rb")) if File.file?("./init.rb") load File.expand_path("./init.rb") else $stderr.puts "%s doesn't contain an init.rb ." % __FILE__ end else if File.file?("./init.rb") load File.expand_path("./init.rb") end end end end # dG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE5MDAudGFyLwAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDA3MDAAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDAw # ADEwMjUwMzIwNjE1ADAxNjIwNQAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTkwMC50 # YXIvaW5pdC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAw # MDE3NTAAMDAwMDAwMDIxNzcAMTAxNjAzNTU1MzAAMDE3NTIyACAwAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl # cmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2 # L3J1YnkiCnJlcXVpcmUgImV2L3J3ZCIKClJXREZpbGUJPSAicndkcHJvZ3Jl # c3NiYXIucndkIgoKZGFzaCwgYWxwaGEsIG51bWVyaWMJPSBBUkdWLnRvX3Bh # cgoKcG9ydAk9IG51bWVyaWMuc2hpZnQKcmVtb3RlCT0gZGFzaC5pbmNsdWRl # PygiLXIiKQoKY2xhc3MgUHJvZ3Jlc3NCYXIgPCBSV0RpYWxvZwogIGRlZiBt # YWluCiAgICBAcndkX3dpbmRvdwk9ICJtYWluIgogICAgQG9wdGlvbnMJPSBb # Ik9uZSIsICJUd28iXS5yd2Rfb3B0aW9ucwoKICAgIEByZWZyZXNoCT0gMQkj # IFNvbWUgYnJvd3NlcnMgZG9uJ3QgbGlrZSB2YWx1ZXMgPCAxLgoKICAgIEB0 # ZXN0cwk9IDMKICAgIEBpdGVyYXRpb25zCT0gMTAwCiAgICBAZGVsYXkJPSAw # LjEKICBlbmQKCiAgZGVmIHJ1bnRlc3QKICAgIG1ldGhvZChAdGVzdC5kb3du # Y2FzZSkuY2FsbAogIGVuZAoKICBkZWYgb25lCiAgICBwcm9ncmVzc2JhcihA # cmVmcmVzaCwgIkNvbXBsZXRpbmcgdGVzdC4uLiIsIEBwcm9ncmVzcykgZG8K # ICAgICAgQHJ3ZF93aW5kb3cJPSAiZW5kZWQiCgogICAgICBAaXRlcmF0aW9u # cy50aW1lcyBkbyB8QGNvdW50fAogICAgICAgIEBwcm9ncmVzcwk9IDEuMCpA # Y291bnQvQGl0ZXJhdGlvbnMKCiAgICAgICAgc2xlZXAgQGRlbGF5CiAgICAg # IGVuZAogICAgZW5kCiAgZW5kCgogIGRlZiB0d28KICAgIHByb2dyZXNzYmFy # KEByZWZyZXNoLCBbIlRlc3QgI3soQGNvdW50MXx8MCkrMX0vI3tAdGVzdHN9 # OiIsIEBwcm9ncmVzczFdLCBbIkNvbXBsZXRpbmcgdGhpcyB0ZXN0Li4uIiwg # QHByb2dyZXNzMl0pIGRvCiAgICAgIEByd2Rfd2luZG93CT0gImVuZGVkIgoK # ICAgICAgQHRlc3RzLnRpbWVzIGRvIHxAY291bnQxfAoKICAgICAgICBAaXRl # cmF0aW9ucy50aW1lcyBkbyB8QGNvdW50MnwKICAgICAgICAgIEBwcm9ncmVz # czEJPSAoMS4wKihAY291bnQxfHwwKSpAaXRlcmF0aW9ucysoQGNvdW50Mnx8 # MCkpLyhAdGVzdHMqQGl0ZXJhdGlvbnMpCgkgIEBwcm9ncmVzczIJPSAxLjAq # QGNvdW50Mi9AaXRlcmF0aW9ucwoKICAgICAgICAgIHNsZWVwIEBkZWxheQog # ICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAogIGVuZAplbmQKClByb2dy # ZXNzQmFyLmZpbGUoUldERmlsZSkuc2VydmUocG9ydCwgcmVtb3RlID8gIi5y # d2R1aWRzIiA6IG5pbCkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5l # YXIycnVieXNjcmlwdC5mLjExOTAwLnRhci9yd2Rwcm9ncmVzc2Jhci5yd2QA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwMDY3MAAxMDE2 # MDMwNzAwMwAwMjIwMDIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAPGFwcGxpY2F0aW9uPgogIDx3aW5kb3cgbmFtZT0ibWFp # biIgdGl0bGU9IlByb2dyZXNzQmFyIj4KICAgIDxwYW5lbD4KICAgICAgPHA+ # V2hpY2ggdGVzdCBkbyB5b3Ugd2FudCB0byBydW4/PC9wPgogICAgICA8c2Vs # ZWN0IG5hbWU9InRlc3QiPiUlb3B0aW9ucyUlPC9zZWxlY3Q+CiAgICA8L3Bh # bmVsPgogICAgPGJ1dHRvbiBjYXB0aW9uPSJTdGFydCBUZXN0IiBhY3Rpb249 # InJ1bnRlc3QiLz4KICA8L3dpbmRvdz4KCiAgPHdpbmRvdyBuYW1lPSJlbmRl # ZCIgdGl0bGU9IlByb2dyZXNzQmFyIj4KICAgIDxwPlRlc3QgaGFzIGVuZGVk # LjwvcD4KICAgIDxob3Jpem9udGFsPgogICAgICA8bWFpbi8+CiAgICAgIDxi # dXR0b24gY2FwdGlvbj0iUmVwZWF0IFRlc3QiIGFjdGlvbj0icnVudGVzdCIv # PgogICAgPC9ob3Jpem9udGFsPgogIDwvd2luZG93Pgo8L2FwcGxpY2F0aW9u # PgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3Jp # cHQuZi4xMTkwMC50YXIvdGFyMnJ1YnlzY3JpcHQuc2gAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0 # NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDAwMzQAMTAxNTY2NzI3MzIAMDIx # NTY2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw # MDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AGV2ZG8gcnVieWxpYmNvcHkgLS1yd2QtZXhpdAoAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE5MDAu # dGFyL2V2LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAw # MDAxNzUwADAwMDAwMDAwMDAwADEwMjUwMzIwNjE1ADAxNjYzMQAgNQAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # ZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAw # MDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1 # YnlzY3JpcHQuZi4xMTkwMC50YXIvZXYvZnRvb2xzLnJiAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # MDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDY1MTYAMTAyNTAzMjA2 # MTUAMDIwNDc3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAHJlcXVpcmUgImZ0b29scyIKCmNsYXNzIERpcgogIGRlZiBzZWxm # LmNvcHkoZnJvbSwgdG8pCiAgICBpZiBGaWxlLmRpcmVjdG9yeT8oZnJvbSkK # ICAgICAgcGRpcgk9IERpci5wd2QKICAgICAgdG9kaXIJPSBGaWxlLmV4cGFu # ZF9wYXRoKHRvKQoKICAgICAgRmlsZS5ta3BhdGgodG9kaXIpCgogICAgICBE # aXIuY2hkaXIoZnJvbSkKICAgICAgICBEaXIubmV3KCIuIikuZWFjaCBkbyB8 # ZXwKICAgICAgICAgIERpci5jb3B5KGUsIHRvZGlyKyIvIitlKQlpZiBub3Qg # WyIuIiwgIi4uIl0uaW5jbHVkZT8oZSkKICAgICAgICBlbmQKICAgICAgRGly # LmNoZGlyKHBkaXIpCiAgICBlbHNlCiAgICAgIHRvZGlyCT0gRmlsZS5kaXJu # YW1lKEZpbGUuZXhwYW5kX3BhdGgodG8pKQoKICAgICAgRmlsZS5ta3BhdGgo # dG9kaXIpCgogICAgICBGaWxlLmNvcHkoZnJvbSwgdG8pCiAgICBlbmQKICBl # bmQKCiAgZGVmIHNlbGYubW92ZShmcm9tLCB0bykKICAgIERpci5jb3B5KGZy # b20sIHRvKQogICAgRGlyLnJtX3JmKGZyb20pCiAgZW5kCgogIGRlZiBzZWxm # LnJtX3JmKGVudHJ5KQogICAgRmlsZS5jaG1vZCgwNzU1LCBlbnRyeSkKCiAg # ICBpZiBGaWxlLmZ0eXBlKGVudHJ5KSA9PSAiZGlyZWN0b3J5IgogICAgICBw # ZGlyCT0gRGlyLnB3ZAoKICAgICAgRGlyLmNoZGlyKGVudHJ5KQogICAgICAg # IERpci5uZXcoIi4iKS5lYWNoIGRvIHxlfAogICAgICAgICAgRGlyLnJtX3Jm # KGUpCWlmIG5vdCBbIi4iLCAiLi4iXS5pbmNsdWRlPyhlKQogICAgICAgIGVu # ZAogICAgICBEaXIuY2hkaXIocGRpcikKCiAgICAgIGJlZ2luCiAgICAgICAg # RGlyLmRlbGV0ZShlbnRyeSkKICAgICAgcmVzY3VlID0+IGUKICAgICAgICAk # c3RkZXJyLnB1dHMgZS5tZXNzYWdlCiAgICAgIGVuZAogICAgZWxzZQogICAg # ICBiZWdpbgogICAgICAgIEZpbGUuZGVsZXRlKGVudHJ5KQogICAgICByZXNj # dWUgPT4gZQogICAgICAgICRzdGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAg # ZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIHNlbGYuZmluZChlbnRyeT1uaWws # IG1hc2s9bmlsKQogICAgZW50cnkJPSAiLiIJaWYgZW50cnkubmlsPwoKICAg # IGVudHJ5CT0gZW50cnkuZ3N1YigvW1wvXFxdKiQvLCAiIikJdW5sZXNzIGVu # dHJ5Lm5pbD8KCiAgICBtYXNrCT0gL14je21hc2t9JC9pCWlmIG1hc2sua2lu # ZF9vZj8oU3RyaW5nKQoKICAgIHJlcwk9IFtdCgogICAgaWYgRmlsZS5kaXJl # Y3Rvcnk/KGVudHJ5KQogICAgICBwZGlyCT0gRGlyLnB3ZAoKICAgICAgcmVz # ICs9IFsiJXMvIiAlIGVudHJ5XQlpZiBtYXNrLm5pbD8gb3IgZW50cnkgPX4g # bWFzawoKICAgICAgYmVnaW4KICAgICAgICBEaXIuY2hkaXIoZW50cnkpCgog # ICAgICAgIGJlZ2luCiAgICAgICAgICBEaXIubmV3KCIuIikuZWFjaCBkbyB8 # ZXwKICAgICAgICAgICAgcmVzICs9IERpci5maW5kKGUsIG1hc2spLmNvbGxl # Y3R7fGV8IGVudHJ5KyIvIitlfQl1bmxlc3MgWyIuIiwgIi4uIl0uaW5jbHVk # ZT8oZSkKICAgICAgICAgIGVuZAogICAgICAgIGVuc3VyZQogICAgICAgICAg # RGlyLmNoZGlyKHBkaXIpCiAgICAgICAgZW5kCiAgICAgIHJlc2N1ZSBFcnJu # bzo6RUFDQ0VTID0+IGUKICAgICAgICAkc3RkZXJyLnB1dHMgZS5tZXNzYWdl # CiAgICAgIGVuZAogICAgZWxzZQogICAgICByZXMgKz0gW2VudHJ5XQlpZiBt # YXNrLm5pbD8gb3IgZW50cnkgPX4gbWFzawogICAgZW5kCgogICAgcmVzCiAg # ZW5kCmVuZAoKY2xhc3MgRmlsZQogIGRlZiBzZWxmLnJvbGxiYWNrdXAoZmls # ZSwgbW9kZT1uaWwpCiAgICBiYWNrdXBmaWxlCT0gZmlsZSArICIuUkIuQkFD # S1VQIgogICAgY29udHJvbGZpbGUJPSBmaWxlICsgIi5SQi5DT05UUk9MIgog # ICAgcmVzCQk9IG5pbAoKICAgIEZpbGUudG91Y2goZmlsZSkgICAgdW5sZXNz # IEZpbGUuZmlsZT8oZmlsZSkKCgkjIFJvbGxiYWNrCgogICAgaWYgRmlsZS5m # aWxlPyhiYWNrdXBmaWxlKSBhbmQgRmlsZS5maWxlPyhjb250cm9sZmlsZSkK # ICAgICAgJHN0ZGVyci5wdXRzICJSZXN0b3JpbmcgI3tmaWxlfS4uLiIKCiAg # ICAgIEZpbGUuY29weShiYWNrdXBmaWxlLCBmaWxlKQkJCQkjIFJvbGxiYWNr # IGZyb20gcGhhc2UgMwogICAgZW5kCgoJIyBSZXNldAoKICAgIEZpbGUuZGVs # ZXRlKGJhY2t1cGZpbGUpCWlmIEZpbGUuZmlsZT8oYmFja3VwZmlsZSkJIyBS # ZXNldCBmcm9tIHBoYXNlIDIgb3IgMwogICAgRmlsZS5kZWxldGUoY29udHJv # bGZpbGUpCWlmIEZpbGUuZmlsZT8oY29udHJvbGZpbGUpCSMgUmVzZXQgZnJv # bSBwaGFzZSAzIG9yIDQKCgkjIEJhY2t1cAoKICAgIEZpbGUuY29weShmaWxl # LCBiYWNrdXBmaWxlKQkJCQkJIyBFbnRlciBwaGFzZSAyCiAgICBGaWxlLnRv # dWNoKGNvbnRyb2xmaWxlKQkJCQkJIyBFbnRlciBwaGFzZSAzCgoJIyBUaGUg # cmVhbCB0aGluZwoKICAgIGlmIGJsb2NrX2dpdmVuPwogICAgICBpZiBtb2Rl # Lm5pbD8KICAgICAgICByZXMJPSB5aWVsZAogICAgICBlbHNlCiAgICAgICAg # RmlsZS5vcGVuKGZpbGUsIG1vZGUpIGRvIHxmfAogICAgICAgICAgcmVzCT0g # eWllbGQoZikKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCgkjIENs # ZWFudXAKCiAgICBGaWxlLmRlbGV0ZShiYWNrdXBmaWxlKQkJCQkJIyBFbnRl # ciBwaGFzZSA0CiAgICBGaWxlLmRlbGV0ZShjb250cm9sZmlsZSkJCQkJCSMg # RW50ZXIgcGhhc2UgNQoKCSMgUmV0dXJuLCBsaWtlIEZpbGUub3BlbgoKICAg # IHJlcwk9IEZpbGUub3BlbihmaWxlLCAobW9kZSBvciAiciIpKQl1bmxlc3Mg # YmxvY2tfZ2l2ZW4/CgogICAgcmVzCiAgZW5kCgogIGRlZiBzZWxmLnRvdWNo # KGZpbGUpCiAgICBpZiBGaWxlLmV4aXN0cz8oZmlsZSkKICAgICAgRmlsZS51 # dGltZShUaW1lLm5vdywgRmlsZS5tdGltZShmaWxlKSwgZmlsZSkKICAgIGVs # c2UKICAgICAgRmlsZS5vcGVuKGZpbGUsICJhIil7fGZ8fQogICAgZW5kCiAg # ZW5kCgogIGRlZiBzZWxmLndoaWNoKGZpbGUpCiAgICByZXMJPSBuaWwKCiAg # ICBpZiB3aW5kb3dzPwogICAgICBmaWxlCT0gZmlsZS5nc3ViKC9cLmV4ZSQv # aSwgIiIpICsgIi5leGUiCiAgICAgIHNlcAkJPSAiOyIKICAgIGVsc2UKICAg # ICAgc2VwCQk9ICI6IgogICAgZW5kCgogICAgY2F0Y2ggOnN0b3AgZG8KICAg # ICAgRU5WWyJQQVRIIl0uc3BsaXQoLyN7c2VwfS8pLnJldmVyc2UuZWFjaCBk # byB8ZHwKICAgICAgICBpZiBGaWxlLmRpcmVjdG9yeT8oZCkKICAgICAgICAg # IERpci5uZXcoZCkuZWFjaCBkbyB8ZXwKICAgICAgICAgICAgIGlmIGUuZG93 # bmNhc2UgPT0gZmlsZS5kb3duY2FzZQogICAgICAgICAgICAgICByZXMJPSBG # aWxlLmV4cGFuZF9wYXRoKGUsIGQpCiAgICAgICAgICAgICAgIHRocm93IDpz # dG9wCiAgICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgZW5k # CiAgICAgIGVuZAogICAgZW5kCgogICAgcmVzCiAgZW5kCmVuZAoAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJy # dWJ5c2NyaXB0LmYuMTE5MDAudGFyL2V2L3J1YnkucmIAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # ADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDQwMjYwADEwMjUwMzIw # NjE1ADAyMDE0NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAByZXF1aXJlICJjZ2kiCnJlcXVpcmUgInJiY29uZmlnIgpyZXF1 # aXJlICJ0aHJlYWQiCgpUaHJlYWQuYWJvcnRfb25fZXhjZXB0aW9uCT0gdHJ1 # ZQoKJERFQlVHCT0gKCRERUJVRyBvciBFTlZbIlJVQllERUJVRyJdIG9yIGZh # bHNlKQoKI3Rla2Vucwk9ICdcd1x+XEBcI1wkXCVcXlwmXCpcLVwrJwp0ZWtl # bnMJCT0gJ15cc1xyXG5cYFwhXChcKVxbXF1ce1x9XDxcPlwsXC5cL1w/XFxc # fFw9XDtcOlwiJwoKI3Rla2VuczExCT0gJ1x3Jwp0ZWtlbnMxMQk9IHRla2Vu # cyArICInIgoKdGVrZW5zMjEJPSB0ZWtlbnMgKyAiJyIKdGVrZW5zMjIJPSB0 # ZWtlbnMKdGVrZW5zMjMJPSB0ZWtlbnMgKyAiJyIKCnRla2VuczMxCT0gJ1x3 # XHNcclxuJwoKUmVnRXhwU3RyaW5nV29yZAk9ICIoWyN7dGVrZW5zMTF9XSsp # IgkJCQkJCQkJCTsgUmVnRXhwV29yZAkJPSBSZWdleHAubmV3KFJlZ0V4cFN0 # cmluZ1dvcmQpClJlZ0V4cFN0cmluZ1dvcmQyCT0gIihbI3t0ZWtlbnMyMX1d # KFsje3Rla2VuczIyfV0qWyN7dGVrZW5zMjN9XSk/KSIJCQkJCTsgUmVnRXhw # V29yZDIJCT0gUmVnZXhwLm5ldyhSZWdFeHBTdHJpbmdXb3JkMikKUmVnRXhw # U3RyaW5nVGV4dAk9ICIoWyN7dGVrZW5zMzF9XSspIgkJCQkJCQkJCTsgUmVn # RXhwVGV4dAkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ1RleHQpClJlZ0V4 # cFN0cmluZ0ZpbGUJPSAnKFx3W1x3XC5cLV0qKScJCQkJCQkJCQk7IFJlZ0V4 # cEZpbGUJCT0gUmVnZXhwLm5ldyhSZWdFeHBTdHJpbmdGaWxlKQpSZWdFeHBT # dHJpbmdFbWFpbAk9ICcoW1x3XC1cLl0rQFtcd1wtXC5dKyknCQkJCQkJCQk7 # IFJlZ0V4cEVtYWlsCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nRW1haWwp # ClJlZ0V4cFN0cmluZ1VSTAkJPSAnKFx3KzpcL1wvW1x3XC5cLV0rKDpcZCop # P1wvW1x3XC5cLVwvXCNcP1w9XCVdKiknCQkJCQk7IFJlZ0V4cFVSTAkJPSBS # ZWdleHAubmV3KFJlZ0V4cFN0cmluZ1VSTCkKUmVnRXhwU3RyaW5nUHJpbnQJ # PSAnKFtcdyBcdFxyXG5cYFx+XCFcQFwjXCRcJVxeXCZcKlwoXClcLVwrXD1c # W1xdXHtcfVw7XDpcJ1wiXCxcLlwvXDxcPlw/XFxcfF0rKScJOyBSZWdFeHBQ # cmludAkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ1ByaW50KQpSZWdFeHBT # dHJpbmdEaWZmCT0gJyheW1wtXCtdKFteXC1cK10uKik/KScJCQkJCQkJCTsg # UmVnRXhwRGlmZgkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ0RpZmYpClJl # Z0V4cFN0cmluZ0hUSExpbmsJPSAnKGBbXHdcLF0qXGJhXGJbXmBdKmApJwkJ # CQkJCQkJOyBSZWdFeHBIVEhMaW5rCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3Ry # aW5nSFRITGluaykKUmVnRXhwU3RyaW5nSFRIU3BlY2lhbAk9ICcoYFteYF0q # YCknCQkJCQkJCQkJCTsgUmVnRXhwSFRIU3BlY2lhbAk9IFJlZ2V4cC5uZXco # UmVnRXhwU3RyaW5nSFRIU3BlY2lhbCkKCm1vZHVsZSBFbnVtZXJhYmxlCiAg # ZGVmIGRlZXBfZHVwCiAgICBNYXJzaGFsOjpsb2FkKE1hcnNoYWw6OmR1bXAo # ZHVwKSkKICBlbmQKCiAgZGVmIGRlZXBfY2xvbmUKICAgIE1hcnNoYWw6Omxv # YWQoTWFyc2hhbDo6ZHVtcChjbG9uZSkpCiAgZW5kCmVuZAoKY2xhc3MgVGhy # ZWFkCiAgZGVmIHNlbGYuYmFja2dyb3VuZCgqYXJncykKICAgIG5ldygqYXJn # cykgZG8gfCphcmdzfAogICAgICBUaHJlYWQucGFzcwoKICAgICAgeWllbGQo # KmFyZ3MpCiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBPYmplY3QKICBhbGlh # cyBkZWVwX2R1cCA6ZHVwCiAgYWxpYXMgZGVlcF9jbG9uZSA6Y2xvbmUKCiAg # ZGVmIHRvX2ZzCiAgICB0b19zCiAgZW5kCgogIGRlZiBpZHMKICAgIGlkCiAg # ZW5kCmVuZAoKY2xhc3MgTnVtZXJpYwogIGRlZiB0b19mcwogICAgdG9fZgog # IGVuZAoKICBkZWYgdG9faHRtbChlb2xjb252ZXJzaW9uPXRydWUpCiAgICBz # ZWxmLnRvX3MudG9faHRtbChlb2xjb252ZXJzaW9uKQogIGVuZAplbmQKCmNs # YXNzIEludGVnZXIKICBkZWYgb2N0CiAgICBuCT0gc2VsZgogICAgcmVzCT0g # W10KCiAgICB3aGlsZSBuID4gOAogICAgICBuLCB4CT0gbi5kaXZtb2QoOCkK # ICAgICAgcmVzIDw8IHgKICAgIGVuZAogICAgcmVzIDw8IG4KCiAgICByZXMu # cmV2ZXJzZS5qb2luKCIiKQogIGVuZAplbmQKCmNsYXNzIFN0cmluZwogIGRl # ZiBjaG9tcCEoZHVtbXk9bmlsKQogICAgc2VsZi5nc3ViISgvW1xyXG5dKlx6 # LywgIiIpCiAgZW5kCgogIGRlZiBjaG9tcChkdW1teT1uaWwpCiAgICBzZWxm # LmdzdWIoL1tcclxuXSpcei8sICIiKQogIGVuZAoKICBkZWYgbGYKICAgIHNl # bGYuZ3N1YigvXHIqXG4vLCAiXG4iKS5nc3ViKC9cblx6LywgIiIpICsgIlxu # IgogIGVuZAoKICBkZWYgY3JsZgogICAgc2VsZi5nc3ViKC9ccipcbi8sICJc # clxuIikuZ3N1YigvXHJcblx6LywgIiIpICsgIlxyXG4iCiAgZW5kCgogIGRl # ZiBzdHJpcAogICAgc2VsZi5zdHJpcGJlZm9yZS5zdHJpcGFmdGVyCiAgZW5k # CgogIGRlZiBzdHJpcGJlZm9yZQogICAgc2VsZi5nc3ViKC9cQVtbOmJsYW5r # Ol1cclxuXSovLCAiIikKICBlbmQKCiAgZGVmIHN0cmlwYWZ0ZXIKICAgIHNl # bGYuZ3N1YigvW1s6Ymxhbms6XVxyXG5dKlx6LywgIiIpCiAgZW5kCgogIGRl # ZiBjb21wcmVzcwogICAgc2VsZi5nc3ViKC9bWzpibGFuazpdXHJcbl0rLywg # IiAiKS5zdHJpcAogIGVuZAoKICBkZWYgY29tcHJlc3NzcGFjZXMKICAgIHNl # bGYuZ3N1YigvW1s6Ymxhbms6XV0rLywgIiAiKQogIGVuZAoKICBkZWYgY29t # cHJlc3NwZXJsaW5lCiAgICByZXMJPSBzZWxmLnNwbGl0KC9cbi8pCiAgICBy # ZXMuY29sbGVjdCF7fGxpbmV8IGxpbmUuY29tcHJlc3N9CiAgICByZXMuZGVs # ZXRlX2lme3xsaW5lfCBsaW5lLmVtcHR5P30KICAgIHJlcy5qb2luKCJcbiIp # CiAgZW5kCgogIGRlZiBudW1lcmljPwogICAgZCwgYSwgbgk9IFtzZWxmXS50 # b19wYXIKCiAgICBub3Qgbi5lbXB0eT8KICBlbmQKCiAgZGVmIGV4ZWMoaW5w # dXQ9bmlsLCBvdXRwdXQ9dHJ1ZSkKICAgIHJlcwk9IFtdCgogICAgSU8ucG9w # ZW4oc2VsZiwgIncrIikgZG8gfGZ8CiAgICAgIGYucHV0cyBpbnB1dAl1bmxl # c3MgaW5wdXQubmlsPwogICAgICBmLmNsb3NlX3dyaXRlCgogICAgICByZXMJ # PSBmLnJlYWRsaW5lcyBpZiBvdXRwdXQKICAgIGVuZAoKICAgIHJlcy5qb2lu # KCIiKQogIGVuZAoKICBkZWYgZXZhbAogICAgS2VybmVsOjpldmFsKHNlbGYp # CiAgZW5kCgogIGRlZiBzcGVhawogICAgcmVxdWlyZSAiZHJiIgoKICAgIERS # Yi5zdGFydF9zZXJ2aWNlCiAgICBEUmJPYmplY3QubmV3KG5pbCwgImRydWJ5 # Oi8vbG9jYWxob3N0OjMxMDAiKS5zcGVhayhzZWxmKQogIGVuZAoKICBkZWYg # c3BsaXRibG9ja3MoKmRlbGltaXRlcnMpCiAgICBiZWdpbmRlbGltaXRlcnMJ # PSBbXQogICAgZW5kZGVsaW1pdGVycwk9IFtdCgogICAgZGVsaW1pdGVycy5l # YWNoIGRvIHxrLCB2fAogICAgICBiZWdpbmRlbGltaXRlcnMJPDwgay5kb3du # Y2FzZQogICAgICBlbmRkZWxpbWl0ZXJzCTw8IHYuZG93bmNhc2UKICAgIGVu # ZAoKICAgIGJkCT0gYmVnaW5kZWxpbWl0ZXJzLmNvbGxlY3QJe3xzfCBSZWdl # eHAuZXNjYXBlKHMpfQogICAgZWQJPSBlbmRkZWxpbWl0ZXJzLmNvbGxlY3QJ # CXt8c3wgUmVnZXhwLmVzY2FwZShzKX0KCiAgICBiZQk9IGJkLmpvaW4oInwi # KQogICAgZWUJPSBlZC5qb2luKCJ8IikKCiAgICByZXMJCT0gW10KICAgIHR5 # cGUJPSAwCiAgICB0bXAJCT0gIiIKICAgIGJzCQk9ICIiCiAgICBlcwkJPSAi # IgoKICAgIHNlbGYuc3BsaXQoLygje2VlfXwje2JlfSkvaSkuZWFjaCBkbyB8 # c3wKICAgICAgaWYgdHlwZSA9PSAwCiAgICAgICAgaWYgYmVnaW5kZWxpbWl0 # ZXJzLmluY2x1ZGU/KHMuZG93bmNhc2UpCiAgICAgICAgICBpCT0gYmVnaW5k # ZWxpbWl0ZXJzLmluZGV4KHMuZG93bmNhc2UpCiAgICAgICAgICB0eXBlCT0g # aSsxCiAgICAgICAgICB0bXAJPSBzCiAgICAgICAgICBicwk9IHMuZG93bmNh # c2UKICAgICAgICAgIGVzCT0gZW5kZGVsaW1pdGVyc1tpXQogICAgICAgIGVs # c2UKICAgICAgICAgIHJlcyA8PCBbMCwgc10JdW5sZXNzIHMuZW1wdHk/CiAg # ICAgICAgZW5kCiAgICAgIGVsc2UKICAgICAgICBpZiBzLmRvd25jYXNlID09 # IGVzCiAgICAgICAgICByZXMgPDwgW3R5cGUsIHRtcCArIHNdCiAgICAgICAg # ICB0eXBlCT0gMAogICAgICAgICAgdG1wCT0gIiIKICAgICAgICAgIGJzCT0g # IiIKICAgICAgICAgIGVzCT0gIiIKICAgICAgICBlbHNlCiAgICAgICAgICBp # ZiBzLmRvd25jYXNlID09IGJzCiAgICAgICAgICAgIHJlcyA8PCBbMCwgdG1w # XQogICAgICAgICAgICB0bXAJPSBzCiAgICAgICAgICBlbHNlCiAgICAgICAg # ICAgIHRtcAk9IHRtcCArIHMKICAgICAgICAgIGVuZAogICAgICAgIGVuZAog # ICAgICBlbmQKICAgIGVuZAoKICAgIHJlcyA8PCBbMCwgdG1wXQl1bmxlc3Mg # dG1wLmVtcHR5PwoKICAgIHJldHVybiByZXMKICBlbmQKCiAgZGVmIHNwbGl0 # d29yZHModG9rZW5zPVtdKQogICAgdG9rZW5zCQk9IFt0b2tlbnNdCXVubGVz # cyB0b2tlbnMua2luZF9vZj8oQXJyYXkpCiAgICByZXMJCQk9IFtdCgogICAg # c2VsZi5zcGxpdGJsb2NrcyhbIiciLCAiJyJdLCBbJyInLCAnIiddKS5lYWNo # IGRvIHx0eXBlLCBzfAogICAgICBjYXNlIHR5cGUKICAgICAgd2hlbiAwCiAg # ICAgICAgdG9rZW5zLmVhY2ggZG8gfHRva2VufAogICAgICAgICAgdG9rZW4y # CT0gdG9rZW4KICAgICAgICAgIHRva2VuMgk9IFJlZ2V4cC5lc2NhcGUodG9r # ZW4yKQlpZiB0b2tlbjIua2luZF9vZj8oU3RyaW5nKQogICAgICAgICAgcy5n # c3ViISgvI3t0b2tlbjJ9LywgIiAje3Rva2VufSAiKQogICAgICAgIGVuZAog # ICAgICAgIHMuc3BsaXQoKS5lYWNoIGRvIHx3fAogICAgICAgICAgcmVzIDw8 # IHcKICAgICAgICBlbmQKICAgICAgd2hlbiAxLCAyCiAgICAgICAgcmVzIDw8 # IHNbMS4uLTJdCiAgICAgIGVuZAogICAgZW5kCgogICAgcmV0dXJuIHJlcwog # IGVuZAoKICBkZWYgdW5jb21tZW50CiAgICByZXMJPSBbXQoKICAgIHNlbGYu # c3BsaXRibG9ja3MoWyInIiwgIiciXSwgWyciJywgJyInXSwgWyIjIiwgIlxu # Il0pLmVhY2ggZG8gfHR5cGUsIHN8CiAgICAgIGNhc2UgdHlwZQogICAgICB3 # aGVuIDAsIDEsIDIJdGhlbglyZXMgPDwgcwogICAgICB3aGVuIDMJCXRoZW4J # cmVzIDw8ICJcbiIKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMuam9pbigi # IikKICBlbmQKCiAgZGVmIG5vcXVvdGVzCiAgICBzZWxmLnN1YigvXEFbJyJd # LywgIiIpLnN1YigvWyciXVx6LywgIiIpCiAgZW5kCgogIGRlZiB0b19odG1s # KGVvbGNvbnZlcnNpb249dHJ1ZSkKICAgIHMJPSBDR0kuZXNjYXBlSFRNTChz # ZWxmKQoKICAgIHMuZ3N1YiEoL1wiLywgIlwmIzM0OyIpCiAgICBzLmdzdWIh # KC9cJy8sICJcJiMxODA7IikKCiAgICBpZiBlb2xjb252ZXJzaW9uCiAgICAg # IHMuZ3N1YiEoL1xuLyAsICI8YnI+IikKICAgIGVuZAoKICAgIHMKICBlbmQK # CiAgZGVmIGZyb21faHRtbChlb2xjb252ZXJzaW9uPXRydWUpCiAgICBzCT0g # c2VsZgoKICAgIHMuZ3N1YiEoLyYjMzQ7LyAsICJcIiIpCiAgICBzLmdzdWIh # KC8mIzE4MDsvLCAiXCciKQoKICAgIHMJPSBDR0kudW5lc2NhcGVIVE1MKHNl # bGYpCgogICAgaWYgZW9sY29udmVyc2lvbgogICAgICBzLmdzdWIhKC88YnI+ # LywgIlxuIikKICAgIGVuZAoKICAgIHMKICBlbmQKCiAgZGVmIHRvX2ZzCiAg # ICBpZiBudW1lcmljPwogICAgICB0b19mCiAgICBlbHNlCiAgICAgIHRvX3MK # ICAgIGVuZAogIGVuZAplbmQKCmNsYXNzIEFycmF5CiAgZGVmIGNob21wIQog # ICAgc2VsZi5jb2xsZWN0IXt8c3wgcy5jaG9tcH0KICBlbmQKCiAgZGVmIGNo # b21wCiAgICBzZWxmLmNvbGxlY3R7fHN8IHMuY2hvbXB9CiAgZW5kCgogIGRl # ZiBjb21wcmVzcwogICAgc2VsZi5jb2xsZWN0e3xzfCBzLmNvbXByZXNzfQog # IGVuZAoKICBkZWYgdW5jb21tZW50CiAgICBzZWxmLmpvaW4oIlwwIikudW5j # b21tZW50LnNwbGl0KCJcMCIpCiAgZW5kCgogIGRlZiBzdHJpcAogICAgc2Vs # Zi5jb2xsZWN0e3xzfCBzLnN0cmlwfQogIGVuZAoKICBkZWYgc3VtCiAgICBy # ZXMJPSAwCiAgICBzZWxmLmVhY2ggZG8gfG58CiAgICAgIHJlcyArPSBuCiAg # ICBlbmQKICAgIHJlcwogIGVuZAoKICBkZWYgcHJvZHVjdAogICAgcmVzCT0g # MQogICAgc2VsZi5lYWNoIGRvIHxufAogICAgICByZXMgKj0gbgogICAgZW5k # CiAgICByZXMKICBlbmQKCiAgZGVmIGpvaW53b3JkcyhzZXA9IiAiLCBxdW90 # ZT0nIicpCiAgICBzZWxmLmNvbGxlY3QgZG8gfHN8CiAgICAgIHMJPSBxdW90 # ZSArIHMgKyBxdW90ZQlpZiBzID1+IC9bWzpibGFuazpdXS8KICAgICAgcwog # ICAgZW5kLmpvaW4oc2VwKQogIGVuZAoKICBkZWYgZG9taW5vKHRhYmVsbGVu # LCBrb2xvbT1uaWwsIG9ubHltYXRjaGluZ2xpbmVzPWZhbHNlKQogICAgbGlu # a3MJPSBzZWxmCiAgICByZXMJCT0gW10KICAgIHJlcwkJPSBzZWxmLmR1cAl1 # bmxlc3Mgb25seW1hdGNoaW5nbGluZXMKCiAgICB0YWJlbGxlbi5lYWNoIGRv # IHxyZWNodHN8CiAgICAgIHRtcAk9IFtdCgogICAgICBsaW5rcy5lYWNoIGRv # IHxsfAogICAgICAgIGlmIGtvbG9tLm5pbD8gb3IgbC5sZW5ndGggPT0ga29s # b20KICAgICAgICAgIHJlY2h0cy5lYWNoIGRvIHxyfAogICAgICAgICAgICB0 # bXAgPDwgbCArIHJbMS4uLTFdCWlmIGxbLTFdID09IHJbMF0KICAgICAgICAg # IGVuZAogICAgICAgIGVuZAogICAgICBlbmQKCiAgICAgIGxpbmtzCT0gdG1w # CiAgICAgIHJlcy5jb25jYXQodG1wKQogICAgZW5kCgogICAgcmVzCT0gcmVz # LnNvcnQudW5pcQogIGVuZAoKICBkZWYgZG9taW5vbG9vcCh0YWJlbGxlbikK # ICAgIGxyZXMJPSBbXQogICAgcmVzCQk9IHNlbGYuZHVwCiAgICBrb2xvbQk9 # IDIKCiAgICB3aGlsZSBscmVzLmxlbmd0aCAhPSByZXMubGVuZ3RoIGRvCiAg # ICAgIGxyZXMJPSByZXMuZHVwCiAgICAgIHJlcwk9IHJlcy5kb21pbm8odGFi # ZWxsZW4sIGtvbG9tKQoKICAgICAgcmVzLmVhY2ggZG8gfGxpbmV8CiAgICAg # ICAgbGluZSA8PCAiKiIJaWYgKGxpbmUubGVuZ3RoICE9IGxpbmUudW5pcS5s # ZW5ndGggYW5kIGxpbmVbLTFdICE9ICIqIikKICAgICAgZW5kCgogICAgICAk # c3RkZXJyLnByaW50ICIjezEwMCoocmVzLmxlbmd0aCkvKGxyZXMubGVuZ3Ro # KX0lICIKCiAgICAgIGtvbG9tICs9IDEKICAgIGVuZAoKICAgICRzdGRlcnIu # cHV0cyAiIgoKICAgIHJldHVybiByZXMKICBlbmQKCiAgZGVmIGJ1aWxkdHJl # ZQogICAgc2VsZi5kb21pbm9sb29wKFtzZWxmXSkKICBlbmQKCiAgZGVmIHN1 # YnNldChmaWVsZHMsIHZhbHVlcywgcmVzdWx0cywgZXhhY3Q9dHJ1ZSwgZW1w # dHlsaW5lPW5pbCwgam9pbndpdGg9bmlsKQogICAgZmllbGRzCT0gW2ZpZWxk # c10JCXVubGVzcyBmaWVsZHMua2luZF9vZj8gQXJyYXkKICAgIHZhbHVlcwk9 # IFt2YWx1ZXNdCQl1bmxlc3MgdmFsdWVzLmtpbmRfb2Y/IEFycmF5CiAgICBy # ZXN1bHRzCT0gW3Jlc3VsdHNdCQl1bmxlc3MgcmVzdWx0cy5raW5kX29mPyBB # cnJheQogICAgZW1wdHlsaW5lCT0gZW1wdHlsaW5lLmRvd25jYXNlCXVubGVz # cyBlbXB0eWxpbmUubmlsPwogICAgcmVzCQk9IHNlbGYuZHVwCiAgICByZXMu # ZGVsZXRlX2lmIHt0cnVlfQoKICAgIHNlbGYuZWFjaCBkbyB8bHwKICAgICAg # b2sJPSB0cnVlCgogICAgICBjYXNlIGwuY2xhc3MudG9fcwogICAgICB3aGVu # ICJTdHJpbmciCiAgICAgICAgYwkJPSBsLnNwbGl0d29yZHMKICAgICAgICBj # b3JyZWN0aW9uCT0gMQogICAgICAgIGpvaW53aXRoCT0gIiAiCWlmIGpvaW53 # aXRoLm5pbD8KICAgICAgd2hlbiAiQXJyYXkiCiAgICAgICAgYwkJPSBsCiAg # ICAgICAgY29ycmVjdGlvbgk9IDAKICAgICAgZW5kCgogICAgICAjY2F0Y2gg # OnN0b3AgZG8KICAgICAgICB2YWx1ZXMyCT0gdmFsdWVzLmR1cAogICAgICAg # IGZpZWxkcy5lYWNoIGRvIHxmfAogICAgICAgICAgdgk9IHZhbHVlczIuc2hp # ZnQKICAgICAgICAgIHYJPSB2LmRvd25jYXNlCXVubGVzcyB2Lm5pbD8KICAg # ICAgICAgIGlmIGVtcHR5bGluZS5uaWw/IG9yIChub3QgdiA9PSBlbXB0eWxp # bmUpCiAgICAgICAgICAgIGlmIGV4YWN0CiAgICAgICAgICAgICAgdW5sZXNz # ICh2Lm5pbD8gb3IgY1tmLWNvcnJlY3Rpb25dLmRvd25jYXNlID09IHYpCiAg # ICAgICAgICAgICAgICBvawk9IGZhbHNlCiAgICAgICAgICAgICAgICAjdGhy # b3cgOnN0b3AKICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZWxzZQog # ICAgICAgICAgICAgIHVubGVzcyAodi5uaWw/IG9yIGNbZi1jb3JyZWN0aW9u # XS5kb3duY2FzZS5pbmNsdWRlPyh2KSkKICAgICAgICAgICAgICAgIG9rCT0g # ZmFsc2UKICAgICAgICAgICAgICAgICN0aHJvdyA6c3RvcAogICAgICAgICAg # ICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAgICAgIGVuZAogICAgICAg # IGVuZAogICAgICAjZW5kCgogICAgICBpZiBvawogICAgICAgIHJlczIJPSBb # XQogICAgICAgIHJlc3VsdHMuZWFjaCBkbyB8bnwKICAgICAgICAgIHJlczIg # PDwgY1tuLTFdCiAgICAgICAgZW5kCiAgICAgICAgcmVzMgk9IHJlczIuam9p # bihqb2lud2l0aCkJdW5sZXNzIGpvaW53aXRoLm5pbD8KICAgICAgICByZXMg # PDwgcmVzMgogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiByZXMKICBl # bmQKCiAgZGVmIGZvcm1hdChmb3JtYXQpCiAgICBmb3JtYXQJPSBmb3JtYXQu # Z3N1YigvXHMvLCAiIikKICAgIHJlcwkJPSBbXQoKICAgIFtmb3JtYXQubGVu # Z3RoLCBzZWxmLmxlbmd0aF0ubWluLnRpbWVzIGRvIHxufAogICAgICBjYXNl # IGZvcm1hdFtuXS5jaHIuZG93bmNhc2UKICAgICAgd2hlbiAiaSIJdGhlbgly # ZXMgPDwgc2VsZltuXS50b19pCiAgICAgIHdoZW4gInMiCXRoZW4JcmVzIDw8 # IHNlbGZbbl0udG9fcwogICAgICBlbHNlCQlyZXMgPDwgc2VsZltuXQogICAg # ICBlbmQKICAgIGVuZAoKICAgIHJlcwogIGVuZAoKICBkZWYgdG9faQogICAg # Y29sbGVjdHt8Y3wgYy50b19pfQogIGVuZAoKICBkZWYgdG9fcGFyCiAgICBk # YXNoCT0gc2VsZi5kdXAKICAgIGFscGhhCT0gc2VsZi5kdXAKICAgIG51bWVy # aWMJPSBzZWxmLmR1cAoKICAgIGRhc2guZGVsZXRlX2lmIGRvIHxzfAogICAg # ICBub3QgKHMgPX4gL1xBLS8pIG9yCiAgICAgIChzID1+IC9cQS0/W1s6ZGln # aXQ6XVwuXStcei8pIG9yCiAgICAgIChzID1+IC9eLSskLykKICAgIGVuZAoK # ICAgIGFscGhhLmRlbGV0ZV9pZiBkbyB8c3wKICAgICAgKChzID1+IC9cQS0v # KSBvcgogICAgICAgKHMgPX4gL1xBLT9bWzpkaWdpdDpdXC5dK1x6LykpIGFu # ZAogICAgICBub3QgKChzID1+IC9eXC4rJC8pIG9yIChzID1+IC9eLSskLykp # CiAgICBlbmQKCiAgICBudW1lcmljLmRlbGV0ZV9pZiBkbyB8c3wKICAgICAg # bm90IChzID1+IC9cQS0/W1s6ZGlnaXQ6XVwuXStcei8pIG9yCiAgICAgIChz # ID1+IC9eXC4rJC8pCiAgICBlbmQKCiAgICByYWlzZSAiT29wcyEiCWlmIGRh # c2gubGVuZ3RoICsgYWxwaGEubGVuZ3RoICsgbnVtZXJpYy5sZW5ndGggIT0g # bGVuZ3RoCgogICAgcmV0dXJuIGRhc2gsIGFscGhhLCBudW1lcmljCiAgZW5k # CgogIGRlZiBzZWxmLmZpbGUoZmlsZSkKICAgIHJlcwk9IG5ldwoKICAgIEZp # bGUub3BlbihmaWxlKSBkbyB8ZnwKICAgICAgZi5yZWFkbGluZXMudW5jb21t # ZW50LmNob21wLmVhY2ggZG8gfGxpbmV8CiAgICAgICAgcmVzIDw8IGxpbmUK # ICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMKICBlbmQKCiAgZGVmIG51bXNv # cnQKICAgIHNvcnQgZG8gfGEsIGJ8CiAgICAgIGEyCT0gYS50b19mcwogICAg # ICBiMgk9IGIudG9fZnMKCiAgICAgIGlmIGEyLmNsYXNzICE9IGIyLmNsYXNz # CiAgICAgICAgYTIJPSBhCiAgICAgICAgYjIJPSBiCiAgICAgIGVuZAoKICAg # ICAgYTIgPD0+IGIyCiAgICBlbmQKICBlbmQKCiAgZGVmIHRvX2ZzCiAgICBj # b2xsZWN0e3xzfCBzLnRvX2ZzfQogIGVuZAoKICBkZWYgY2hhb3MKICAgIHJl # cwk9IHNlbGYuZHVwCgogICAgKGxlbmd0aF4yKS50aW1lcyBkbwogICAgICBh # CT0gcmFuZChsZW5ndGgpCiAgICAgIGIJPSByYW5kKGxlbmd0aCkKCiAgICAg # IHJlc1thXSwgcmVzW2JdCT0gcmVzW2JdLCByZXNbYV0KICAgIGVuZAoKICAg # IHJlcwogIGVuZAoKICBkZWYgYW55CiAgICBpZiBlbXB0eT8KICAgICAgbmls # CiAgICBlbHNlCiAgICAgIHNlbGZbcmFuZChzZWxmLmxlbmd0aCldCiAgICBl # bmQKICBlbmQKCiAgZGVmIG1pbm1heAogICAgbWluLCB2YWx1ZSwgbWF4CT0g # c2VsZgogICAgW21pbiwgW3ZhbHVlLCBtYXhdLm1pbl0ubWF4CiAgZW5kCgog # IGRlZiBpZHMKICAgIGNvbGxlY3R7fGV8IGUuaWRzfQogIGVuZAoKICBkZWYg # cm90YXRlCiAgICByYWlzZSAiQXJyYXkgaGFzIHRvIGJlIDJEIChBbiBBcnJh # eSBvZiBBcnJheXMpLiIJdW5sZXNzIHNlbGYuZHVwLmRlbGV0ZV9pZnt8YXwg # YS5raW5kX29mPyhBcnJheSl9LmVtcHR5PwoKICAgIHJlcwk9IFtdCgogICAg # c2VsZlswXS5sZW5ndGgudGltZXMgZG8gfHh8CiAgICAgIGEJPSBbXQoKICAg # ICAgc2VsZi5sZW5ndGgudGltZXMgZG8gfHl8CiAgICAgICAgYSA8PCBzZWxm # W3ldW3hdCiAgICAgIGVuZAoKICAgICAgcmVzIDw8IGEKICAgIGVuZAoKICAg # IHJlcwogIGVuZAoKICBkZWYgdG9faAogICAgcmFpc2UgIkFycmF5IGhhcyB0 # byBiZSAyRCAoQW4gQXJyYXkgb2YgQXJyYXlzKS4iCXVubGVzcyBzZWxmLmR1 # cC5kZWxldGVfaWZ7fGF8IGEua2luZF9vZj8oQXJyYXkpfS5lbXB0eT8KCiAg # ICByZXMJPSB7fQoKICAgIHNlbGYuZWFjaCBkbyB8aywgdiwgKnJlc3R8CiAg # ICAgIHJlc1trXQk9IHYKICAgIGVuZAoKICAgIHJlcwogIGVuZAplbmQKCmNs # YXNzIEhhc2gKICBkZWYgc2F2ZShmaWxlLCBhcHBlbmQ9ZmFsc2UpCiAgICBv # cmcJPSB7fQogICAgb3JnCT0gSGFzaC5maWxlKGZpbGUpCWlmIChhcHBlbmQg # YW5kIEZpbGUuZmlsZT8oZmlsZSkpCgogICAgc2VsZi5zb3J0LmVhY2ggZG8g # fGssIHZ8CiAgICAgIG9yZ1trXQk9IHYKICAgIGVuZAoKICAgIEZpbGUub3Bl # bihmaWxlLCAidyIpIGRvIHxmfAogICAgICBvcmcuc29ydC5lYWNoIGRvIHxr # LCB2fAogICAgICAgIGYucHV0cyAiJXNcdD0gJXMiICUgW2ssIHZdCiAgICAg # IGVuZAogICAgZW5kCiAgZW5kCgogIGRlZiBzdWJzZXQoZmllbGRzLCB2YWx1 # ZXMsIHJlc3VsdHM9bmlsLCBleGFjdD10cnVlLCBlbXB0eWxpbmU9bmlsLCBq # b2lud2l0aD1uaWwpCiAgICBmaWVsZHMJPSBbZmllbGRzXQkJdW5sZXNzIGZp # ZWxkcy5raW5kX29mPyBBcnJheQogICAgdmFsdWVzCT0gW3ZhbHVlc10JCXVu # bGVzcyB2YWx1ZXMua2luZF9vZj8gQXJyYXkKICAgIHJlc3VsdHMJPSBbcmVz # dWx0c10JCXVubGVzcyByZXN1bHRzLmtpbmRfb2Y/IEFycmF5CiAgICBlbXB0 # eWxpbmUJPSBlbXB0eWxpbmUuZG93bmNhc2UJdW5sZXNzIGVtcHR5bGluZS5u # aWw/CiAgICByZXMJCT0gc2VsZi5kdXAKICAgIHJlcy5kZWxldGVfaWYge3Ry # dWV9CgogICAgc2VsZi5lYWNoIGRvIHxrLCBsfAogICAgICBvawk9IHRydWUK # CiAgICAgIGNhc2UgbC5jbGFzcy50b19zCiAgICAgIHdoZW4gIlN0cmluZyIK # ICAgICAgICBjCQk9IGwuc3BsaXR3b3JkcwogICAgICAgIGNvcnJlY3Rpb24J # PSAxCiAgICAgICAgam9pbndpdGgJPSAiICIJaWYgam9pbndpdGgubmlsPwog # ICAgICB3aGVuICJBcnJheSIKICAgICAgICBjCQk9IGwKICAgICAgICBjb3Jy # ZWN0aW9uCT0gMAogICAgICBlbmQKCiAgICAgICNjYXRjaCA6c3RvcCBkbwog # ICAgICAgIHZhbHVlczIJPSB2YWx1ZXMuZHVwCiAgICAgICAgZmllbGRzLmVh # Y2ggZG8gfGZ8CiAgICAgICAgICB2CT0gdmFsdWVzMi5zaGlmdAogICAgICAg # ICAgdgk9IHYuZG93bmNhc2UJdW5sZXNzIHYubmlsPwogICAgICAgICAgaWYg # ZW1wdHlsaW5lLm5pbD8gb3IgKG5vdCB2ID09IGVtcHR5bGluZSkKICAgICAg # ICAgICAgaWYgZXhhY3QKICAgICAgICAgICAgICB1bmxlc3MgKHYubmlsPyBv # ciBjW2YtY29ycmVjdGlvbl0uZG93bmNhc2UgPT0gdikKICAgICAgICAgICAg # ICAgIG9rCT0gZmFsc2UKICAgICAgICAgICAgICAgICN0aHJvdyA6c3RvcAog # ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAg # ICAgdW5sZXNzICh2Lm5pbD8gb3IgY1tmLWNvcnJlY3Rpb25dLmRvd25jYXNl # LmluY2x1ZGU/KHYpKQogICAgICAgICAgICAgICAgb2sJPSBmYWxzZQogICAg # ICAgICAgICAgICAgI3Rocm93IDpzdG9wCiAgICAgICAgICAgICAgZW5kCiAg # ICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAg # ICNlbmQKCiAgICAgIGlmIG9rCiAgICAgICAgcmVzMgk9IFtdCiAgICAgICAg # aWYgcmVzdWx0cyA9PSBbbmlsXQogICAgICAgICAgcmVzMgk9IGMKICAgICAg # ICBlbHNlCiAgICAgICAgICByZXN1bHRzLmVhY2ggZG8gfG58CiAgICAgICAg # ICAgIHJlczIgPDwgY1tuLWNvcnJlY3Rpb25dCiAgICAgICAgICBlbmQKICAg # ICAgICBlbmQKICAgICAgICByZXMyCT0gcmVzMi5qb2luKGpvaW53aXRoKQl1 # bmxlc3Mgam9pbndpdGgubmlsPwogICAgICAgIHJlc1trXQk9IHJlczIKICAg # ICAgZW5kCiAgICBlbmQKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiB0 # b19pCiAgICBjb2xsZWN0e3xrLCB2fCB2LnRvX2l9CiAgZW5kCgogIGRlZiBz # ZWxmLmZpbGUoZmlsZSkKICAgIHJlcwk9IG5ldwoKICAgIEZpbGUub3Blbihm # aWxlKSBkbyB8ZnwKICAgICAgI2YucmVhZGxpbmVzLmNob21wLmVhY2ggZG8g # fGxpbmV8CiAgICAgIHdoaWxlIGxpbmUgPSBmLmdldHMgZG8KICAgICAgICBs # aW5lLmNob21wIQoKICAgICAgICB1bmxlc3MgbGluZS5lbXB0eT8KICAgICAg # ICAgIGssIHYJPSBsaW5lLnNwbGl0KC9ccyo9XHMqLywgMikKICAgICAgICAg # IHJlc1trXQk9IHYKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAg # ICByZXMKICBlbmQKCiAgZGVmIGlkcwogICAgY29sbGVjdHt8aywgdnwgW2ss # IHZdLmlkc30KICBlbmQKZW5kCgpkZWYgaWQycmVmKGlkKQogIE9iamVjdFNw # YWNlLl9pZDJyZWYoaWQpCmVuZAoKZGVmIGFmdGVyKHNlY29uZHMsICphcmdz # KQogIGlmIG5vdCBzZWNvbmRzLm5pbD8gYW5kIG5vdCBzZWNvbmRzLnplcm8/ # CiAgICBUaHJlYWQubmV3KCphcmdzKSBkbyB8KmFyZ3MyfAogICAgICBzbGVl # cCBzZWNvbmRzCiAgICAgIHlpZWxkKCphcmdzMikKICAgIGVuZAogIGVuZApl # bmQKCmRlZiBldmVyeShzZWNvbmRzLCAqYXJncykKICBpZiBub3Qgc2Vjb25k # cy5uaWw/IGFuZCBub3Qgc2Vjb25kcy56ZXJvPwogICAgVGhyZWFkLm5ldygq # YXJncykgZG8gfCphcmdzMnwKICAgICAgbG9vcCBkbwogICAgICAgIHNsZWVw # IHNlY29uZHMKICAgICAgICB5aWVsZCgqYXJnczIpCiAgICAgIGVuZAogICAg # ZW5kCiAgZW5kCmVuZAoKZGVmIGV2dGltZW91dChzZWNvbmRzKQogIGJlZ2lu # CiAgICB0aW1lb3V0KHNlY29uZHMpIGRvCiAgICAgIHlpZWxkCiAgICBlbmQK # ICByZXNjdWUgVGltZW91dEVycm9yCiAgZW5kCmVuZAoKZGVmIGV2dGltZW91 # dHJldHJ5KHNlY29uZHMpCiAgb2sJPSBmYWxzZQoKICB3aGlsZSBub3Qgb2sK # ICAgIGV2dGltZW91dChzZWNvbmRzKSBkbwogICAgICB5aWVsZAogICAgICBv # awk9IHRydWUKICAgIGVuZAogIGVuZAplbmQKCmRlZiB0cmFwKHNpZ25hbCkK # ICBLZXJuZWw6OnRyYXAoc2lnbmFsKSBkbwogICAgeWllbGQKICBlbmQKCgkj # IFNlZW1zIHBvaW50bGVzcywgYnV0IGl0J3MgZm9yIGNhdGNoaW5nIF5DIHVu # ZGVyIFdpbmRvd3MuLi4KCiAgZXZlcnkoMSkJe30JaWYgd2luZG93cz8KZW5k # CgpkZWYgbGludXg/CiAgbm90ICh0YXJnZXRfb3MuZG93bmNhc2UgPX4gL2xp # bnV4LykubmlsPwplbmQKCmRlZiBkYXJ3aW4/CiAgbm90ICh0YXJnZXRfb3Mu # ZG93bmNhc2UgPX4gL2Rhcndpbi8pLm5pbD8KZW5kCgpkZWYgd2luZG93cz8K # ICBub3QgKHRhcmdldF9vcy5kb3duY2FzZSA9fiAvMzIvKS5uaWw/CmVuZAoK # ZGVmIGN5Z3dpbj8KICBub3QgKHRhcmdldF9vcy5kb3duY2FzZSA9fiAvY3ln # LykubmlsPwplbmQKCmRlZiB0YXJnZXRfb3MKICBDb25maWc6OkNPTkZJR1si # dGFyZ2V0X29zIl0gb3IgIiIKZW5kCgpkZWYgdXNlcgogIEVOVlsiVVNFUiJd # IG9yIEVOVlsiVVNFUk5BTUUiXQplbmQKCmRlZiBob21lCiAgKEVOVlsiSE9N # RSJdIG9yIEVOVlsiVVNFUlBST0ZJTEUiXSBvciAoRmlsZS5kaXJlY3Rvcnk/ # KCJoOi8iKSA/ICJoOiIgOiAiYzoiKSkuZ3N1YigvXFwvLCAiLyIpCmVuZAoK # ZGVmIHRlbXAKICAoRU5WWyJUTVBESVIiXSBvciBFTlZbIlRNUCJdIG9yIEVO # VlsiVEVNUCJdIG9yICIvdG1wIikuZ3N1YigvXFwvLCAiLyIpCmVuZAoKZGVm # IHN0ZHRtcAogICRzdGRlcnIgPSAkc3Rkb3V0ID0gRmlsZS5uZXcoIiN7dGVt # cH0vcnVieS4je1Byb2Nlc3MucGlkfS5sb2ciLCAiYSIpCmVuZApzdGR0bXAJ # aWYgZGVmaW5lZD8oUlVCWVNDUklQVDJFWEUpIGFuZCAoUlVCWVNDUklQVDJF # WEUgPX4gL3J1Ynl3L2kpCgokbm9ibQk9IGZhbHNlCgpkZWYgbm9ibQogICRu # b2JtCT0gdHJ1ZQplbmQKCmRlZiBibShsYWJlbD0iIikKICBpZiAkbm9ibQog # ICAgaWYgYmxvY2tfZ2l2ZW4/CiAgICAgIHJldHVybiB5aWVsZAogICAgZWxz # ZQogICAgICByZXR1cm4gbmlsCiAgICBlbmQKICBlbmQKCiAgbGFiZWwJPSBs # YWJlbC5pbnNwZWN0CSN1bmxlc3MgbGFiZWwua2luZF9vZj8oU3RyaW5nKQog # IHJlcwk9IG5pbAoKICAkYm1fbXV0ZXgJPSAoJGJtX211dGV4IG9yIE11dGV4 # Lm5ldykKCiAgJGJtX211dGV4LnN5bmNocm9uaXplIGRvCiAgICBpZiAkYm0u # bmlsPwogICAgICByZXF1aXJlICJldi9ibSIKCiAgICAgICRibQkJPSB7fQoK # ICAgICAgYXRfZXhpdCBkbwogICAgICAgIGwJPSAkYm0ua2V5cy5jb2xsZWN0 # e3xzfCBzLmxlbmd0aH0ubWF4CgkjZm9ybWF0MQk9ICIlMTBzICUxMHMgJTEw # cyAlMTBzICUxMHMgJTEwcyAgICVzIgoJI2Zvcm1hdDIJPSAiJTEwLjZmICUx # MC42ZiAlMTAuNmYgJTEwLjZmICUxMC42ZiAlMTBkICAgJXMiCgkjJHN0ZGVy # ci5wdXRzIGZvcm1hdDEgJSBbIlVTRVJDUFUiLCAiU1lTQ1BVIiwgIkNVU0VS # Q1BVIiwgIkNTWVNDUFUiLCAiRUxBUFNFRCIsICJDT1VOVCIsICJMQUJFTCJd # CgkjJGJtLnNvcnR7fGEsIGJ8IFtiWzFdLCBiWzBdXSA8PT4gW2FbMV0sIGFb # MF1dfS5lYWNoIGRvIHxrLCB2fAoJICAjJHN0ZGVyci5wdXRzIGZvcm1hdDIg # JSAodiArIFtrXSkKCSNlbmQKCglmb3JtYXQxCT0gIiUxMHMgJTEwcyAlMTBz # ICAgJXMiCglmb3JtYXQyCT0gIiUxMC42ZiAlMTAuNmYgJTEwZCAgICVzIgog # ICAgICAgICRibS5lYWNoIGRvIHxrLCB2fAogICAgICAgICAgJGJtW2tdCT0g # W3ZbMF0rdlsxXSwgdls0XSwgdls1XV0KICAgICAgICBlbmQKCSRzdGRlcnIu # cHV0cyBmb3JtYXQxICUgWyJDUFUiLCAiRUxBUFNFRCIsICJDT1VOVCIsICJM # QUJFTCJdCgkkYm0uc29ydHt8YSwgYnwgW2JbMV0sIGJbMF1dIDw9PiBbYVsx # XSwgYVswXV19LmVhY2ggZG8gfGssIHZ8CgkgICRzdGRlcnIucHV0cyBmb3Jt # YXQyICUgKHYgKyBba10pCgllbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICAk # Ym1bbGFiZWxdID0gWzAuMF0qNSArIFswXQl1bmxlc3MgJGJtLmluY2x1ZGU/ # KGxhYmVsKQogICAgJGJtW2xhYmVsXVs1XSArPSAxCiAgZW5kCgogIGlmIGJs # b2NrX2dpdmVuPwogICAgYm0JPSBCZW5jaG1hcmsubWVhc3VyZXtyZXMgPSB5 # aWVsZH0KICAgIGJtYQk9IGJtLnRvX2EJIyBbZHVtbXkgbGFiZWwsIHVzZXIg # Q1BVIHRpbWUsIHN5c3RlbSBDUFUgdGltZSwgY2hpbGRyZW5zIHVzZXIgQ1BV # IHRpbWUsIGNoaWxkcmVucyBzeXN0ZW0gQ1BVIHRpbWUsIGVsYXBzZWQgcmVh # bCB0aW1lXQoKICAgICRibV9sYXN0CT0gYm1hCgogICAgJGJtX211dGV4LnN5 # bmNocm9uaXplIGRvCiAgICAgIGUJPSAkYm1bbGFiZWxdCiAgICAgIDAudXB0 # byg0KSBkbyB8bnwKICAgICAgICBlW25dICs9IGJtYVtuKzFdCiAgICAgIGVu # ZAogICAgZW5kCiAgZW5kCgogIHJlcwplbmQKCmRlZiB0cmFjZQogIHJlcwk9 # bmlsCgogIHNldF90cmFjZV9mdW5jIGxhbWJkYSB7IHxldmVudCwgZmlsZSwg # bGluZSwgaWQsIGJpbmRpbmcsIGNsYXNzbmFtZXwKICAgICRzdGRlcnIucHJp # bnRmICIlOHMgJXM6JS0yZCAlMTBzICU4c1xuIiwgZXZlbnQsIGZpbGUsIGxp # bmUsIGlkLCBjbGFzc25hbWUKICB9CgogIGlmIGJsb2NrX2dpdmVuPwogICAg # cmVzCT0geWllbGQKCiAgICBub3RyYWNlCiAgZW5kCgogIHJlcwplbmQKCmRl # ZiBub3RyYWNlCiAgc2V0X3RyYWNlX2Z1bmMgbmlsCmVuZAoKZGVmIGxhbWJk # YV9jYWNoZWQoJmJsb2NrKQogIGhhc2gJPSB7fQogIGxhbWJkYSBkbyB8KmFy # Z3N8CiAgICByZXMJPSBoYXNoW2FyZ3NdCiAgICBpZiByZXMubmlsPwogICAg # ICByZXMJCT0gYmxvY2suY2FsbCgqYXJncykKICAgICAgaGFzaFthcmdzXQk9 # IHJlcwogICAgZW5kCiAgICByZXMKICBlbmQKZW5kCgpkZWYgYXNrKG9wdGlv # bnMsIHRleHQ9ZmFsc2UpCiAgaQk9IDAKICAkc3RkZXJyLnB1dHMgIiIKICBv # cHRpb25zLmVhY2ggZG8gfHN8CiAgICAkc3RkZXJyLnB1dHMgIiAlZCAlcyIg # JSBbaSs9MSwgc10KICBlbmQKICAkc3RkZXJyLnB1dHMgIiIKICAkc3RkZXJy # LnByaW50ICI/ICIKICByZXMJPSAkc3RkaW4uZ2V0cwogIHVubGVzcyByZXMu # bmlsPwogICAgcmVzCT0gcmVzLnN0cmlwCiAgICByZXMJPSBvcHRpb25zW3Jl # cy50b19pLTFdCWlmIHRleHQgYW5kIG5vdCByZXMuZW1wdHk/CiAgZW5kCiAg # cmVzCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3Jp # cHQuZi4xMTkwMC50YXIvZXYvcndkLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1 # NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAyMDI1MTYAMTAyNTAzMjA2MTUAMDE3 # NzYzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw # MDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AHJlcXVpcmUgImV2L3J1YnkiCnJlcXVpcmUgImV2L3htbCIKcmVxdWlyZSAi # ZXYvbmV0IgpyZXF1aXJlICJldi9icm93c2VyIgpyZXF1aXJlICJldi90aHJl # YWQiCnJlcXVpcmUgIm1kNSIKcmVxdWlyZSAicmJjb25maWciCgpiZWdpbgog # IHJlcXVpcmUgIndpbjMyb2xlIgogIHJlcXVpcmUgIndpbjMyL3JlZ2lzdHJ5 # IgpyZXNjdWUgTG9hZEVycm9yCiAgJCIucHVzaCAid2luMzJvbGUuc28iCiAg # JCIucHVzaCAid2luMzIvcmVnaXN0cnkucmIiCmVuZAoKJHJ3ZF9leGl0CT0g # QVJHVi5pbmNsdWRlPygiLS1yd2QtZXhpdCIpCSMgSGFjayA/Pz8KJHJ3ZF9l # eGl0CT0gdHJ1ZQlpZiBkZWZpbmVkPyhSRVFVSVJFMkxJQikKJHJ3ZF9kZWJ1 # Zwk9ICgkcndkX2RlYnVnIG9yICRERUJVRyBvciBmYWxzZSkKJHJ3ZF9ib3Jk # ZXIJPSAoJHJ3ZF9ib3JkZXIgb3IgMCkKJHJ3ZF9kaXIJPSBEaXIucHdkCiRy # d2RfZmlsZXMJPSBGaWxlLmV4cGFuZF9wYXRoKCJyd2RfZmlsZXMiLCBEaXIu # cHdkKQokcndkX2h0bWwJPSB7fQoKQVJHVi5kZWxldGVfaWYgZG8gfGFyZ3wK # ICBhcmcgPX4gL14tLXJ3ZC0vCmVuZAoKUldERW1wdHlsaW5lCT0gIi4uLiIK # CiNtb2R1bGUgUldECgpyY2ZpbGUJPSBuaWwKcwk9IEVOVlsiSE9NRSJdCQk7 # IHMgPSBGaWxlLmV4cGFuZF9wYXRoKCIucndkcmMiLCBzKQl1bmxlc3Mgcy5u # aWw/CTsgcmNmaWxlID0gcwlpZiAobm90IHMubmlsPyBhbmQgcmNmaWxlLm5p # bD8gYW5kIEZpbGUuZmlsZT8ocykpCnMJPSBFTlZbIlVTRVJQUk9GSUxFIl0J # OyBzID0gRmlsZS5leHBhbmRfcGF0aCgicndkLmNmZyIsIHMpCXVubGVzcyBz # Lm5pbD8JOyByY2ZpbGUgPSBzCWlmIChub3Qgcy5uaWw/IGFuZCByY2ZpbGUu # bmlsPyBhbmQgRmlsZS5maWxlPyhzKSkKcwk9IEVOVlsid2luZGlyIl0JCTsg # cyA9IEZpbGUuZXhwYW5kX3BhdGgoInJ3ZC5jZmciLCBzKQl1bmxlc3Mgcy5u # aWw/CTsgcmNmaWxlID0gcwlpZiAobm90IHMubmlsPyBhbmQgcmNmaWxlLm5p # bD8gYW5kIEZpbGUuZmlsZT8ocykpCgpBTAk9ICJhbGlnbj0nbGVmdCciCkFD # CT0gImFsaWduPSdjZW50ZXInIgpBUgk9ICJhbGlnbj0ncmlnaHQnIgpWQQk9 # ICJ2YWxpZ249J21pZGRsZSciCgpGb3JtYXQJPSAiXG48IS0tICUtMTBzICUt # MTBzIC0tPlx0IgoKdW5sZXNzIHJjZmlsZS5uaWw/CiAgcHV0cyAiUmVhZGlu # ZyAje3JjZmlsZX0gLi4uIgoKICBIYXNoLmZpbGUocmNmaWxlKS5lYWNoIGRv # IHxrLCB2fAogICAgRU5WW2tdCT0gdgl1bmxlc3MgRU5WLmluY2x1ZGU/KGsp # CiAgZW5kCmVuZAoKRU5WWyJSV0RCUk9XU0VSIl0JPSAoRU5WWyJSV0RCUk9X # U0VSIl0gb3IgZGVmYXVsdGJyb3dzZXIpIG9yIHB1dHMgIk5vIGJyb3dzZXIg # Zm91bmQuIgpFTlZbIlJXRFBPUlRTIl0JCT0gKEVOVlsiUldEUE9SVFMiXSBv # ciAiNzcwMS03NzA5IikKRU5WWyJSV0RUSEVNRSJdCQk9IChFTlZbIlJXRFRI # RU1FIl0gb3IgIkRFRkFVTFQiKQoKI3RyYXAoIklOVCIpCXtwdXRzICJUZXJt # aW5hdGluZy4uLiIgOyBleGl0fQoKJFNBRkUJPSAyCgpjbGFzcyBJRQogIGRl # ZiBpbml0aWFsaXplKHVybCkKICAgIEBpZSA9IFdJTjMyT0xFLm5ldygiSW50 # ZXJuZXRFeHBsb3Jlci5BcHBsaWNhdGlvbiIpCiAgICBAZXYJPSBXSU4zMk9M # RV9FVkVOVC5uZXcoQGllLCAiRFdlYkJyb3dzZXJFdmVudHMyIikKCiAgICBA # aWUubmF2aWdhdGUodXJsKQoKICAgIEBpZS5tZW51YmFyCQk9IGZhbHNlCiAg # ICBAaWUudG9vbGJhcgkJPSBmYWxzZQogICAgQGllLmFkZHJlc3NiYXIJPSBm # YWxzZQogICAgQGllLnN0YXR1c2Jhcgk9IGZhbHNlCgogICAgQGllLnZpc2li # bGUJCT0gdHJ1ZQoKICAgIGF0X2V4aXQgZG8KICAgICAgQGllLnZpc2libGUJ # PSBmYWxzZQogICAgZW5kCgogICAgQGV2Lm9uX2V2ZW50KCJPblF1aXQiKSBk # bwogICAgICBUaHJlYWQubWFpbi5leGl0CiAgICBlbmQKCiAgICBUaHJlYWQu # bmV3IGRvCiAgICAgIGxvb3AgZG8KICAgICAgICBXSU4zMk9MRV9FVkVOVC5t # ZXNzYWdlX2xvb3AKICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5kCgpjbGFz # cyBBcnJheQogIGRlZiByd2Rfb3B0aW9ucyhlbXB0eWxpbmU9bmlsKQogICAg # aWYgZW1wdHlsaW5lLm5pbD8KICAgICAgYQk9IHNlbGYKICAgIGVsc2UKICAg # ICAgYQk9IFtlbXB0eWxpbmVdLmNvbmNhdChzZWxmKQogICAgZW5kCgogICAg # YS5udW1zb3J0LmNvbGxlY3R7fHN8ICI8b3B0aW9uPiN7cy50b19zLnRvX2h0 # bWx9PC9vcHRpb24+IiB9LmpvaW4oIlxuIikKICBlbmQKCiAgZGVmIHJ3ZF9t # ZXRob2QobWV0aG9kKQogICAgcmVzCT0gIiIKCiAgICBzZWxmLmVhY2ggZG8g # fHN8CiAgICAgIHMJCT0gcy5qb2luKCIvIikJaWYgcy5raW5kX29mPyhBcnJh # eSkKICAgICAgczIJPSBzLmR1cAogICAgICBzMlswLi4wXQk9IHMyWzAuLjBd # LnVwY2FzZQogICAgICByZXMJPSByZXMgKyAiPHAgYWxpZ249J2xlZnQnPjxh # IGFjdGlvbj0nI3ttZXRob2R9LyN7cy50b19odG1sfSc+I3tzMi50b19odG1s # fTwvYT48L3A+IgogICAgZW5kCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBk # ZWYgcndkX3JvdyhrZXk9bmlsLCB2YWx1ZT1uaWwsIGJvbGQ9ZmFsc2UpCiAg # ICByZXMJPSAiIgoKICAgIHJlcwk9IHJlcyArICI8cm93IHZhbGlnbj0ndG9w # Jz4iCiAgICByZXMJPSByZXMgKyAiPHJhZGlvIG5hbWU9JyN7a2V5LnRvX2h0 # bWx9JyB2YWx1ZT0nI3t2YWx1ZS50b19odG1sfScvPiIJdW5sZXNzIGtleS5u # aWw/CiAgICByZXMJPSByZXMgKyBzZWxmLmNvbGxlY3R7fHN8ICI8cCBhbGln # bj0nI3socy5raW5kX29mPyhOdW1lcmljKSBvciBzID1+IC9eXGQrXC5cZCsk # LykgPyAicmlnaHQiIDogImxlZnQifSc+I3siPGI+IiBpZiBib2xkfSN7cy50 # b19zLnRvX2h0bWx9I3siPC9iPiIgaWYgYm9sZH08L3A+In0uam9pbigiIikK # ICAgIHJlcwk9IHJlcyArICI8L3Jvdz4iCgogICAgcmV0dXJuIHJlcwogIGVu # ZAoKICBkZWYgcndkX3RhYmxlKGhlYWRlcnM9bmlsLCBoaWdobGlnaHRyb3dz # PVtdKQogICAgcmVzCT0gIiIKCiAgICBoaWdobGlnaHRyb3dzCT0gW2hpZ2hs # aWdodHJvd3NdLmZsYXR0ZW4KCiAgICBuCT0gLTEKCiAgICByZXMJPSByZXMg # KyAiPHRhYmxlPiIKICAgIHJlcwk9IHJlcyArIGhlYWRlcnMucndkX3Jvdyhu # aWwsIG5pbCwgdHJ1ZSkJdW5sZXNzIGhlYWRlcnMubmlsPwogICAgcmVzCT0g # cmVzICsgc2VsZi5jb2xsZWN0e3xhfCBhLnJ3ZF9yb3cobmlsLCBuaWwsIGhp # Z2hsaWdodHJvd3MuaW5jbHVkZT8obis9MSkpfS5qb2luKCIiKQogICAgcmVz # CT0gcmVzICsgIjwvdGFibGU+IgoKICAgIHJldHVybiByZXMKICBlbmQKCiAg # ZGVmIHJ3ZF9oZWFkZXJzKGVtcHR5ZmllbGQ9ZmFsc2UpCiAgICByZXMJPSAi # IgoKICAgIHJlcwk9IHJlcyArICI8cm93PiIKICAgIHJlcwk9IHJlcyArICI8 # cC8+IglpZiBlbXB0eWZpZWxkCiAgICByZXMJPSByZXMgKyBzZWxmLmNvbGxl # Y3R7fHN8ICI8cCBhbGlnbj0nbGVmdCc+PGI+I3tzLnRvX2h0bWx9PC9iPjwv # cD4iIH0uam9pbigiIikKICAgIHJlcwk9IHJlcyArICI8L3Jvdz4iCgogICAg # cmV0dXJuIHJlcwogIGVuZAoKICBkZWYgcndkX2Zvcm0ocHJlZml4LCB2YWx1 # ZXM9W10sIHR3b3BhcnRzPTAsIG9wdGlvbnM9e30pCiAgICByZXMJPSBbXQoK # ICAgIHJlcyA8PCAiPHRhYmxlPiIKICAgIHNlbGYuZWFjaF9pbmRleCBkbyB8 # bnwKICAgICAgbmFtZQk9ICIje3ByZWZpeC50b19odG1sfSN7c2VsZltuXS5k # b3duY2FzZS50b19odG1sfSIKCiAgICAgIHJlcyA8PCAiPHJvdz4iCiAgICAg # IHJlcyA8PCAiPHAgYWxpZ249J3JpZ2h0Jz4iCiAgICAgIHJlcyA8PCAiI3tz # ZWxmW25dLnRvX2h0bWx9OiIKICAgICAgcmVzIDw8ICI8L3A+IgoKICAgICAg # aWYgb3B0aW9ucy5rZXlzLmluY2x1ZGU/KHNlbGZbbl0pCiAgICAgICAgcmVz # IDw8ICI8c2VsZWN0IG5hbWU9JyN7bmFtZX0nPiIKICAgICAgICByZXMgPDwg # b3B0aW9uc1tzZWxmW25dXS5yd2Rfb3B0aW9ucyhSV0RFbXB0eWxpbmUpCiAg # ICAgICAgcmVzIDw8ICI8L3NlbGVjdD4iCiAgICAgIGVsc2UKICAgICAgICBz # CT0gIiIKCiAgICAgICAgcyA8PCAiPHRleHQgbmFtZT0nI3tuYW1lfSciCiAg # ICAgICAgcyA8PCAiIHZhbHVlPScje3ZhbHVlc1tuXS50b19zLnRvX2h0bWx9 # JyIJaWYgbiA8IHZhbHVlcy5sZW5ndGgKICAgICAgICBzIDw8ICIvPiIKCiAg # ICAgICAgcmVzIDw8IHMKICAgICAgZW5kCgogICAgICByZXMgPDwgIjwvcm93 # PiIKCiAgICAgIGlmIHR3b3BhcnRzID4gMCBhbmQgbiA9PSB0d29wYXJ0cy0x # CiAgICAgICAgcmVzIDw8ICI8cm93PjxlbXB0eS8+PC9yb3c+IgogICAgICBl # bmQKICAgIGVuZAogICAgcmVzIDw8ICI8L3RhYmxlPiIKCiAgICByZXR1cm4g # cmVzLmpvaW4oIlxuIikKICBlbmQKZW5kCgpjbGFzcyBIYXNoCiAgZGVmIHJ3 # ZF90YWJsZShmaWVsZD1uaWwsIGpvaW53aXRoPW5pbCwgaGVhZGVycz1uaWwp # CiAgICByZXMJPSBbXQoKICAgIHJlcyA8PCAiPHRhYmxlPiIKICAgIHJlcyA8 # PCBoZWFkZXJzLnJ3ZF9oZWFkZXJzKChub3QgZmllbGQubmlsPykpCWlmIG5v # dCBoZWFkZXJzLm5pbD8KICAgIHNlbGYua2V5cy5udW1zb3J0LmVhY2ggZG8g # fGtleXwKICAgICAga2V5Mgk9IGtleQogICAgICB2YWx1ZTIJPSBzZWxmW2tl # eV0KCiAgICAgIGtleTIJPSBrZXkyLmpvaW4oam9pbndpdGgpCWlmIGtleTIu # a2luZF9vZj8oQXJyYXkpCiAgICAgIHZhbHVlMgk9IFt2YWx1ZTJdCQlpZiB2 # YWx1ZTIua2luZF9vZj8oU3RyaW5nKQoKICAgICAgcmVzIDw8IHZhbHVlMi5y # d2Rfcm93KGZpZWxkLCBrZXkyKQogICAgZW5kCiAgICByZXMgPDwgIjwvdGFi # bGU+IgoKICAgIHJlcy5qb2luKCJcbiIpCiAgZW5kCmVuZAoKY2xhc3MgRVZU # YWJsZQogIGRlZiByd2RfdGFibGUoZmllbGQ9bmlsLCBqb2lud2l0aD1Ac2Vw # KQogICAgc3VwZXIoZmllbGQsIGpvaW53aXRoLCBAaGVhZGVycykKICBlbmQK # CiAgZGVmIHJ3ZF9mb3JtKHByZWZpeD0iIiwga2V5PW5pbCwgdHdvcGFydHM9 # ZmFsc2UpCiAgICB2YWx1ZXMJPSBzZWxmW2tleV0JaWYgbm90IGtleS5uaWw/ # CiAgICB2YWx1ZXMJPSBbXQkJaWYgdmFsdWVzLm5pbD8KICAgIG9wdGlvbnMJ # PSB7fQoKICAgIGlmIEZpbGUuZmlsZT8ob2xkbG9jYXRpb24oImNvbnN0cmFp # bnRzLnRzdiIpKQogICAgICB0YWJsZQk9IEZpbGUuYmFzZW5hbWUoQGZpbGUp # LmdzdWIoL1wudHN2JC8sICIiKQoKICAgICAgVFNWRmlsZS5uZXcob2xkbG9j # YXRpb24oImNvbnN0cmFpbnRzLnRzdiIpKS5zdWJzZXQoWyJUYWJsZSIsICJD # b25zdHJhaW50Il0sIFt0YWJsZSwgImtleSJdLCBbIkNvbHVtbiIsICJWYWx1 # ZSJdKS52YWx1ZXMuZWFjaCBkbyB8Y29sdW1uLCB0YWJsZTJ8CiAgICAgICAg # b3B0aW9uc1tjb2x1bW5dCT0gVFNWRmlsZS5uZXcob2xkbG9jYXRpb24oIiN7 # dGFibGUyfS50c3YiKSkua2V5cy5jb2xsZWN0e3xhfCBhLmpvaW4oIlx0Iil9 # CiAgICAgIGVuZAogICAgZW5kCgogICAgQGhlYWRlcnMucndkX2Zvcm0ocHJl # Zml4LCB2YWx1ZXMsIHR3b3BhcnRzID8gQGtleSA6IDAsIG9wdGlvbnMpCiAg # ZW5kCgogIGRlZiByd2RfbWV0YWRhdGEKICAgIHJlcwk9IFtdCgogICAgcmVz # IDw8ICI8dGFibGU+IgogICAgcmVzIDw8ICI8cm93PiIKICAgIHJlcyA8PCAi # ICA8ZW1wdHkvPiIKICAgIHJlcyA8PCAiICA8dGV4dCBuYW1lPSdoZWFkZXJf # bmV3JyB2YWx1ZT0nJy8+IgogICAgcmVzIDw8ICI8L3Jvdz4iCiAgICBAaGVh # ZGVycy5lYWNoX2luZGV4IGRvIHxufAogICAgICByZXMgPDwgIjxyb3c+Igog # ICAgICByZXMgPDwgIiAgPHRleHQgbmFtZT0naGVhZGVyXyN7bn1fb2xkJyB2 # YWx1ZT0nI3tAaGVhZGVyc1tuXX0nLz4iCiAgICAgIHJlcyA8PCAiICA8dGV4 # dCBuYW1lPSdoZWFkZXJfI3tufV9uZXcnIHZhbHVlPScnLz4iCiAgICAgIHJl # cyA8PCAiPC9yb3c+IgogICAgZW5kCiAgICByZXMgPDwgIjwvdGFibGU+IgoK # ICAgIHJldHVybiByZXMuam9pbigiXG4iKQogIGVuZAplbmQKCmNsYXNzIE9w # ZW5UYWcKICBkZWYgcHJlY2hpbGRyZW4ocmVzLCBiZWZvcmUsIGFmdGVyLCB2 # YXJzaHRtbCwgdmFyc3N0cmluZywgc3dpdGNoZXMsIGhlbHAsIG9uZW9ybW9y # ZWZpZWxkcywgZmlyc3RhY3Rpb24sIHRhYnMsIHRhYiwgcGRhKQogICAgYmVm # CT0gYmVmb3JlWy0xXQogICAgcmVzIDw8IEZvcm1hdCAlIFsiQmVmb3JlIiwg # QHN1YnR5cGVdCWlmICgkcndkX2RlYnVnIGFuZCBub3QgYmVmLm5pbD8pCiAg # ICByZXMgPDwgYmVmCWlmIG5vdCBiZWYubmlsPwoKICAgIHJlcyA8PCBGb3Jt # YXQgJSBbIlByZSIsIEBzdWJ0eXBlXQlpZiAkcndkX2RlYnVnCgogICAgYWxp # Z24JPSBBQwogICAgYWxpZ24JPSAiYWxpZ249JyN7QGFyZ3NbImFsaWduIl19 # JyIJaWYgQGFyZ3MuaW5jbHVkZT8oImFsaWduIikKCiAgICB2YWxpZ24JPSBW # QQogICAgdmFsaWduCT0gInZhbGlnbj0nI3tAYXJnc1sidmFsaWduIl19JyIJ # aWYgQGFyZ3MuaW5jbHVkZT8oInZhbGlnbiIpCgogICAgdmFsdWUxCT0gIiIK # ICAgIHZhbHVlMQk9IHZhcnNodG1sW0BhcmdzWyJuYW1lIl1dCWlmIHZhcnNo # dG1sLmluY2x1ZGU/KEBhcmdzWyJuYW1lIl0pCiAgICB2YWx1ZTEJPSBAYXJn # c1sidmFsdWUiXQkJaWYgQGFyZ3MuaW5jbHVkZT8oInZhbHVlIikKCiAgICB2 # YWx1ZTIJPSAiIgogICAgdmFsdWUyCT0gdmFyc3N0cmluZ1tAYXJnc1sibmFt # ZSJdXQlpZiB2YXJzc3RyaW5nLmluY2x1ZGU/KEBhcmdzWyJuYW1lIl0pCiAg # ICB2YWx1ZTIJPSBAYXJnc1sidmFsdWUiXQkJaWYgQGFyZ3MuaW5jbHVkZT8o # InZhbHVlIikKCiAgICBjZWxsc3BhY2luZwk9IDMKICAgIGNlbGxzcGFjaW5n # CT0gMAlpZiBwZGEKCiAgICBjYXNlIEBzdWJ0eXBlCiAgICB3aGVuICJhcHBs # aWNhdGlvbiIKICAgIHdoZW4gIndpbmRvdyIsICJoZWxwd2luZG93IgogICAg # ICBhcmdzCT0gQGFyZ3MuZGVlcF9kdXAKCiAgICAgIGFyZ3NbIm5vaGVscGJ1 # dHRvbiJdCT0gKG5vdCBoZWxwKQoKICAgICAgdGVtcGxhdGUJPSAkcndkX2h0 # bWxfMQogICAgICB0ZW1wbGF0ZQk9ICRyd2RfaHRtbF9QREFfMQlpZiBwZGEK # CiAgICAgIHJlcyA8PCAodGVtcGxhdGUodGVtcGxhdGUsIGFyZ3MpKQogICAg # d2hlbiAicCIJCXRoZW4gcmVzIDw8ICI8cCAje2FsaWdufT4iCiAgICB3aGVu # ICJwcmUiCQl0aGVuIHJlcyA8PCAiPHByZSAje2FsaWdufT4iCiAgICB3aGVu # ICJiaWciCQl0aGVuIHJlcyA8PCAiPHAgI3thbGlnbn0+PGJpZz4iCiAgICB3 # aGVuICJzbWFsbCIJdGhlbiByZXMgPDwgIjxwICN7YWxpZ259PjxzbWFsbD4i # CiAgICB3aGVuICJsaXN0IgkJdGhlbiByZXMgPDwgIjx1bCAje2FsaWdufT4i # CiAgICB3aGVuICJpdGVtIgkJdGhlbiByZXMgPDwgIjxsaSAje2FsaWdufT4i # CiAgICB3aGVuICJlbXB0eSIJdGhlbiByZXMgPDwgIjxwPjxicj4iCiAgICB3 # aGVuICJpbWFnZSIKICAgICAgd2lkdGgJPSAid2lkdGg9JyN7QGFyZ3NbIndp # ZHRoIl19IglpZiBAYXJncy5pbmNsdWRlPygid2lkdGgiKQogICAgICBoZWln # aHQJPSAiaGVpZ2h0PScje0BhcmdzWyJoZWlnaHQiXX0nIglpZiBAYXJncy5p # bmNsdWRlPygiaGVpZ2h0IikKCiAgICAgIHJlcyA8PCAiPGltZyBzcmM9JyN7 # QGFyZ3NbInNyYyJdfScgYWx0PScje0BhcmdzWyJhbHQiXX0nICN7d2lkdGh9 # ICN7aGVpZ2h0fT4iCiAgICB3aGVuICJwcm9ncmVzc2JhciIKICAgICAgd2lk # dGgJPSAyMDAKCiAgICAgIHJlcyA8PCAiPHRhYmxlPiIKICAgICAgcmVzIDw8 # ICIgIDx0cj4iCiAgICAgIHJlcyA8PCAiICAgIDx0ZCBjb2xzcGFuPScyJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nI3t3 # aWR0aCs1fSc+PC90ZD4iCiAgICAgIHJlcyA8PCAiICA8L3RyPiIKICAgICAg # cmVzIDw8ICIgIDx0cj4iCiAgICAgIHJlcyA8PCAiICAgIDx0ZCBiZ2NvbG9y # PScjREREREREJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # MCcgd2lkdGg9JyN7KHdpZHRoKkBhcmdzWyJ2YWx1ZSJdLnRvX2YpLnRvX2l9 # Jz48L3RkPiIKICAgICAgcmVzIDw8ICIgICAgPHRkIGJnY29sb3I9JyNFRUVF # RUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEwJyB3aWR0 # aD0nI3sod2lkdGgqKDEuMC1AYXJnc1sidmFsdWUiXS50b19mKSkudG9faX0n # PjwvdGQ+IgogICAgICByZXMgPDwgIiAgPC90cj4iCiAgICAgIHJlcyA8PCAi # PC90YWJsZT4iCiAgICB3aGVuICJiciIJCXRoZW4gcmVzIDw8ICI8YnI+Igog # ICAgd2hlbiAiaHIiCQl0aGVuIHJlcyA8PCAiPGhyPiIKICAgIHdoZW4gImIi # CQl0aGVuIHJlcyA8PCAiPGI+IgogICAgd2hlbiAiaSIJCXRoZW4gcmVzIDw8 # ICI8aT4iCiAgICB3aGVuICJhIgogICAgICBpZiBAYXJncy5pbmNsdWRlPygi # aHJlZiIpCiAgICAgICAgcmVzIDw8ICI8YSBocmVmPScje0BhcmdzWyJocmVm # Il19JyB0YXJnZXQ9JyN7QGFyZ3NbInRhcmdldCJdIG9yICJfYmxhbmsifSc+ # IgogICAgICBlbHNlCiAgICAgICAgcmVzIDw8ICI8YSBocmVmPSdqYXZhc2Ny # aXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCIje0Bh # cmdzWyJhY3Rpb24iXX1cIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsn # PiIKICAgICAgZW5kCiAgICB3aGVuICJ2ZXJ0aWNhbCIJdGhlbiByZXMgPDwg # Ijx0YWJsZSAje0FDfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3Bh # Y2luZz0nI3tjZWxsc3BhY2luZ30nIGNlbGxwYWRkaW5nPScwJz4iCiAgICB3 # aGVuICJob3Jpem9udGFsIgl0aGVuIHJlcyA8PCAiPHRhYmxlICN7QUN9IGJv # cmRlcj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPScje2NlbGxzcGFj # aW5nfScgY2VsbHBhZGRpbmc9JzAnPjx0ciAje2FsaWdufSAje3ZhbGlnbn0+ # IgogICAgd2hlbiAidGFibGUiCXRoZW4gcmVzIDw8ICI8dGFibGUgI3tBQ30g # Ym9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JyN7Y2VsbHNw # YWNpbmd9JyBjZWxscGFkZGluZz0nMCc+IgogICAgd2hlbiAicm93IgkJdGhl # biByZXMgPDwgIjx0ciAje2FsaWdufSAje3ZhbGlnbn0+IgogICAgd2hlbiAi # aGlkZGVuIgl0aGVuIHJlcyA8PCAiPHAgI3thbGlnbn0+PGlucHV0IG5hbWU9 # JyN7QGFyZ3NbIm5hbWUiXX0nIHZhbHVlPScje3ZhbHVlMX0nIHR5cGU9J2hp # ZGRlbic+IgogICAgd2hlbiAidGV4dCIKICAgICAgbWF4bGVuZ3RoCT0gIiIK # ICAgICAgbWF4bGVuZ3RoCT0gIm1heGxlbmd0aD0nJXMnIiAlIEBhcmdzWyJt # YXhsZW5ndGgiXQlpZiBAYXJncy5pbmNsdWRlPygibWF4bGVuZ3RoIikKICAg # ICAgc2l6ZQk9ICIiCiAgICAgIHNpemUJPSAic2l6ZT0nJXMnIiAlIEBhcmdz # WyJzaXplIl0JCWlmIEBhcmdzLmluY2x1ZGU/KCJzaXplIikKICAgICAgc2l6 # ZQk9ICJzaXplPSclcyciICUgMTAJCQlpZiBwZGEKICAgICAgcmVzIDw8ICI8 # cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgdmFs # dWU9JyN7dmFsdWUxfScgdHlwZT0ndGV4dCcgI3ttYXhsZW5ndGh9ICN7c2l6 # ZX0+IgogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVu # ICJ0ZXh0YXJlYSIKICAgICAgcmVzIDw8ICI8cCAje2FsaWdufT48dGV4dGFy # ZWEgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgcm93cz0nMjUnIGNvbHM9Jzgw # Jz4je3ZhbHVlMi5jcmxmfTwvdGV4dGFyZWE+IgogICAgICBvbmVvcm1vcmVm # aWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJwYXNzd29yZCIKICAgICAgbWF4 # bGVuZ3RoCT0gIiIKICAgICAgbWF4bGVuZ3RoCT0gIm1heGxlbmd0aD0nJXMn # IiAlIEBhcmdzWyJtYXhsZW5ndGgiXQlpZiBAYXJncy5pbmNsdWRlPygibWF4 # bGVuZ3RoIikKICAgICAgc2l6ZQk9ICIiCiAgICAgIHNpemUJPSAic2l6ZT0n # JXMnIiAlIDEwCQkJaWYgcGRhCiAgICAgIHJlcyA8PCAiPHAgI3thbGlnbn0+ # PGlucHV0IG5hbWU9JyN7QGFyZ3NbIm5hbWUiXX0nIHZhbHVlPScje3ZhbHVl # MX0nIHR5cGU9J3Bhc3N3b3JkJyAje21heGxlbmd0aH0gI3tzaXplfT4iCiAg # ICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gImNoZWNr # Ym94IgogICAgICBpZiB2YXJzaHRtbFtAYXJnc1sibmFtZSJdXSA9PSAib24i # CiAgICAgICAgc3dpdGNoZXNbQGFyZ3NbIm5hbWUiXV0JPSB0cnVlCiAgICAg # ICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tAYXJnc1si # bmFtZSJdfScgY2hlY2tlZD0nb24nIHR5cGU9J2NoZWNrYm94Jz4iCiAgICAg # IGVsc2UKICAgICAgICBzd2l0Y2hlc1tAYXJnc1sibmFtZSJdXQk9IGZhbHNl # CiAgICAgICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tA # YXJnc1sibmFtZSJdfScgdHlwZT0nY2hlY2tib3gnPiIKICAgICAgZW5kCiAg # ICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gInJhZGlv # IgogICAgICBpZiB2YXJzaHRtbFtAYXJnc1sibmFtZSJdXSA9PSB2YWx1ZTEJ # IyA/Pz8gMSBvciAyPwogICAgICAgIHJlcyA8PCAiPHAgI3thbGlnbn0+PGlu # cHV0IG5hbWU9JyN7QGFyZ3NbIm5hbWUiXX0nIGNoZWNrZWQ9J29uJyB2YWx1 # ZT0nI3t2YWx1ZTF9JyB0eXBlPSdyYWRpbyc+IgogICAgICBlbHNlCiAgICAg # ICAgcmVzIDw8ICI8cCAje2FsaWdufT48aW5wdXQgbmFtZT0nI3tAYXJnc1si # bmFtZSJdfScgdmFsdWU9JyN7dmFsdWUxfScgdHlwZT0ncmFkaW8nPiIKICAg # ICAgZW5kCiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdo # ZW4gInNlbGVjdCIKICAgICByZXMgPDwgIjxzZWxlY3QgI3thbGlnbn0gbmFt # ZT0nI3tAYXJnc1sibmFtZSJdfScgd2lkdGg9JyN7QGFyZ3NbIndpZHRoIl19 # IHNpemU9JyN7QGFyZ3NbInNpemUiXX0nPiIJIyA/Pz8gTWlzc2NoaWVuIG5v # ZyBpZXRzIG1ldCAnbXVsdGlwbGUnPwogICAgICBuYW1lCT0gQGFyZ3NbIm5h # bWUiXQogICAgICAkc2VsZWN0CT0gdmFyc2h0bWxbbmFtZV0KICAgICAgb25l # b3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAib3B0aW9uIgogICAg # ICBpZiAkc2VsZWN0ID09IEBjaGlsZHJlblswXS50ZXh0CiAgICAgICAgcmVz # IDw8ICI8b3B0aW9uIHNlbGVjdGVkPSd0cnVlJz4iCiAgICAgIGVsc2UKICAg # ICAgICByZXMgPDwgIjxvcHRpb24+IgogICAgICBlbmQKICAgIHdoZW4gImJ1 # dHRvbiIKICAgICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1 # ZT0nI3tAYXJnc1siY2FwdGlvbiJdfScgb25jbGljaz0nZG9jdW1lbnQuYm9k # eWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cIiN7QGFyZ3NbImFjdGlvbiJdfVwi # Oyc+IgogICAgICBmaXJzdGFjdGlvbgk8PCBAYXJnc1siYWN0aW9uIl0JaWYg # KGZpcnN0YWN0aW9uLmVtcHR5PyBhbmQgQGFyZ3MuaW5jbHVkZT8oImFjdGlv # biIpKQogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVu # ICJiYWNrIgogICAgICByZXMgPDwgIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZh # bHVlPSdCYWNrJyBvbmNsaWNrPSdkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0 # aW9uLnZhbHVlPVwicndkX2JhY2tcIjsnPiIKICAgICAgZmlyc3RhY3Rpb24J # PDwgInJ3ZF9iYWNrIglpZiBmaXJzdGFjdGlvbi5lbXB0eT8KICAgICAgb25l # b3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAiY2FuY2VsIgogICAg # ICByZXMgPDwgIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDYW5jZWwn # IG9uY2xpY2s9J2RvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9 # XCJyd2RfY2FuY2VsXCI7Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8ICJyd2Rf # Y2FuY2VsIglpZiBmaXJzdGFjdGlvbi5lbXB0eT8KICAgICAgb25lb3Jtb3Jl # ZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAiaGVscCIKICAgICAgcmVzIDw8 # ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nSGVscCcgb25jbGljaz0n # ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9oZWxw # XCI7Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8ICJyd2RfaGVscCIJaWYgZmly # c3RhY3Rpb24uZW1wdHk/CiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1 # ZSIKICAgIHdoZW4gInF1aXQiCiAgICAgIHJlcyA8PCAiPGlucHV0IHR5cGU9 # J3N1Ym1pdCcgdmFsdWU9J1F1aXQnIG9uY2xpY2s9J2RvY3VtZW50LmJvZHlm # b3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfcXVpdFwiOyc+IgogICAgICBm # aXJzdGFjdGlvbgk8PCAicndkX3F1aXQiCWlmIGZpcnN0YWN0aW9uLmVtcHR5 # PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJj # bG9zZSIKICAgICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1 # ZT0nQ2xvc2UnIG9uY2xpY2s9J3dpbmRvdy5jbG9zZSgpOyc+IgogICAgICBm # aXJzdGFjdGlvbgk8PCAicndkX3F1aXQiCWlmIGZpcnN0YWN0aW9uLmVtcHR5 # PwogICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJt # YWluIgogICAgICByZXMgPDwgIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVl # PSdNYWluJyBvbmNsaWNrPSdkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9u # LnZhbHVlPVwicndkX21haW5cIjsnPiIKICAgICAgZmlyc3RhY3Rpb24JPDwg # InJ3ZF9tYWluIglpZiBmaXJzdGFjdGlvbi5lbXB0eT8KICAgICAgb25lb3Jt # b3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hlbiAicmVzZXQiCiAgICAgIHJl # cyA8PCAiPGlucHV0IHR5cGU9J3Jlc2V0JyAgdmFsdWU9J1Jlc2V0Jz4iCiAg # ICAgIGZpcnN0YWN0aW9uCTw8ICJyd2RfcXVpdCIJaWYgZmlyc3RhY3Rpb24u # ZW1wdHk/CSMgPz8/CiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIK # ICAgIHdoZW4gImNsb3Nld2luZG93IgogICAgICAjcmVzIDw8ICI8c2NyaXB0 # IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+XG4iCSMgPz8/CiAgICAgICNyZXMg # PDwgIjwhLS1cbiIKICAgICAgI3JlcyA8PCAiICB3aW5kb3cuY2xvc2UoKTtc # biIKICAgICAgI3JlcyA8PCAiLy8tLT5cbiIKICAgICAgI3JlcyA8PCAiPC9z # Y3JpcHQ+IgogICAgd2hlbiAidGFicyIKICAgICAgcmVzIDw8ICI8dGFibGUg # I3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JzAn # IGNlbGxwYWRkaW5nPScwJz4iCiAgICAgIHJlcyA8PCAiICA8dHIgI3tBTH0+ # IgogICAgICByZXMgPDwgIiAgICA8dGQgI3tBTH0gY2xhc3M9J3RhYnMnPiIK # ICAgICAgcmVzIDw8ICIgICAgICA8dGFibGUgI3tBTH0gYm9yZGVyPScjeyRy # d2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJz4i # CiAgICAgIHJlcyA8PCAiICAgICAgICA8dHIgI3tBTH0+IgogICAgICAjcmVz # IDw8ICIgICAgICAgICAgPHRkIGNsYXNzPSdub3RhYic+Jm5ic3A7PC90ZD4i # CiAgICAgIHRhYnMuZWFjaCBkbyB8b2JqfAogICAgICAgIG5hbWUJPSBvYmou # YXJnc1sibmFtZSJdCiAgICAgICAgY2FwdGlvbgk9IG9iai5hcmdzWyJjYXB0 # aW9uIl0KCiAgICAgICAgcmVzIDw8ICI8dGQgI3tBTH0gY2xhc3M9J25vdGFi # Jz4mbmJzcDs8L3RkPiIJdW5sZXNzIG9iaiA9PSB0YWJzWzBdCgogICAgICAg # IGlmIG5hbWUgPT0gdGFiCiAgICAgICAgICByZXMgPDwgIjx0ZCAje0FDfSBj # bGFzcz0nYWN0aXZldGFiJz48dHQ+Jm5ic3A7I3tjYXB0aW9ufSZuYnNwOzwv # dHQ+PC90ZD4iCiAgICAgICAgZWxzZQogICAgICAgICAgcmVzIDw8ICI8dGQg # I3tBQ30gY2xhc3M9J3Bhc3NpdmV0YWInPjxhIGhyZWY9J2phdmFzY3JpcHQ6 # ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF90YWJf # I3tuYW1lfVwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+PHR0PiZu # YnNwOyN7Y2FwdGlvbn0mbmJzcDs8L3R0PjwvYT48L3RkPiIKICAgICAgICBl # bmQKICAgICAgZW5kCiAgICAgIHJlcyA8PCAiICAgICAgICAgIDx0ZCBjbGFz # cz0nbm90YWInIHdpZHRoPScxMDAlJz4mbmJzcDs8L3RkPiIKICAgICAgcmVz # IDw8ICIgICAgICAgIDwvdHI+IgogICAgICByZXMgPDwgIiAgICAgIDwvdGFi # bGU+IgogICAgICByZXMgPDwgIiAgICA8L3RkPiIKICAgICAgcmVzIDw8ICIg # IDwvdHI+IgogICAgICByZXMgPDwgIiAgPHRyICN7YWxpZ259PiIKICAgICAg # cmVzIDw8ICIgICAgPHRkICN7YWxpZ259IGNsYXNzPSd0YWJibGFkJz4iCiAg # ICB3aGVuICJ0YWIiCiAgICAgIHJlcyA8PCAiPHRhYmxlICN7QUN9IGJvcmRl # cj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFjaW5nPSczJyBjZWxscGFkZGlu # Zz0nMCc+IgogICAgd2hlbiAicGFuZWwiCiAgICAgIGxldmVsCT0gKEBhcmdz # WyJsZXZlbCJdIG9yICJub3JtYWwiKQogICAgICByZXMgPDwgIjx0YWJsZSAj # e0FDfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0nMCcg # Y2VsbHBhZGRpbmc9JzAnPiIKICAgICAgcmVzIDw8ICIgIDx0ciAje2FsaWdu # fT4iCiAgICAgIHJlcyA8PCAiICAgIDx0ZCAje2FsaWdufSBjbGFzcz0ncGFu # ZWwxJz4iCQlpZiBsZXZlbCA9PSAibm9ybWFsIgogICAgICByZXMgPDwgIiAg # ICA8dGQgI3thbGlnbn0gY2xhc3M9J3BhbmVsMWhpZ2gnPiIJaWYgbGV2ZWwg # PT0gImhpZ2giCiAgICAgIHJlcyA8PCAiICAgIDx0ZCAje2FsaWdufSBjbGFz # cz0ncGFuZWwxbG93Jz4iCWlmIGxldmVsID09ICJsb3ciCiAgICAgIHJlcyA8 # PCAiICAgICAgPHRhYmxlICN7QUN9IGJvcmRlcj0nI3skcndkX2JvcmRlcn0n # IGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCc+IgogICAgICByZXMg # PDwgIiAgICAgICAgPHRyICN7YWxpZ259PiIKICAgICAgcmVzIDw8ICIgICAg # ICAgICAgPHRkICN7YWxpZ259IGNsYXNzPSdwYW5lbDInPiIJCWlmIGxldmVs # ID09ICJub3JtYWwiCiAgICAgIHJlcyA8PCAiICAgICAgICAgIDx0ZCAje2Fs # aWdufSBjbGFzcz0ncGFuZWwyaGlnaCc+IglpZiBsZXZlbCA9PSAiaGlnaCIK # ICAgICAgcmVzIDw8ICIgICAgICAgICAgPHRkICN7YWxpZ259IGNsYXNzPSdw # YW5lbDJsb3cnPiIJaWYgbGV2ZWwgPT0gImxvdyIKICAgICAgcmVzIDw8ICIg # ICAgICAgICAgICA8dGFibGUgI3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVy # fScgY2VsbHNwYWNpbmc9JzMnIGNlbGxwYWRkaW5nPScwJz4iCiAgICBlbHNl # CiAgICAgIHB1dHMgIjwje0BzdWJ0eXBlfT4iCiAgICAgIHJlcyA8PCAiJmx0 # OyN7QHN1YnR5cGV9Jmd0OyIKICAgIGVuZAoKICAgIGJlZgk9IG5pbAogICAg # YWZ0CT0gbmlsCgogICAgY2FzZSBAc3VidHlwZQogICAgd2hlbiAidmVydGlj # YWwiLCAid2luZG93IiwgImhlbHB3aW5kb3ciLCAidGFiIiwgInBhbmVsIgog # ICAgICByZXMgPDwgRm9ybWF0ICUgWyJBZnRQcmUiLCBAc3VidHlwZV0JaWYg # JHJ3ZF9kZWJ1ZwogICAgICBpZiBAYXJncy5pbmNsdWRlPygic3BhY2luZyIp # CiAgICAgICAgcwk9ICI8dHI+PHRkPiZuYnNwOzwvdGQ+PC90cj4iICogKEBh # cmdzWyJzcGFjaW5nIl0udG9faSkKICAgICAgZWxzZQogICAgICAgIHMJPSAi # IgogICAgICBlbmQKICAgICAgYmVmCT0gIiN7c308dHIgI3thbGlnbn0gI3t2 # YWxpZ259Pjx0ZCAje2FsaWdufT4iCiAgICAgIGFmdAk9ICI8L3RkPjwvdHI+ # IgogICAgd2hlbiAiaG9yaXpvbnRhbCIsICJyb3ciCiAgICAgIHJlcyA8PCBG # b3JtYXQgJSBbIkFmdFByZSIsIEBzdWJ0eXBlXQlpZiAkcndkX2RlYnVnCiAg # ICAgIGJlZgk9ICI8dGQgI3thbGlnbn0+IgogICAgICBhZnQJPSAiPC90ZD4i # CiAgICBlbmQKCiAgICBiZWZvcmUucHVzaChiZWYpCiAgICBhZnRlci5wdXNo # KGFmdCkKICBlbmQKCiAgZGVmIHBvc3RjaGlsZHJlbihyZXMsIGJlZm9yZSwg # YWZ0ZXIsIHZhcnNodG1sLCB2YXJzc3RyaW5nLCBzd2l0Y2hlcywgaGVscCwg # b25lb3Jtb3JlZmllbGRzLCBmaXJzdGFjdGlvbiwgdGFicywgdGFiLCBwZGEp # CiAgICBjYXNlIEBzdWJ0eXBlCiAgICB3aGVuICJ2ZXJ0aWNhbCIsICJ3aW5k # b3ciLCAiaGVscHdpbmRvdyIsICJ0YWIiLCAicGFuZWwiCiAgICAgIHJlcyA8 # PCBGb3JtYXQgJSBbIkJlZlBvc3QiLCBAc3VidHlwZV0JaWYgJHJ3ZF9kZWJ1 # ZwogICAgICBpZiBAYXJncy5pbmNsdWRlPygic3BhY2luZyIpCiAgICAgICAg # cmVzIDw8ICI8dHI+PHRkPiZuYnNwOzwvdGQ+PC90cj4iICogKEBhcmdzWyJz # cGFjaW5nIl0udG9faSkKICAgICAgZW5kCiAgICB3aGVuICJob3Jpem9udGFs # IiwgInJvdyIKICAgICAgcmVzIDw8IEZvcm1hdCAlIFsiQmVmUG9zdCIsIEBz # dWJ0eXBlXQlpZiAkcndkX2RlYnVnCiAgICBlbmQKCiAgICByZXMgPDwgRm9y # bWF0ICUgWyJQb3N0IiwgQHN1YnR5cGVdCQlpZiAkcndkX2RlYnVnCgogICAg # Y2FzZSBAc3VidHlwZQogICAgd2hlbiAiYXBwbGljYXRpb24iCiAgICB3aGVu # ICJ3aW5kb3ciLCAiaGVscHdpbmRvdyIKICAgICAgYXJncwk9IEBhcmdzLmRl # ZXBfZHVwCgogICAgICBhcmdzWyJub2hlbHBidXR0b24iXQk9IChub3QgaGVs # cCkKCiAgICAgIHRlbXBsYXRlCT0gJHJ3ZF9odG1sXzIKICAgICAgdGVtcGxh # dGUJPSAkcndkX2h0bWxfUERBXzIJaWYgcGRhCgogICAgICByZXMgPDwgKHRl # bXBsYXRlKHRlbXBsYXRlLCBhcmdzKSkKICAgIHdoZW4gInAiCQl0aGVuIHJl # cyA8PCAiPC9wPiIKICAgIHdoZW4gInByZSIJCXRoZW4gcmVzIDw8ICI8L3By # ZT4iCiAgICB3aGVuICJiaWciCQl0aGVuIHJlcyA8PCAiPC9iaWc+PC9wPiIK # ICAgIHdoZW4gInNtYWxsIgl0aGVuIHJlcyA8PCAiPC9zbWFsbD48L3A+Igog # ICAgd2hlbiAibGlzdCIJCXRoZW4gcmVzIDw8ICI8L3VsPiIKICAgIHdoZW4g # Iml0ZW0iCQl0aGVuIHJlcyA8PCAiPC9saT4iCiAgICB3aGVuICJlbXB0eSIJ # dGhlbiByZXMgPDwgIjwvcD4iCiAgICB3aGVuICJpbWFnZSIJdGhlbiByZXMg # PDwgIiIKICAgIHdoZW4gInByb2dyZXNzYmFyIgl0aGVuIHJlcyA8PCAiIgog # ICAgd2hlbiAiYnIiCQl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiaHIiCQl0 # aGVuIHJlcyA8PCAiIgogICAgd2hlbiAiYiIJCXRoZW4gcmVzIDw8ICI8L2I+ # IgogICAgd2hlbiAiaSIJCXRoZW4gcmVzIDw8ICI8L2k+IgogICAgd2hlbiAi # YSIJCXRoZW4gcmVzIDw8ICI8L2E+IgogICAgd2hlbiAidmVydGljYWwiCXRo # ZW4gcmVzIDw8ICI8L3RhYmxlPiIKICAgIHdoZW4gImhvcml6b250YWwiCXRo # ZW4gcmVzIDw8ICI8L3RyPjwvdGFibGU+IgogICAgd2hlbiAidGFibGUiCXRo # ZW4gcmVzIDw8ICI8L3RhYmxlPiIKICAgIHdoZW4gInJvdyIJCXRoZW4gcmVz # IDw8ICI8L3RyPiIKICAgIHdoZW4gImhpZGRlbiIJdGhlbiByZXMgPDwgIjwv # cD4iCiAgICB3aGVuICJ0ZXh0IgkJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3 # aGVuICJ0ZXh0YXJlYSIJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3aGVuICJw # YXNzd29yZCIJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3aGVuICJjaGVja2Jv # eCIJdGhlbiByZXMgPDwgIjwvcD4iCiAgICB3aGVuICJyYWRpbyIJdGhlbiBy # ZXMgPDwgIjwvcD4iCiAgICB3aGVuICJzZWxlY3QiCiAgICAgIHJlcyA8PCAi # PC9zZWxlY3Q+IgogICAgICAkc2VsZWN0CT0gbmlsCiAgICB3aGVuICJvcHRp # b24iCXRoZW4gcmVzIDw8ICI8L29wdGlvbj4iCiAgICB3aGVuICJidXR0b24i # CXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJiYWNrIgkJdGhlbiByZXMgPDwg # IiIKICAgIHdoZW4gImNhbmNlbCIJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4g # ImhlbHAiCQl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAicXVpdCIJCXRoZW4g # cmVzIDw8ICIiCiAgICB3aGVuICJjbG9zZSIJdGhlbiByZXMgPDwgIiIKICAg # IHdoZW4gIm1haW4iCQl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAicmVzZXQi # CXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJjbG9zZXdpbmRvdyIJdGhlbiBy # ZXMgPDwgIiIKICAgIHdoZW4gInRhYnMiCiAgICAgIHJlcyA8PCAiICAgIDwv # dGQ+IgogICAgICByZXMgPDwgIiAgPC90cj4iCiAgICAgIHJlcyA8PCAiPC90 # YWJsZT4iCiAgICB3aGVuICJ0YWIiCiAgICAgIHJlcyA8PCAiPC90YWJsZT4i # CiAgICB3aGVuICJwYW5lbCIKICAgICAgcmVzIDw8ICIgICAgICAgICAgICA8 # L3RhYmxlPiIKICAgICAgcmVzIDw8ICIgICAgICAgICAgPC90ZD4iCiAgICAg # IHJlcyA8PCAiICAgICAgICA8L3RyPiIKICAgICAgcmVzIDw8ICIgICAgICA8 # L3RhYmxlPiIKICAgICAgcmVzIDw8ICIgICAgPC90ZD4iCiAgICAgIHJlcyA8 # PCAiICA8L3RyPiIKICAgICAgcmVzIDw8ICI8L3RhYmxlPiIKICAgIGVsc2UK # ICAgICAgcHV0cyAiPC8je0BzdWJ0eXBlfT4iCiAgICAgIHJlcyA8PCAiJmx0 # Oy8je0BzdWJ0eXBlfSZndDsiCiAgICBlbmQKCiAgICBiZWZvcmUucG9wCiAg # ICBhZnRlci5wb3AKCiAgICBhZnQJPSBhZnRlclstMV0KICAgIHJlcyA8PCBG # b3JtYXQgJSBbIkFmdGVyIiwgQHN1YnR5cGVdCQlpZiAoJHJ3ZF9kZWJ1ZyBh # bmQgbm90IGFmdC5uaWw/KQogICAgcmVzIDw8IGFmdAlpZiBub3QgYWZ0Lm5p # bD8KICBlbmQKCiAgZGVmIHRlbXBsYXRlKGh0bWwsIHZhcnMpCiAgICByZXMJ # PSBbXQoKICAgIGEJPSB7fQoKICAgIHZhcnMuZWFjaCBkbyB8aywgdnwKICAg # ICAgYVtrLnVwY2FzZV0JPSB2CiAgICBlbmQKCiAgICBsb2dvCT0gbmlsCiAg # ICBsb2dvCT0gRmlsZS5leHBhbmRfcGF0aCh2YXJzWyJsb2dvIl0sICRyd2Rf # ZmlsZXMpCQlpZiB2YXJzLmluY2x1ZGU/KCJsb2dvIikKICAgIGxvZ28JPSBu # aWwJCQkJCQkJdW5sZXNzIGxvZ28ubmlsPyBvciBGaWxlLmZpbGU/KGxvZ28p # CgogICAgd2F0ZXJtYXJrCT0gbmlsCiAgICB3YXRlcm1hcmsJPSBGaWxlLmV4 # cGFuZF9wYXRoKHZhcnNbIndhdGVybWFyayJdLCAkcndkX2ZpbGVzKQlpZiB2 # YXJzLmluY2x1ZGU/KCJ3YXRlcm1hcmsiKQogICAgd2F0ZXJtYXJrCT0gbmls # CQkJCQkJCXVubGVzcyB3YXRlcm1hcmsubmlsPyBvciBGaWxlLmZpbGU/KHdh # dGVybWFyaykKCiAgICBhWyJMT0dPIl0JCT0gIiIJdW5sZXNzIG5vdCBsb2dv # Lm5pbD8KICAgIGFbIldBVEVSTUFSSyJdCT0gIiIJdW5sZXNzIG5vdCB3YXRl # cm1hcmsubmlsPwoKICAgIGFbIkhFTFBCVVRUT04iXQk9IChub3QgKHZhcnNb # Im5vaGVscGJ1dHRvbiJdKSkKICAgIGFbIkJBQ0tCVVRUT05TIl0JPSAobm90 # ICh2YXJzWyJub2JhY2tidXR0b25zIl0pKQogICAgYVsiQkFDS0JVVFRPTlMi # XQk9IChub3QgKHZhcnNbIm5vYmFja2J1dHRvbnMiXSkpCiAgICBhWyJDTE9T # RUJVVFRPTiJdCT0gKG5vdCAodmFyc1sibm9jbG9zZWJ1dHRvbiJdKSkKCiAg # ICBpZiBhLmluY2x1ZGU/KCJXSURUSCIpCiAgICAgIGFbIldJRFRIMSJdCT0g # IndpZHRoPScje2FbIldJRFRIIl19JyIKICAgICAgYVsiV0lEVEgyIl0JPSBh # WyJXSURUSCJdCiAgICBlbHNlCiAgICAgIGFbIldJRFRIMSJdCT0gIiAiCiAg # ICAgIGFbIldJRFRIMiJdCT0gIjEiCiAgICBlbmQKCiAgICBodG1sLnNwbGl0 # KC9ccipcbi8pLmVhY2ggZG8gfGxpbmV8CiAgICAgIGlmIGxpbmUgPX4gLyVb # QS1aMC05XSslLwogICAgICAgIGEuZWFjaCBkbyB8aywgdnwKICAgICAgICAg # IHYJPSBmYWxzZQlpZiAodi5raW5kX29mPyhTdHJpbmcpIGFuZCB2LmVtcHR5 # PykKCiAgICAgICAgICBpZiBsaW5lLmluY2x1ZGU/KCIlI3trfSUiKQogICAg # ICAgICAgICBsaW5lLmdzdWIhKCIlI3trfSUiLCAiI3t2fSIpCWlmIHYKICAg # ICAgICAgIGVuZAogICAgICAgIGVuZAoKICAgICAgICBsaW5lCT0gIjwhLS0g # I3tsaW5lLnNjYW4oLyVbQS1aMC05XSslLykuam9pbigiICIpfSAtLT4iCWlm # IGxpbmUgPX4gLyVbQS1aMC05XSslLwogICAgICBlbmQKCiAgICAgIHJlcyA8 # PCBsaW5lCiAgICBlbmQKCiAgICByZXMuam9pbigiXG4iKQogIGVuZAplbmQK # CmNsYXNzIFRleHQKICBkZWYgcHJlY2hpbGRyZW4ocmVzLCBiZWZvcmUsIGFm # dGVyLCB2YXJzaHRtbCwgdmFyc3N0cmluZywgc3dpdGNoZXMsIGhlbHAsIG9u # ZW9ybW9yZWZpZWxkcywgZmlyc3RhY3Rpb24sIHRhYnMsIHRhYiwgcGRhKQog # ICAgaWYgbm90IEB0ZXh0LnNjYW4oL1teIFx0XHJcbl0vKS5lbXB0eT8KICAg # ICAgcmVzIDw8IEZvcm1hdCAlIFsiVGV4dCIsICIiXQlpZiAkcndkX2RlYnVn # CiAgICAgIHJlcyA8PCAiI3tAdGV4dH0iCiAgICBlbmQKICBlbmQKZW5kCgpj # bGFzcyBSV0RUcmVlIDwgWE1MCmVuZAoKY2xhc3MgUldEV2luZG93CiAgQEB3 # aW5kb3dzCT0ge30JIyBLaW5kIG9mIGNhY2hpbmcuCiAgQEBoZWxwd2luZG93 # cwk9IHt9CSMgS2luZCBvZiBjYWNoaW5nLgoKICBkZWYgaW5pdGlhbGl6ZShy # d2QsIHdpbmRvdz1uaWwpCiAgICByd2QJPSByd2Quam9pbigiXG4iKQlpZiBy # d2Qua2luZF9vZj8oQXJyYXkpCgogICAgaWYgQEB3aW5kb3dzW3J3ZF0ubmls # PwogICAgICBAQHdpbmRvd3NbcndkXQkJPSB7fQogICAgICBAQGhlbHB3aW5k # b3dzW3J3ZF0JPSB7fQoKICAgICAgdHJlZQk9IFhNTC5uZXcocndkKQoKICAg # ICAgdHJlZS5wYXJzZShPcGVuVGFnLCAid2luZG93IikgZG8gfHR5cGUsIG9i # anwKICAgICAgICAkcndkX2FwcHZhcnMuZWFjaHt8aywgdnwgb2JqLmFyZ3Nb # a10gPSB2fQogICAgICAgIEBAd2luZG93c1tyd2RdW29iai5hcmdzWyJuYW1l # Il1dCT0gb2JqLnRvX2gKICAgICAgZW5kCgogICAgICB0cmVlLnBhcnNlKE9w # ZW5UYWcsICJoZWxwd2luZG93IikgZG8gfHR5cGUsIG9ianwKICAgICAgICAk # cndkX2FwcHZhcnMuZWFjaHt8aywgdnwgb2JqLmFyZ3Nba10gPSB2fQogICAg # ICAgIEBAaGVscHdpbmRvd3NbcndkXVtvYmouYXJnc1sibmFtZSJdXQk9IG9i # ai50b19oCiAgICAgIGVuZAogICAgZW5kCgogICAgQHJ3ZAk9IChAQHdpbmRv # d3NbcndkXVt3aW5kb3ddIG9yICIiKS5kdXAKICAgIEBoZWxwcndkCT0gKEBA # aGVscHdpbmRvd3NbcndkXVt3aW5kb3ddIG9yICIiKS5kdXAKICBlbmQKCiAg # ZGVmIHJlbmRlcihwZGEsIGFjdGlvbj1uaWwsIHZhcnM9SGFzaC5uZXcsIHN3 # aXRjaGVzPUhhc2gubmV3LCBoZWxwPWZhbHNlLCB0YWI9IiIpCiAgICB2YXJz # aHRtbAkJPSBIYXNoLm5ldwogICAgdmFyc3N0cmluZwkJPSBIYXNoLm5ldwog # ICAgb25lb3Jtb3JlZmllbGRzCT0gIiIKICAgIGZpcnN0YWN0aW9uCQk9ICIi # CiAgICBodG1sCQk9IFtdCgogICAgdmFycwk9IHZhcnMuZGVlcF9kdXAKCiAg # ICB2YXJzLmVhY2ggZG8gfGtleSwgdmFsdWV8CiAgICAgIGlmIG5vdCBrZXku # ZW1wdHk/CiAgICAgICAgaWYgdmFsdWUucmVzcG9uZF90bz8gInRvX3MiCiAg # ICAgICAgICBAcndkLmdzdWIhKC8lJSN7a2V5fSUlLywgdmFsdWUudG9fcykK # ICAgICAgICAgIEByd2QuZ3N1YiEoLyUje2tleX0lLywgdmFsdWUudG9fcy50 # b19odG1sKQoKICAgICAgICAgIEBoZWxwcndkLmdzdWIhKC8lJSN7a2V5fSUl # LywgdmFsdWUudG9fcykKICAgICAgICAgIEBoZWxwcndkLmdzdWIhKC8lI3tr # ZXl9JS8sIHZhbHVlLnRvX3MudG9faHRtbCkKCiAgICAgICAgICB2YXJzaHRt # bFtrZXldCQk9IHZhbHVlLnRvX3MudG9faHRtbAogICAgICAgICAgdmFyc3N0 # cmluZ1trZXldCT0gdmFsdWUudG9fcwogICAgICAgIGVuZAogICAgICBlbmQK # ICAgIGVuZAoKICAgIHdpbmRvd29iamVjdAk9IFJXRFRyZWUubmV3KEByd2Qp # LmNoaWxkcmVuLmR1cC5kZWxldGVfaWZ7fG9ianwgb2JqLnN1YnR5cGUgIT0g # IndpbmRvdyJ9WzBdCiAgICBoZWxwb2JqZWN0CQk9IFJXRFRyZWUubmV3KEBo # ZWxwcndkKS5jaGlsZHJlbi5kdXAuZGVsZXRlX2lme3xvYmp8IG9iai5zdWJ0 # eXBlICE9ICJoZWxwd2luZG93In1bMF0KCiAgICB0YWJzb2JqCT0gd2luZG93 # b2JqZWN0LmNoaWxkcmVuLmR1cC5kZWxldGVfaWZ7fG9ianwgb2JqLnN1YnR5 # cGUgIT0gInRhYnMifVswXQoKICAgIGlmIG5vdCB0YWJzb2JqLm5pbD8KICAg # ICAgdGFicwk9IHRhYnNvYmouY2hpbGRyZW4uZHVwLmRlbGV0ZV9pZnt8b2Jq # fCAobm90IG9iai5raW5kX29mPyhPcGVuVGFnKSkgb3IgKG9iai5zdWJ0eXBl # ICE9ICJ0YWIiKX0KCiAgICAgIGlmIHRhYi5lbXB0eT8KICAgICAgICB0YWIJ # CQk9IHRhYnNbMF0uYXJnc1sibmFtZSJdCiAgICAgIGVuZAoKICAgICAgdGFi # c29iai5jaGlsZHJlbi5kZWxldGVfaWZ7fG9ianwgKG9iai5raW5kX29mPyhP # cGVuVGFnKSkgYW5kIChvYmouc3VidHlwZSA9PSAidGFiIikgYW5kIG9iai5h # cmdzWyJuYW1lIl0gIT0gdGFifQogICAgZW5kCgogICAgaWYgaGVscAogICAg # ICBoZWxwb2JqZWN0LnBhcnNldHJlZSgicHJlY2hpbGRyZW4iLCAicG9zdGNo # aWxkcmVuIiwgaHRtbCwgWyIiXSwgWyIiXSwgdmFyc2h0bWwsIHZhcnNzdHJp # bmcsIHN3aXRjaGVzLCBmYWxzZSwgb25lb3Jtb3JlZmllbGRzLCBmaXJzdGFj # dGlvbiwgdGFicywgdGFiLCBwZGEpCiAgICBlbHNlCiAgICAgIHdpbmRvd29i # amVjdC5wYXJzZXRyZWUoInByZWNoaWxkcmVuIiwgInBvc3RjaGlsZHJlbiIs # IGh0bWwsIFsiIl0sIFsiIl0sIHZhcnNodG1sLCB2YXJzc3RyaW5nLCBzd2l0 # Y2hlcywgKG5vdCBAaGVscHJ3ZC5lbXB0eT8pLCBvbmVvcm1vcmVmaWVsZHMs # IGZpcnN0YWN0aW9uLCB0YWJzLCB0YWIsIHBkYSkKICAgIGVuZAoKICAgIGh0 # bWwJPSBodG1sLmpvaW4oIiIpCSMgPz8/CgogICAgaHRtbC5nc3ViISgvJSUq # W1s6YWxudW06XV9cLV0rJSUqLywgIiIpCWlmIG5vdCAkcndkX2RlYnVnCiAg # ICBodG1sLmdzdWIhKC8lJS8sICIlIikKICAgIGh0bWwuZ3N1YiEoL1xuXG4q # LywgIlxuIikKCiAgICBpZiBvbmVvcm1vcmVmaWVsZHMuZW1wdHk/CiAgICAg # IGZvY3VzCT0gIiIKICAgIGVsc2UKICAgICAgZm9jdXMJPSAiZG9jdW1lbnQu # Ym9keWZvcm0uZWxlbWVudHNbMF0uZm9jdXMoKTsiCiAgICBlbmQKCiAgICBm # aXJzdGFjdGlvbgk9IGFjdGlvbglpZiB3aW5kb3dvYmplY3QuYXJncy5rZXlz # LmluY2x1ZGU/KCJyZWZyZXNoIikJdW5sZXNzIGFjdGlvbi5uaWw/CgogICAg # aHRtbC5nc3ViISgvXCRSV0RfRklSU1RBQ1RJT05cJC8JLCBmaXJzdGFjdGlv # bikKICAgIGh0bWwuZ3N1YiEoL1wkUldEX0ZPQ1VTXCQvCQksIGZvY3VzKQoK # ICAgIGh0bWwKICBlbmQKZW5kCgpjbGFzcyBSV0RNZXNzYWdlIDwgUldEV2lu # ZG93CiAgZGVmIGluaXRpYWxpemUobXNnKQogICAgc3VwZXIoIjx3aW5kb3cg # dGl0bGU9J1JXRCBNZXNzYWdlJyBub2JhY2tidXR0b25zIG5vY2xvc2VidXR0 # b24+PHA+I3ttc2d9PC9wPjxiYWNrLz48L3dpbmRvdz4iKQogIGVuZAplbmQK # CmNsYXNzIFJXREVycm9yIDwgUldEV2luZG93CiAgZGVmIGluaXRpYWxpemUo # bXNnKQogICAgc3VwZXIoIjx3aW5kb3cgdGl0bGU9J1JXRCBFcnJvcicgbm9i # YWNrYnV0dG9ucyBub2Nsb3NlYnV0dG9uPjxwPjxiPkVycm9yOjwvYj4gI3tt # c2d9PC9wPjxiYWNrLz48L3dpbmRvdz4iKQogIGVuZAplbmQKCmNsYXNzIFJX # RFByb2dyZXNzQmFyIDwgUldEV2luZG93CiAgZGVmIGluaXRpYWxpemUocmVm # cmVzaCwgcHJvZ3Jlc3MpCiAgICBzCT0gIiIKICAgIHMgPDwgIjx3aW5kb3cg # dGl0bGU9J1JXRCBQcm9ncmVzcycgbm9iYWNrYnV0dG9ucyBub2Nsb3NlYnV0 # dG9uIHJlZnJlc2g9JyN7cmVmcmVzaH0nPiIKICAgIGlmIHByb2dyZXNzLmxl # bmd0aCA9PSAxCiAgICAgIHByb2dyZXNzLmVhY2ggZG8gfGNhcHRpb24sIHZh # bHVlfAogICAgICAgIHMgPDwgIjxwPiN7Y2FwdGlvbn08L3A+PHByb2dyZXNz # YmFyIHZhbHVlPScje3ZhbHVlfScvPjxwPiN7KDEwMCp2YWx1ZSkudG9faX0l # JTwvcD4iCiAgICAgIGVuZAogICAgZWxzZQogICAgICBzIDw8ICI8dGFibGU+ # IgogICAgICBwcm9ncmVzcy5lYWNoIGRvIHxjYXB0aW9uLCB2YWx1ZXwKICAg # ICAgICBzIDw8ICI8cm93PjxwIGFsaWduPSdsZWZ0Jz4je2NhcHRpb259PC9w # Pjxwcm9ncmVzc2JhciB2YWx1ZT0nI3t2YWx1ZX0nLz48cCBhbGlnbj0ncmln # aHQnPiN7KDEwMCp2YWx1ZSkudG9faX0lJTwvcD48L3Jvdz4iCiAgICAgIGVu # ZAogICAgICBzIDw8ICI8L3RhYmxlPiIKICAgIGVuZAogICAgcyA8PCAiPGNh # bmNlbC8+IgogICAgcyA8PCAiPC93aW5kb3c+IgogICAgc3VwZXIocykKICBl # bmQKZW5kCgpjbGFzcyBSV0REb25lIDwgUldEV2luZG93CiAgZGVmIGluaXRp # YWxpemUoZXhpdGJyb3dzZXIpCiAgICBzdXBlcigiPHdpbmRvdyB0aXRsZT0n # UldEIE1lc3NhZ2UnIG5vYmFja2J1dHRvbnMgbm9jbG9zZWJ1dHRvbj48cD5E # b25lLjwvcD48aT4oU29tZSBicm93c2VycyBkb24ndCBjbG9zZSw8YnI+YmVj # YXVzZSBvZiBzZWN1cml0eSByZWFzb25zLik8L2k+PGhvcml6b250YWw+PGNs # b3NlLz4je2V4aXRicm93c2VyID8gIiIgOiAiPGJ1dHRvbiBjYXB0aW9uPSdB # Z2FpbicvPiJ9PC9ob3Jpem9udGFsPiN7ZXhpdGJyb3dzZXIgPyAiPGNsb3Nl # d2luZG93Lz4iIDogIiJ9PC93aW5kb3c+IikKICBlbmQKZW5kCgpjbGFzcyBS # V0RpYWxvZwogIGRlZiBpbml0aWFsaXplKHhtbCkKICAgIEByd2RfeG1sCQkJ # PSB4bWwKICAgIEByd2RfZXhpdGJyb3dzZXIJCT0gZmFsc2UKICAgIEByd2Rf # aGlzdG9yeQkJPSBbXQogICAgQHJ3ZF9pZ25vcmVfdmFycwkJPSBbXQogICAg # QHJ3ZF9jYWxsX2FmdGVyX2JhY2sJPSBbXQogICAgQHJ3ZF90aW1lCQkJPSBU # aW1lLm5vdwoKICAgICRyd2RfYXBwdmFycwk9IHt9CWlmICRyd2RfYXBwdmFy # cy5uaWw/CiAgICBYTUwubmV3KHhtbCkucGFyc2UoT3BlblRhZywgImFwcGxp # Y2F0aW9uIikgZG8gfHR5cGUsIG9ianwKICAgICAgb2JqLmFyZ3MuZGVlcF9k # dXAuZWFjaCBkbyB8aywgdnwKICAgICAgICAkcndkX2FwcHZhcnNba10JPSB2 # CiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgogIGRlZiBzZWxmLmZpbGUocndk # ZmlsZSwgKmFyZ3MpCiAgICBuZXcoRmlsZS5uZXcocndkZmlsZSkucmVhZGxp # bmVzLCAqYXJncykKICBlbmQKCiAgZGVmIHNlcnZlKHBvcnQ9bmlsLCBhdXRo # PW5pbCwgcmVhbG09c2VsZi5jbGFzcy50b19zKQogICAgZXhpdAlpZiAkcndk # X2V4aXQKCiAgICByYWlzZSAiUldEIGlzIG5vdCBpbml0aWFsaXplZC4iCWlm # IEByd2RfeG1sLm5pbD8KCiAgICBsb3csIGhpZ2gJPSBFTlZbIlJXRFBPUlRT # Il0uc3BsaXQoL1teXGQrXS8pCiAgICBoaWdoCT0gbG93CWlmIGhpZ2gubmls # PwogICAgbG93LCBoaWdoCT0gbG93LnRvX2ksIGhpZ2gudG9faQoKICAgIGlv # CQk9IG5pbAoKICAgIHBvcnQsIGlvCT0gVENQU2VydmVyLmZyZWVwb3J0KGxv # dywgaGlnaCwgKG5vdCBhdXRoLm5pbD8pKQlpZiBwb3J0Lm5pbD8KICAgIHJh # aXNlICJObyBmcmVlIFRDUCBwb3J0LiIJCQkJCQlpZiBwb3J0Lm5pbD8KCiAg # ICBwb3J0CT0gcG9ydC50b19pCgogICAgQHJ3ZF9zZXJ2ZXIJPSBSV0RTZXJ2 # ZXIubmV3KHNlbGYsIHBvcnQsIGlvLCBhdXRoLCByZWFsbSkKCiAgICBzZWxm # CiAgZW5kCgogIGRlZiByZW5kZXIocmVzLCBwYXRoLCBwb3N0LCBkb3dubG9h # ZCwgZG93bmxvYWRmaWxlLCBwZGEsIHNlc3Npb25pZCkKCQkjIEF2b2lkIGEg # dGltZW91dC4KCiAgICBAcndkX3RpbWUJCT0gVGltZS5ub3cKCgkJIyBJbml0 # aWFsaXplIHNvbWUgdmFycy4KCiAgICB2YXJzCQk9IEhhc2gubmV3CWlmIHZh # cnMubmlsPwogICAgQHJ3ZF9zd2l0Y2hlcwk9IEhhc2gubmV3CWlmIEByd2Rf # c3dpdGNoZXMubmlsPwoKICAgIGRvbmUJCT0gZmFsc2UKICAgIGhlbHAJCT0g # ZmFsc2UKICAgIGJhY2sJCT0gZmFsc2UKICAgIHRhYgkJCT0gIiIKICAgIEBy # d2RfbXNndHlwZQk9IG5pbAlpZiBAcndkX3Byb2dyZXNzX3RocmVhZC5uaWw/ # CiAgICBAcndkX2Rvd25sb2FkCT0gbmlsCiAgICBAcndkX2Rvd25sb2FkX2Zp # bGUJPSBuaWwKCgkJIyBTd2l0Y2hlcyBhcmUgdXNlZCBmb3IgY2hlY2tib3hl # cy4KCiAgICBAcndkX3N3aXRjaGVzLmVhY2ggZG8gfGtleSwgdmFsdWV8CiAg # ICAgIHZhcnNba2V5XQk9ICJvZmYiCiAgICBlbmQKCiAgICBAcndkX3N3aXRj # aGVzCT0gSGFzaC5uZXcKCgkJIyBDb3B5IHRoZSB2YXJzIGZyb20gdGhlIHdp # bmRvdyB0byB2YXJzLiB2YXJzIHdpbCBsYXRlciBvbiBiZSBjb3BpZWQgdG8g # aW5zdGFuY2UgdmFyaWFibGVzLgoKICAgIHBvc3Quc29ydC5lYWNoIGRvIHxr # ZXksIHZhbHVlfAogICAgICBwdXRzICJQb3N0OiAje2tleX0gLT4gI3t2YWx1 # ZS5mcm9tX2h0bWwuaW5zcGVjdH0iCWlmICRyd2RfZGVidWcKCiAgICAgIHZh # cnNba2V5XQk9IHZhbHVlLmZyb21faHRtbAogICAgZW5kCgoJCSMgU3RhY2sg # aGFuZGxpbmcgZm9yIHJ3ZF9hY3Rpb24sIHJ3ZF93aW5kb3cgYW5kIHJ3ZF90 # YWIuCgogICAgQHJ3ZF9hY3Rpb24JCQk9IHZhcnNbInJ3ZF9hY3Rpb24iXQkJ # aWYgdmFycy5pbmNsdWRlPygicndkX2FjdGlvbiIpCiAgICBAcndkX2FjdGlv # biwgQHJ3ZF9hcmdzCT0gQHJ3ZF9hY3Rpb24uc3BsaXQoL1wvLywgMikJdW5s # ZXNzIEByd2RfYWN0aW9uLm5pbD8KICAgIEByd2RfYWN0aW9uLCByZXN0CQk9 # IEByd2RfYWN0aW9uLnNwbGl0KC9cPy8pCXVubGVzcyBAcndkX2FjdGlvbi5u # aWw/CgogICAgQHJ3ZF9yZWZyZXNoX2FjdGlvbgkJPSAoQHJ3ZF9hY3Rpb24g # b3IgQHJ3ZF9yZWZyZXNoX2FjdGlvbiBvciAibWFpbiIpCgogICAgdW5sZXNz # IHJlc3QubmlsPwogICAgICByZXN0LmVhY2ggZG8gfHN8CiAgICAgICAgaywg # dgk9IHMuc3BsaXQoLz0vLCAyKQogICAgICAgIHZhcnNba10JPSB2CiAgICAg # IGVuZAogICAgZW5kCgogICAgaWYgQHJ3ZF9hY3Rpb24gPT0gInJ3ZF9jYW5j # ZWwiCiAgICAgIEByd2RfcHJvZ3Jlc3NfdGhyZWFkLmtpbGwJCXVubGVzcyBA # cndkX3Byb2dyZXNzX3RocmVhZC5uaWw/CiAgICAgIEByd2RfcHJvZ3Jlc3Nf # dGhyZWFkCT0gbmlsCiAgICAgIEByd2RfYWN0aW9uCQk9ICJyd2RfYmFjayIK # ICAgIGVuZAoKICAgIEByd2RfaGlzdG9yeQk9IFtbIm1haW4iLCBbXSwgIm1h # aW4iLCAiIl1dCWlmIEByd2RfaGlzdG9yeS5lbXB0eT8KCiAgICBpZiBAcndk # X2FjdGlvbiA9fiAvXnJ3ZF90YWJfLwogICAgICBAcndkX3RhYgk9IEByd2Rf # YWN0aW9uLnN1YigvXnJ3ZF90YWJfLywgIiIpCiAgICAgIEByd2RfaGlzdG9y # eVstMV1bM10JPSBAcndkX3RhYgogICAgZWxzZQogICAgICBjYXNlIEByd2Rf # YWN0aW9uCiAgICAgIHdoZW4gInJ3ZF9iYWNrIgogICAgICAgIEByd2RfaGlz # dG9yeS5wb3AKICAgICAgICBAcndkX2FjdGlvbgkJCT0gKEByd2RfaGlzdG9y # eVstMV0gb3IgW25pbCwgbmlsLCBuaWxdKVswXQogICAgICAgIEByd2RfYXJn # cwkJCT0gKEByd2RfaGlzdG9yeVstMV0gb3IgW25pbCwgbmlsLCBuaWxdKVsx # XQogICAgICAgIEByd2Rfd2luZG93CQkJPSAoQHJ3ZF9oaXN0b3J5Wy0xXSBv # ciBbbmlsLCBuaWwsIG5pbF0pWzJdCiAgICAgICAgQHJ3ZF90YWIJCQk9IChA # cndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5pbCwgbmlsXSlbM10KICAgICAg # ICBiYWNrCQkJCT0gdHJ1ZQogICAgICB3aGVuICJyd2RfaGVscCIKICAgICAg # ICBoZWxwCQkJCT0gdHJ1ZQogICAgICB3aGVuICJyd2RfbWFpbiIKICAgICAg # ICBAcndkX2FjdGlvbgkJCT0gbmlsCiAgICAgICAgQHJ3ZF93aW5kb3cJCQk9 # IG5pbAogICAgICAgIEByd2RfdGFiCQkJPSBuaWwKICAgICAgICBAcndkX2hp # c3RvcnkJCQk9IFtdCiAgICAgIHdoZW4gInJ3ZF9xdWl0IgogICAgICAgIGRv # bmUJCQkJPSB0cnVlCiAgICAgIGVsc2UKICAgICAgZW5kCgoJCSMgSGlzdG9y # eSBzdHVmZgoKICAgICAgQHJ3ZF9oaXN0b3J5CT0gQHJ3ZF9oaXN0b3J5Wy0x # MDAuLi0xXQlpZiBAcndkX2hpc3RvcnkubGVuZ3RoID49IDEwMAogICAgICBA # cndkX2FjdGlvbgk9ICJtYWluIgkJCWlmIEByd2RfYWN0aW9uLm5pbD8KICAg # ICAgQHJ3ZF9hY3Rpb24JPSAibWFpbiIJCQlpZiBAcndkX2FjdGlvbi5lbXB0 # eT8KICAgICAgQHJ3ZF93aW5kb3cJPSAibWFpbiIJCQlpZiBAcndkX3dpbmRv # dy5uaWw/CiAgICAgIEByd2Rfd2luZG93CT0gIm1haW4iCQkJaWYgQHJ3ZF93 # aW5kb3cuZW1wdHk/CiAgICAgIEByd2RfdGFiCQk9ICIiCQkJCWlmIEByd2Rf # dGFiLm5pbD8KICAgICAgQHJ3ZF9hcmdzCQk9IFtdCQkJCWlmIEByd2RfYXJn # cy5uaWw/CiAgICAgIEByd2RfYXJncwkJPSBbXQkJCQlpZiBAcndkX2FjdGlv # biA9PSAibWFpbiIKCiAgICAgIHZhcnNbInJ3ZF9hY3Rpb24iXQk9IEByd2Rf # YWN0aW9uCiAgICAgIHZhcnNbInJ3ZF93aW5kb3ciXQk9IEByd2Rfd2luZG93 # CiAgICAgIHZhcnNbInJ3ZF90YWIiXQkJPSBAcndkX3RhYgoKCQkjIENvcHkg # dmFycyBmcm9tIHdpbmRvdyB0byBpbnN0YW5jZS4KCiAgICAgIHZhcnMuZWFj # aCBkbyB8aywgdnwKICAgICAgICBpbnN0YW5jZV9ldmFsICJAI3trfQk9IHZh # cnNbJyN7a30nXSIJCWlmICgobm90IGsuZW1wdHk/KSBhbmQgay5zY2FuKC9e # cndkXy8pLmVtcHR5PyBhbmQgbm90IEByd2RfaWdub3JlX3ZhcnMuaW5jbHVk # ZT8oIkAje2t9IikpCiAgICAgIGVuZAoKCQkjIENhbGxiYWNrLgoKICAgICAg # aWYgKG5vdCBiYWNrKSBvciBAcndkX2NhbGxfYWZ0ZXJfYmFjay5pbmNsdWRl # PyhAcndkX2FjdGlvbikKICAgICAgICB1bmxlc3MgQHJ3ZF9hY3Rpb24gPX4g # L15yd2RfLwogICAgICAgICAgcHV0cyAiTWV0aG9kOiAje0Byd2RfYWN0aW9u # fSgje0Byd2RfYXJncy5qb2luKCIsICIpfSkiCWlmICRyd2RfZGVidWcKICAg # ICAgICAgIGlmIG1ldGhvZHMuaW5jbHVkZT8oQHJ3ZF9hY3Rpb24pCiAgICAg # ICAgICAgIG1ldGhvZChAcndkX2FjdGlvbikuY2FsbCgqQHJ3ZF9hcmdzKQog # ICAgICAgICAgZWxzZQogICAgICAgICAgICBwdXRzICJNZXRob2QgJyVzJyBp # cyBub3QgZGVmaW5lZC4iICUgQHJ3ZF9hY3Rpb24KICAgICAgICAgIGVuZAog # ICAgICAgIGVuZAoKCQkjIEhpc3Rvcnkgc3R1ZmYKCiAgICAgICAgQHJ3ZF9o # aXN0b3J5CT0gW1sibWFpbiIsIFtdLCAibWFpbiIsICIiXV0JaWYgQHJ3ZF9h # Y3Rpb24gPT0gIm1haW4iCiAgICAgICAgQHJ3ZF9oaXN0b3J5CT0gW1sibWFp # biIsIFtdLCAibWFpbiIsICIiXV0JaWYgQHJ3ZF9oaXN0b3J5LmVtcHR5PwoK # ICAgICAgICBhCQk9IFtAcndkX2FjdGlvbiwgQHJ3ZF9hcmdzLCBAcndkX3dp # bmRvdywgQHJ3ZF90YWJdCgogICAgICAgIEByd2RfaGlzdG9yeS5wdXNoIGEJ # CQkJaWYgKEByd2RfaGlzdG9yeVstMV0gIT0gYSBvciBub3QgQHJ3ZF9tc2d0 # eXBlLm5pbD8pCgogICAgICAgIGlmIEByd2Rfd2luZG93ID09ICJyd2RfYmFj # ayIKICAgICAgICAgIEByd2RfaGlzdG9yeS5wb3AKICAgICAgICAgIEByd2Rf # aGlzdG9yeS5wb3AKICAgICAgICAgIEByd2RfYWN0aW9uCQkJPSAoQHJ3ZF9o # aXN0b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0pWzBdCiAgICAgICAgICBA # cndkX2FyZ3MJCQk9IChAcndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5pbCwg # bmlsXSlbMV0KICAgICAgICAgIEByd2Rfd2luZG93CQkJPSAoQHJ3ZF9oaXN0 # b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0pWzJdCiAgICAgICAgICBAcndk # X3RhYgkJCT0gKEByd2RfaGlzdG9yeVstMV0gb3IgW25pbCwgbmlsLCBuaWxd # KVszXQogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKCQkjIENvcHkg # dmFycyBmcm9tIGluc3RhbmNlIHRvIHdpbmRvdy4KCiAgICBpbnN0YW5jZV92 # YXJpYWJsZXMuZWFjaCBkbyB8a3wKICAgICAgay5zdWIhKC9eQC8sICIiKQog # ICAgICBpbnN0YW5jZV9ldmFsICJ2YXJzWycje2t9J10gPSBAI3trfS50b19z # IglpZiAoay5zY2FuKC9ecndkXy8pLmVtcHR5PyBhbmQgbm90IEByd2RfaWdu # b3JlX3ZhcnMuaW5jbHVkZT8oIkAje2t9IikpCiAgICBlbmQKCgkJIyBqdXN0 # IGlnbm9yZS4KCiAgICB2YXJzLnNvcnQuZWFjaCBkbyB8a2V5LCB2YWx1ZXwK # ICAgICAgcHV0cyAiUHJlOiAje2tleX0gLT4gI3t2YWx1ZS5pbnNwZWN0fSIJ # aWYgJHJ3ZF9kZWJ1ZwogICAgZW5kCgoKCQkjIEFuc3dlciB0byBicm93c2Vy # LgoKICAgIGlmIGRvbmUKICAgICAgcmVzIDw8IFJXRERvbmUubmV3KEByd2Rf # ZXhpdGJyb3dzZXIpLnJlbmRlcihwZGEpCiAgICBlbHNlCiAgICAgIGlmIG5v # dCBAcndkX2Rvd25sb2FkLm5pbD8KICAgICAgICBwdXRzICJEb3dubG9hZDog # I3tAcndkX3dpbmRvd30iCQlpZiAkcndkX2RlYnVnCgogICAgICAgIGRvd25s # b2FkCTw8IEByd2RfZG93bmxvYWQKICAgICAgICBkb3dubG9hZGZpbGUJPDwg # QHJ3ZF9kb3dubG9hZF9maWxlCiAgICAgIGVsc2UKICAgICAgICBpZiBub3Qg # QHJ3ZF9wcm9ncmVzc190aHJlYWQubmlsPwogICAgICAgICAgcmVzIDw8IFJX # RFByb2dyZXNzQmFyLm5ldyhAcndkX3Byb2dyZXNzX3JlZnJlc2gsIEByd2Rf # cHJvZ3Jlc3NfcHJvZ3Jlc3MpLnJlbmRlcihwZGEsIEByd2RfcmVmcmVzaF9h # Y3Rpb24pCiAgICAgICAgZWxzZQogICAgICAgICAgaWYgbm90IEByd2RfbXNn # dHlwZS5uaWw/CiAgICAgICAgICAgIHJlcyA8PCBSV0RNZXNzYWdlLm5ldyhA # cndkX21zZykucmVuZGVyKHBkYSkJaWYgQHJ3ZF9tc2d0eXBlID09ICJtZXNz # YWdlIgogICAgICAgICAgICByZXMgPDwgUldERXJyb3IubmV3KEByd2RfbXNn # KS5yZW5kZXIocGRhKQlpZiBAcndkX21zZ3R5cGUgPT0gImVycm9yIgogICAg # ICAgICAgICByZXMgPDwgQHJ3ZF9tc2cJCQkJaWYgQHJ3ZF9tc2d0eXBlID09 # ICJ0ZXh0IgogICAgICAgICAgZWxzZQogICAgICAgICAgICBwdXRzICJXaW5k # b3c6ICN7QHJ3ZF93aW5kb3d9IgkJaWYgJHJ3ZF9kZWJ1ZwogICAgICAgICAg # ICBwdXRzICJUYWI6ICN7QHJ3ZF90YWJ9IgkJaWYgJHJ3ZF9kZWJ1ZwoKICAg # ICAgICAgICAgcmVzIDw8IFJXRFdpbmRvdy5uZXcoQHJ3ZF94bWwsIEByd2Rf # d2luZG93KS5yZW5kZXIocGRhLCBAcndkX3JlZnJlc2hfYWN0aW9uLCB2YXJz # LCBAcndkX3N3aXRjaGVzLCBoZWxwLCBAcndkX3RhYikKICAgICAgICAgIGVu # ZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiBk # b25lCiAgZW5kCgogIGRlZiBzYW1ld2luZG93PwogICAgQHJ3ZF9oaXN0b3J5 # Wy0xXVsyXSA9PSBAcndkX3dpbmRvdwogIGVuZAoKICBkZWYgbWVzc2FnZSht # c2csICZibG9jaykKICAgIEByd2RfbXNnCQk9IG1zZwogICAgQHJ3ZF9tc2d0 # eXBlCT0gIm1lc3NhZ2UiCiAgZW5kCgogIGRlZiBlcnJvcihtc2csICZibG9j # aykKICAgIEByd2RfbXNnCQk9IG1zZwogICAgQHJ3ZF9tc2d0eXBlCT0gImVy # cm9yIgogIGVuZAoKICBkZWYgdGV4dChtc2cpCiAgICBAcndkX21zZwkJPSAi # PGh0bWw+PGJvZHk+PHByZT4je21zZ308L3ByZT48L2JvZHk+PC9odG1sPiIK # ICAgIEByd2RfbXNndHlwZQk9ICJ0ZXh0IgogIGVuZAoKICBkZWYgcHJvZ3Jl # c3NiYXIocmVmcmVzaCwgKnByb2dyZXNzKQogICAgQHJ3ZF9wcm9ncmVzc19y # ZWZyZXNoCT0gKHJlZnJlc2ggb3IgMSkKICAgIEByd2RfcHJvZ3Jlc3NfcHJv # Z3Jlc3MJPSBbXQoKICAgIHdoaWxlIG5vdCBwcm9ncmVzcy5lbXB0eT8KICAg # ICAgcwk9IChwcm9ncmVzcy5zaGlmdCBvciAiIikKICAgICAgaWYgcy5raW5k # X29mPyhBcnJheSkKICAgICAgICBjYXB0aW9uLCB2YWx1ZQk9IHMKICAgICAg # ICB2YWx1ZQk9ICh2YWx1ZSBvciAwLjApLnRvX2YKICAgICAgZWxzZQogICAg # ICAgIGNhcHRpb24JPSBzCiAgICAgICAgdmFsdWUJPSAocHJvZ3Jlc3Muc2hp # ZnQgb3IgMC4wKS50b19mCiAgICAgIGVuZAoKICAgICAgQHJ3ZF9wcm9ncmVz # c19wcm9ncmVzcyA8PCBbY2FwdGlvbiwgdmFsdWVdCiAgICBlbmQKCiAgICBp # ZiBAcndkX3Byb2dyZXNzX3RocmVhZC5uaWw/CiAgICAgIEByd2RfcHJvZ3Jl # c3NfcHJvZ3Jlc3MuZWFjaCBkbyB8YXwKICAgICAgICBhWzFdCT0gMC4wCiAg # ICAgIGVuZAoKICAgICAgQHJ3ZF9wcm9ncmVzc190aHJlYWQgPQogICAgICBU # aHJlYWQubmV3IGRvCiAgICAgICAgeWllbGQKICAgICAgZW5kCiAgICAgIFRo # cmVhZC5wYXNzCiAgICBlbmQKCiAgICBAcndkX3Byb2dyZXNzX3RocmVhZAk9 # IG5pbAl1bmxlc3MgQHJ3ZF9wcm9ncmVzc190aHJlYWQuYWxpdmU/CiAgZW5k # CgogIGRlZiBkb3dubG9hZChkYXRhLCBmaWxlbmFtZT0iIikKICAgIEByd2Rf # ZG93bmxvYWQJPSBkYXRhCiAgICBAcndkX2Rvd25sb2FkX2ZpbGUJPSBmaWxl # bmFtZQogIGVuZAoKICBkZWYgZXhpdGJyb3dzZXIKICAgIEByd2RfZXhpdGJy # b3dzZXIJPSB0cnVlCiAgZW5kCgogIGRlZiB0aW1lb3V0KHRpbWVvdXQsIGlu # dGVydmFsPTEpCiAgICBAcndkX3RpbWVvdXQJPSB0aW1lb3V0CgogICAgdW5s # ZXNzIEByd2RfdGltZW91dF90aHJlYWQKICAgICAgQHJ3ZF90aW1lb3V0X3Ro # cmVhZCA9CiAgICAgIFRocmVhZC5uZXcgZG8KICAgICAgICBsb29wIGRvCiAg # ICAgICAgICBpZiBUaW1lLm5vdyAtIEByd2RfdGltZSA+IEByd2RfdGltZW91 # dAogICAgICAgICAgICAkc3RkZXJyLnB1dHMgIkV4aXRpbmcgZHVlIHRvIHRp # bWVvdXQgKCN7QHJ3ZF90aW1lb3V0fSBzZWNvbmRzKS4iCiAgICAgICAgICAg # IGV4aXQgMQogICAgICAgICAgZW5kCiAgICAgICAgICBzbGVlcCBpbnRlcnZh # bAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAogIGVuZAplbmQKCmNs # YXNzIFJXRExvZ2luIDwgUldEaWFsb2cKICBkZWYgaW5pdGlhbGl6ZShyZWFs # bSkKICAgIHN1cGVyKCI8d2luZG93IG5hbWU9J21haW4nIHRpdGxlPSdSV0Qg # TG9naW4gZm9yICN7cmVhbG19JyBub2JhY2tidXR0b25zIG5vY2xvc2VidXR0 # b24+PHRhYmxlPjxyb3c+PHAgYWxpZ249J3JpZ2h0Jz5Vc2VybmFtZTo8L3A+ # PHRleHQgbmFtZT0ncndkX2EnLz48L3Jvdz48cm93PjxwIGFsaWduPSdyaWdo # dCc+UGFzc3dvcmQ6PC9wPjxwYXNzd29yZCBuYW1lPSdyd2RfYicvPjwvcm93 # PjwvdGFibGU+PGJ1dHRvbiBjYXB0aW9uPSdMb2dpbicvPjwvd2luZG93PiIp # CiAgZW5kCmVuZAoKY2xhc3MgUldEVGltZU91dCA8IFJXRGlhbG9nCiAgZGVm # IGluaXRpYWxpemUKICAgIHN1cGVyKCI8d2luZG93IG5hbWU9J21haW4nIHRp # dGxlPSdSV0QgRXJyb3InIG5vYmFja2J1dHRvbnMgbm9jbG9zZWJ1dHRvbj48 # cD48Yj5FcnJvcjo8L2I+IFNlc3Npb24gaGFzIGV4cGlyZWQuPC9wPjxidXR0 # b24gY2FwdGlvbj0nTmV3IHNlc3Npb24nLz48L3dpbmRvdz4iKQogIGVuZApl # bmQKCmNsYXNzIFNlc3Npb25DbGVhbnVwCiAgZGVmIGluaXRpYWxpemUoc2Vz # c2lvbnMsIGludGVydmFsLCB0aW1lb3V0KQogICAgZXZlcnkoaW50ZXJ2YWwp # IGRvCiAgICAgIHNlc3Npb25zLmRlbGV0ZV9pZiBkbyB8aWQsIHNlc3Npb258 # CiAgICAgICAgdGltZQk9IFRpbWUubm93LnRvX2kgLSBzZXNzaW9uLmxhc3Rh # Y2Nlc3MudG9faQoKICAgICAgICBwdXRzICJTZXNzaW9uICVzIGRlbGV0ZWQi # ICUgaWQJaWYgdGltZSA+IHRpbWVvdXQKCiAgICAgICAgdGltZSA+IHRpbWVv # dXQKICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBTZXNzaW9u # cwogIGRlZiBpbml0aWFsaXplKHJhY2ssIGNsZWFudXApCiAgICBAcmFjawk9 # IHJhY2sudG9fcwogICAgQGNsZWFudXAJPSBTZXNzaW9uQ2xlYW51cC5uZXco # c2VsZiwgMzYwMCwgMjQqMzYwMCkJaWYgY2xlYW51cAogICAgQHNlc3Npb25z # CT0ge30KICBlbmQKCiAgZGVmIFtdKHNlc3Npb25pZCkKICAgIEBzZXNzaW9u # c1tzZXNzaW9uaWRdCiAgZW5kCgogIGRlZiBbXT0oc2Vzc2lvbmlkLCB2YWx1 # ZSkKICAgIEBzZXNzaW9uc1tzZXNzaW9uaWRdCT0gdmFsdWUKICBlbmQKCiAg # ZGVmIGRlbGV0ZShzZXNzaW9uaWQpCiAgICBAc2Vzc2lvbnMuZGVsZXRlKHNl # c3Npb25pZCkKICBlbmQKCiAgZGVmIGRlbGV0ZV9pZigmYmxvY2spCiAgICBA # c2Vzc2lvbnMuZGVsZXRlX2lme3xrLCB2fCBibG9jay5jYWxsKGssIHYpfQog # IGVuZAoKICBkZWYgaW5jbHVkZT8oc2Vzc2lvbmlkKQogICAgQHNlc3Npb25z # LmluY2x1ZGU/KHNlc3Npb25pZCkKICBlbmQKZW5kCgpjbGFzcyBSV0RTZXNz # aW9uIDwgSGFzaAogIGF0dHJfcmVhZGVyIDpzZXNzaW9uaWQKICBhdHRyX3Jl # YWRlciA6bGFzdGFjY2VzcwogIGF0dHJfcmVhZGVyIDphdXRoZW50aWNhdGVk # CiAgYXR0cl93cml0ZXIgOmF1dGhlbnRpY2F0ZWQKCiAgZGVmIGluaXRpYWxp # emUoc2Vzc2lvbmlkPW5pbCkKICAgIEBzZXNzaW9uaWQJCT0gc2Vzc2lvbmlk # CiAgICBAbGFzdGFjY2VzcwkJPSBUaW1lLm5vdwogICAgQGF1dGhlbnRpY2F0 # ZWQJPSBmYWxzZQogIGVuZAoKICBkZWYgdG91Y2gKICAgIEBsYXN0YWNjZXNz # CT0gVGltZS5ub3cKICBlbmQKCiAgZGVmIHJlbmRlcihyZXMsIHBhdGgsIHBv # c3QsIGRvd25sb2FkLCBkb3dubG9hZGZpbGUsIHBkYSkKICAgIGRvbmUJPSBz # ZWxmWyJvYmplY3QiXS5yZW5kZXIocmVzLCBwYXRoLCBwb3N0LCBkb3dubG9h # ZCwgZG93bmxvYWRmaWxlLCBwZGEsIEBzZXNzaW9uaWQpCgogICAgcmVzLmdz # dWIhKC9cJFJXRF9TRVNTSU9OXCQvLCBkb25lID8gIiIgOiAiI3tAc2Vzc2lv # bmlkfSIpCgogICAgcmV0dXJuIGRvbmUKICBlbmQKZW5kCgpjbGFzcyBSV0RT # ZXJ2ZXIKICBkZWYgaW5pdGlhbGl6ZShvYmosIHBvcnQsIGlvLCBhdXRoLCBy # ZWFsbSkKICAgIEBvYmplY3QJCT0gb2JqCiAgICBAbG9jYWxicm93c2luZwk9 # IGZhbHNlCiAgICBAYnJvd3NlcnN0YXJ0ZWQJPSBmYWxzZQogICAgQHNlc3Np # b25zCQk9IFNlc3Npb25zLm5ldyhvYmouY2xhc3MsIChub3QgYXV0aC5uaWw/ # KSkKCiAgICBpZiBhdXRoLm5pbD8KICAgICAgQGxvY2FsYnJvd3NpbmcJPSB0 # cnVlCgogICAgICBpZiBFTlYuaW5jbHVkZT8oIlJXREJST1dTRVIiKSBhbmQg # bm90IEVOVlsiUldEQlJPV1NFUiJdLm5pbD8gYW5kIG5vdCBFTlZbIlJXREJS # T1dTRVIiXS5lbXB0eT8KICAgICAgICBAYnJvd3NlcnN0YXJ0ZWQJPSB0cnVl # CiAgICAgICAgQG9iamVjdC5leGl0YnJvd3NlcgoKCSMgU3RhcnQgYnJvd3Nl # ci4KCiAgICAgICAgQGJyb3dzZXJ0aHJlYWQJPQogICAgICAgIFRocmVhZC5u # ZXcgZG8KICAgICAgICAgIHB1dHMgIlN0YXJ0aW5nIHRoZSBicm93c2VyLi4u # IgoKICAgICAgICAgICNpZiBFTlZbIlJXREJST1dTRVIiXS5kb3duY2FzZSA9 # fiAvaWV4cGxvcmUvCSMgPz8/CiAgICAgICAgICAgICNAaWUJPSBJRS5uZXco # Imh0dHA6Ly9sb2NhbGhvc3Q6I3twb3J0fS8iKQogICAgICAgICAgI2Vsc2UK # ICAgICAgICAgICAgYnJvd3Nlcgk9IEVOVlsiUldEQlJPV1NFUiJdLmR1cAog # ICAgICAgICAgICB1cmwJCT0gImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIFtw # b3J0XQoKICAgICAgICAgICAgcmUJCT0gL1skJV0xXGIvCiAgICAgICAgICAg # IGNvbW1hbmQJPSAiJXMgXCIlc1wiIiAlIFticm93c2VyLCB1cmxdCiAgICAg # ICAgICAgIGNvbW1hbmQJPSBicm93c2VyLmdzdWIocmUsIHVybCkJaWYgYnJv # d3NlciA9fiByZQoKICAgICAgICAgICAgY29tbWFuZC5nc3ViISgvJXBvcnQl # LywgcG9ydC50b19zKQoKICAgICAgICAgICAgc3lzdGVtKGNvbW1hbmQpIG9y # ICRzdGRlcnIucHV0cyAiU3RhcnRpbmcgb2YgdGhlIGJyb3dzZXIgZmFpbGVk # LCBvciB0aGUgYnJvd3NlciB0ZXJtaW5hdGVkIGFibm9ybWFsbHkuXG5Db21t # YW5kID0+ICN7Y29tbWFuZH0iCiAgICAgICAgICAjZW5kCgogICAgICAgICAg # cHV0cyAiVGhlIGJyb3dzZXIgaGFzIHRlcm1pbmF0ZWQuIgogICAgICAgIGVu # ZAogICAgICBlbmQKICAgIGVuZAoKCSMgU3RhcnQgc2VydmVyLgoKICAgIHBv # cnRpbwkJPSBwb3J0CiAgICBwb3J0aW8JCT0gW3BvcnQsIGlvXQl1bmxlc3Mg # aW8ubmlsPwogICAgdGhyZWFkbGltaXRlcgk9IFRocmVhZExpbWl0ZXIubmV3 # KDEpCgogICAgSFRUUFNlcnZlci5zZXJ2ZShwb3J0aW8sIChub3QgYXV0aC5u # aWw/KSkgZG8gfHJlcSwgcmVzcHwKICAgICAgdGhyZWFkbGltaXRlci53YWl0 # IGRvCiAgICAgICAgdmFycwk9IHt9CiAgICAgICAgcmVxLnZhcnMuZWFjaCBk # byB8aywgdnwKICAgICAgICAgIHZhcnNba10JPSB2LmpvaW4oIlx0IikKICAg # ICAgICBlbmQKICAgICAgICBwYWQJPSAocmVxLnJlcXVlc3QucGF0aCBvciAi # LyIpCgogICAgICAgIGlmIGF1dGgua2luZF9vZj8gU3RyaW5nCiAgICAgICAg # ICBmaWxlCT0gIiN7aG9tZX0vI3thdXRofSIKICAgICAgICAgIGF1dGhzCT0g # e30KICAgICAgICAgIGF1dGhzCT0gSGFzaC5maWxlKGZpbGUpCWlmIEZpbGUu # ZmlsZT8oZmlsZSkKICAgICAgICBlbHNlCiAgICAgICAgICBhdXRocwk9IGF1 # dGgKICAgICAgICBlbmQKCiAgICAgICAgI29sZHNlc3Npb25pZAk9IHZhcnNb # InJ3ZF9zZXNzaW9uIl0KICAgICAgICBvbGRzZXNzaW9uaWQJPSByZXEuY29v # a2llc1sic2Vzc2lvbmlkIl0KCgkJIyBSZXRyaWV2ZSBzZXNzaW9uLgoKICAg # ICAgICBzZXNzaW9uCT0gQHNlc3Npb25zW29sZHNlc3Npb25pZF0KCgkJIyBF # dmVudHVhbGx5IGNyZWF0ZSBuZXcgc2Vzc2lvbi4KCiAgICAgICAgaWYgc2Vz # c2lvbi5uaWw/CiAgICAgICAgICBzZXNzaW9uaWQJPSBNRDUubmV3KHJlcS5w # ZWVyYWRkclszXS50b19zICsgQG9iamVjdC5pbnNwZWN0LnRvX3MgKyAoIiUx # LjZmIiAlIFRpbWUubm93LnRvX2YpKS50b19zCXdoaWxlIChzZXNzaW9uaWQg # PT0gbmlsIG9yIEBzZXNzaW9ucy5pbmNsdWRlPyhzZXNzaW9uaWQpKQogICAg # ICAgICAgc2Vzc2lvbgkJPSBSV0RTZXNzaW9uLm5ldyhzZXNzaW9uaWQpCgog # ICAgICAgICAgaWYgYXV0aC5uaWw/CiAgICAgICAgICAgIHNlc3Npb25bIm9i # amVjdCJdCQk9IEBvYmplY3QKICAgICAgICAgIGVsc2UKICAgICAgICAgICAg # c2Vzc2lvblsib2JqZWN0Il0JCT0gQG9iamVjdC5jbG9uZQogICAgICAgICAg # ZW5kCgogICAgICAgICAgaWYgb2xkc2Vzc2lvbmlkLm5pbD8gb3Igb2xkc2Vz # c2lvbmlkLmVtcHR5PwogICAgICAgICAgICBpZiBub3QgYXV0aC5uaWw/IGFu # ZCBub3QgYXV0aC5lbXB0eT8gYW5kIG5vdCBzZXNzaW9uLmF1dGhlbnRpY2F0 # ZWQgYW5kIHBhZCAhfiAvXlwvcndkXy8KCgkJIyBDaGVjayBhdXRoZW50aWNh # dGlvbgoKICAgICAgICAgICAgICB1cwk9IHZhcnNbInJ3ZF9hIl0KICAgICAg # ICAgICAgICBwYQk9IHZhcnNbInJ3ZF9iIl0KCiAgICAgICAgICAgICAgaWYg # dXMubmlsPyBvciBwYS5uaWw/IG9yIGF1dGhzW3VzXSAhPSBwYQogICAgICAg # ICAgICAgICAgc2Vzc2lvbgkJCQk9IFJXRFNlc3Npb24ubmV3CiAgICAgICAg # ICAgICAgICBzZXNzaW9uWyJvYmplY3QiXQkJPSBSV0RMb2dpbi5uZXcocmVh # bG0pCiAgICAgICAgICAgICAgICBwYWQJCQkJPSAiLyIKICAgICAgICAgICAg # ICBlbHNlCiAgICAgICAgICAgICAgICBzZXNzaW9uLmF1dGhlbnRpY2F0ZWQJ # CT0gdHJ1ZQogICAgICAgICAgICAgICAgQHNlc3Npb25zW3Nlc3Npb24uc2Vz # c2lvbmlkXQk9IHNlc3Npb24KICAgICAgICAgICAgICBlbmQKICAgICAgICAg # ICAgZWxzZQogICAgICAgICAgICAgIHNlc3Npb24uYXV0aGVudGljYXRlZAkJ # PSB0cnVlCiAgICAgICAgICAgICAgQHNlc3Npb25zW3Nlc3Npb24uc2Vzc2lv # bmlkXQk9IHNlc3Npb24KICAgICAgICAgICAgZW5kCiAgICAgICAgICBlbHNl # CiAgICAgICAgICAgIHNlc3Npb24JCT0gUldEU2Vzc2lvbi5uZXcKICAgICAg # ICAgICAgc2Vzc2lvblsib2JqZWN0Il0JPSBSV0RUaW1lT3V0Lm5ldwogICAg # ICAgICAgZW5kCgogICAgICAgICAgdmFycwk9IHt9CiAgICAgICAgZW5kCgoJ # CSMgQXZvaWQgdGltZW91dC4KCiAgICAgICAgc2Vzc2lvbi50b3VjaAoKICAg # ICAgICBpZiBwYWQgPT0gIi8iCgoJCSMgU2VydmUgbWV0aG9kcy9jYWxsYmFj # a3MuCgoJCSMgQnVpbGQgbmV3IHBhZ2UuCgogICAgICAgICAgZG93bmxvYWQJ # PSAiIgogICAgICAgICAgZG93bmxvYWRmaWxlCT0gIiIKICAgICAgICAgIHJl # cwkJPSAiIgoKICAgICAgICAgIGRvbmUJPSBzZXNzaW9uLnJlbmRlcihyZXMs # IHBhZCwgdmFycywgZG93bmxvYWQsIGRvd25sb2FkZmlsZSwgcmVxLnBkYT8p # CgogICAgICAgICAgYmVnaW4KICAgICAgICAgICAgaWYgZG93bmxvYWQuZW1w # dHk/CiAgICAgICAgICAgICAgcmVzcFsiQ29udGVudC1UeXBlIl0JCT0gInRl # eHQvaHRtbCIKICAgICAgICAgICAgICBpZiBkb25lCiAgICAgICAgICAgICAg # ICByZXNwLmNvb2tpZXNbInNlc3Npb25pZCJdCT0gIiIKICAgICAgICAgICAg # ICBlbHNlCiAgICAgICAgICAgICAgICByZXNwLmNvb2tpZXNbInNlc3Npb25p # ZCJdCT0gc2Vzc2lvbi5zZXNzaW9uaWQKICAgICAgICAgICAgICBlbmQKCiAg # ICAgICAgICAgICAgcmVzcCA8PCByZXMKICAgICAgICAgICAgZWxzZQogICAg # ICAgICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCQk9ICJhcHBsaWNhdGlv # bi9vY3RldC1zdHJlYW0iCiAgICAgICAgICAgICAgcmVzcFsiQ29udGVudC1E # aXNwb3NpdGlvbiJdCT0gImF0dGFjaG1lbnQ7IgogICAgICAgICAgICAgIHJl # c3BbIkNvbnRlbnQtRGlzcG9zaXRpb24iXQk9ICJhdHRhY2htZW50OyBmaWxl # bmFtZT0lcyIgJSBkb3dubG9hZGZpbGUJdW5sZXNzIGRvd25sb2FkZmlsZS5l # bXB0eT8KCiAgICAgICAgICAgICAgcmVzcCA8PCBkb3dubG9hZAogICAgICAg # ICAgICBlbmQKICAgICAgICAgIHJlc2N1ZQogICAgICAgICAgICBwdXRzICJT # ZW5kaW5nIHJlc3BvbnNlIHRvIGJyb3dzZXIgZmFpbGVkLiIKCiAgICAgICAg # ICAgIEBzZXNzaW9ucy5kZWxldGUoc2Vzc2lvbi5zZXNzaW9uaWQpCiAgICAg # ICAgICBlbmQKCgkJIyBFdmVudHVhbGx5IGRlbGV0ZSB0aGlzIHNlc3Npb24u # CgogICAgICAgICAgaWYgZG9uZQogICAgICAgICAgICBAc2Vzc2lvbnMuZGVs # ZXRlKHNlc3Npb24uc2Vzc2lvbmlkKQoKICAgICAgICAgICAgaWYgQGxvY2Fs # YnJvd3NpbmcKICAgICAgICAgICAgICByZXNwLnN0b3AKCiAgICAgICAgICAg # ICAgaWYgQGJyb3dzZXJzdGFydGVkIGFuZCBub3QgQGJyb3dzZXJ0aHJlYWQu # bmlsPyBhbmQgQGJyb3dzZXJ0aHJlYWQuYWxpdmU/CiAgICAgICAgICAgICAg # ICByZXNwLnN0b3AgZG8KICAgICAgICAgICAgICAgICAgcHV0cyAiV2FpdGlu # ZyBmb3IgdGhlIGJyb3dzZXIgdG8gdGVybWluYXRlLi4uIgoKICAgICAgICAg # ICAgICAgICAgQGJyb3dzZXJ0aHJlYWQuam9pbgogICAgICAgICAgICAgICAg # ZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZAogICAgICAg # ICAgZW5kCgogICAgICAgIGVsc2UKCgkJIyBTZXJ2ZSBmaWxlcy4KCiAgICAg # ICAgICBpZiBwYWQgPT0gIi9yd2RfcGl4ZWwuZ2lmIgogICAgICAgICAgICBy # ZXNwWyJDYWNoZS1Db250cm9sIl0JPSAibWF4LWFnZT04NjQwMCIKICAgICAg # ICAgICAgcmVzcFsiQ29udGVudC1UeXBlIl0JPSAiaW1hZ2UvZ2lmIgogICAg # ICAgICAgICByZXNwIDw8ICRyd2RfcGl4ZWwKICAgICAgICAgIGVsc2UKICAg # ICAgICAgICAgaWYgc2Vzc2lvbi5hdXRoZW50aWNhdGVkCiAgICAgICAgICAg # ICAgcHdkCT0gRGlyLnB3ZAogICAgICAgICAgICAgIGZpbGUJPSBGaWxlLmV4 # cGFuZF9wYXRoKHBhZC5nc3ViKC9eXC8qLywgIiIpLCAkcndkX2ZpbGVzKQoK # ICAgICAgICAgICAgICBpZiBub3QgZmlsZS5pbmRleChwd2QpID09IDAKICAg # ICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCT0gInRleHQvaHRt # bCIKICAgICAgICAgICAgICAgIHJlc3AucmVzcG9uc2UJCT0gIkhUVFAvMS4w # IDQwMCBCQUQgUkVRVUVTVCIKICAgICAgICAgICAgICAgIHJlc3AgPDwgIjxo # dG1sPjxib2R5PjxwPjxiPkJhZCBSZXF1ZXN0LjwvYj4gKDx0dD4je3BhZH08 # L3R0Pik8L3A+PC9ib2R5PjwvaHRtbD4iCiAgICAgICAgICAgICAgZWxzaWYg # RmlsZS5maWxlPyhmaWxlKQogICAgICAgICAgICAgICAgcmVzcCA8PCBGaWxl # Lm5ldyhmaWxlLCAicmIiKS5yZWFkCXJlc2N1ZSBuaWwKICAgICAgICAgICAg # ICBlbHNlCiAgICAgICAgICAgICAgICByZXNwWyJDb250ZW50LVR5cGUiXQk9 # ICJ0ZXh0L2h0bWwiCiAgICAgICAgICAgICAgICByZXNwLnJlc3BvbnNlCQk9 # ICJIVFRQLzEuMCA0MDQgTk9UIEZPVU5EIgogICAgICAgICAgICAgICAgcmVz # cCA8PCAiPGh0bWw+PGJvZHk+PHA+PGI+Tm90IGZvdW5kLjwvYj4gKDx0dD4j # e3BhZH08L3R0Pik8L3A+PC9ib2R5PjwvaHRtbD4iCiAgICAgICAgICAgICAg # ZW5kCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXNwWyJDb250 # ZW50LVR5cGUiXQk9ICJ0ZXh0L2h0bWwiCiAgICAgICAgICAgICAgcmVzcC5y # ZXNwb25zZQkJPSAiSFRUUC8xLjAgPz8/IE5PVCBBVVRIT1JJWkVEIgogICAg # ICAgICAgICAgIHJlc3AgPDwgIjxodG1sPjxib2R5PjxwPjxiPk5vdCBBdXRo # b3JpemVkLjwvYj48L3A+PC9ib2R5PjwvaHRtbD4iCiAgICAgICAgICAgIGVu # ZAogICAgICAgICAgZW5kCgogICAgICAgIGVuZAoKICAgICAgZW5kCiAgICBl # bmQKICBlbmQKZW5kCgokcndkX2h0bWxbIkRFRkFVTFQiXQk9ICIKPCEtLSBH # ZW5lcmF0ZWQgYnkgUnVieVdlYkRpYWxvZy4gICAgICAgICAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIEZvciBtb3Jl # IGluZm9ybWF0aW9uLCBwbGVhc2UgY29udGFjdCBFcmlrIFZlZW5zdHJhIDxy # d2RAZXJpa3ZlZW4uZGRzLm5sPi4gLS0+CjxodG1sPgogIDxoZWFkPgogICAg # PHRpdGxlPiVUSVRMRSU8L3RpdGxlPgoKICAgIDxtZXRhIGh0dHAtZXF1aXY9 # J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSVD # SEFSU0VUJSc+CiAgICA8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVN0eWxl # LVR5cGUnIGNvbnRlbnQ9J3RleHQvY3NzJz4KICAgIDxtZXRhIGh0dHAtZXF1 # aXY9J1JlZnJlc2gnIGNvbnRlbnQ9JyVSRUZSRVNIJSwgamF2YXNjcmlwdDpk # b2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPgoKICAgIDxsaW5rIHJlbD0n # c2hvcnRjdXQgaWNvbicgaHJlZj0nJUxPR08lJz4KCiAgICA8c3R5bGUgdHlw # ZT0ndGV4dC9jc3MnPgogICAgPCEtLQoKCWJvZHkgewoJCWJhY2tncm91bmQJ # CTogdXJsKCVXQVRFUk1BUkslKSB3aGl0ZSBjZW50ZXIgY2VudGVyIG5vLXJl # cGVhdCBmaXhlZDsKCX0KCglhIHsKCQl0ZXh0LWRlY29yYXRpb24JCTogbm9u # ZTsKCX0KCglhOmhvdmVyIHsKCQliYWNrZ3JvdW5kCQk6ICNBQUFBQUE7Cgl9 # CgoJdGQucGFuZWwxIHsKCQlib3JkZXItY29sb3IJCTogIzg4ODg4OCAjRUVF # RUVFICNFRUVFRUUgIzg4ODg4ODsKCQlib3JkZXItd2lkdGgJCTogMXB0OwoJ # CWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsKCX0K # Cgl0ZC5wYW5lbDIgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVFICM4ODg4 # ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7CgkJ # Ym9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJfQoK # CXRkLnBhbmVsMWhpZ2ggewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVFICM4 # ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7 # CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJ # fQoKCXRkLnBhbmVsMmhpZ2ggewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVF # ICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAx # cHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgbm9uZSBub25lIG5vbmU7Cgl9 # CgoJdGQucGFuZWwxbG93IHsKCQlib3JkZXItY29sb3IJCTogIzg4ODg4OCAj # RUVFRUVFICNFRUVFRUUgIzg4ODg4ODsKCQlib3JkZXItd2lkdGgJCTogMXB0 # OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsK # CX0KCgl0ZC5wYW5lbDJsb3cgewoJCWJvcmRlci1jb2xvcgkJOiAjODg4ODg4 # ICNFRUVFRUUgI0VFRUVFRSAjODg4ODg4OwoJCWJvcmRlci13aWR0aAkJOiAx # cHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgbm9uZSBub25lIG5vbmU7Cgl9 # CgoJdGQudGFiYmxhZCB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgIzg4 # ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsK # CQlib3JkZXItc3R5bGUJCTogbm9uZSBzb2xpZCBzb2xpZCBzb2xpZDsKCX0K # Cgl0ZC5wYXNzaXZldGFiIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQt # Y29sb3IJOiAjQkJCQkJCOwoJCWJvcmRlci1jb2xvcgkJOiAjREREREREICNE # REREREQgI0VFRUVFRSAjREREREREOwoJCWJvcmRlci13aWR0aAkJOiAxcHQ7 # CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlkOwoJ # fQoKCXRkLmFjdGl2ZXRhYiB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUg # Izg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFw # dDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgbm9uZSBzb2xpZDsK # CX0KCgl0ZC5ub3RhYiB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVFRUUgI0VF # RUVFRSAjRUVFRUVFICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6IDFwdDsK # CQlib3JkZXItc3R5bGUJCTogbm9uZSBub25lIHNvbGlkIG5vbmU7Cgl9Cgog # ICAgLy8tLT4KICAgIDwvc3R5bGU+CgogICAgPHNjcmlwdCB0eXBlPSd0ZXh0 # L2phdmFzY3JpcHQnPgogICAgPCEtLQogICAgICBmdW5jdGlvbiBCb2R5R28o # KSB7CiAgICAgICAgJFJXRF9GT0NVUyQKICAgICAgfQogICAgLy8tLT4KICAg # IDwvc2NyaXB0PgogIDwvaGVhZD4KCiAgPGJvZHkgYmdjb2xvcj0nd2hpdGUn # IG9ubG9hZD0nQm9keUdvKCknIGxpbms9JyMwMDAwMDAnIHZsaW5rPScjMDAw # MDAwJyBhbGluaz0nIzAwMDAwMCc+CiAgICA8Zm9ybSBuYW1lPSdib2R5Zm9y # bScgYWN0aW9uPScvJyBtZXRob2Q9J3Bvc3QnPgogICAgICA8dGFibGUgYWxp # Z249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBh # ZGRpbmc9JzAnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnPgogICAgICAg # IDx0ciBhbGlnbj0nY2VudGVyJyB2YWxpZ249J21pZGRsZSc+CiAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcic+CgogICAgICAgICAgICA8dGFibGUgYWxp # Z249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBh # ZGRpbmc9JzAnPgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAg # ICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAg # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAg # ICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAg # ID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8 # dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdi # bGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAg # ICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8L3Ry # PgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3do # aXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0ciBhbGln # bj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8 # L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2sn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VF # RUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAgPHRy # IGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VF # RUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgoKICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJz4KCiAgICAgICAgICAg # ICAgICAgIDx0YWJsZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxz # cGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCcgJVdJRFRIMSU+CiAgICAgICAg # ICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyM0NDQ0ODgn # PgoKICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdsZWZ0 # JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScxJyBjZWxscGFkZGluZz0nMCc+ # CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXIn # PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSdib3Jk # ZXInPjxpbWcgc3JjPSclTE9HTyUnIHdpZHRoPScxNCcgaGVpZ2h0PScxNCc+ # PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJz48Yj48c21hbGw+PGZvbnQgY29sb3I9JyNGRkZGRkYnPiZuYnNw # OyVUSVRMRSUmbmJzcDs8L2ZvbnQ+PC9zbWFsbD48L2I+PC90ZD4KICAgICAg # ICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAg # ICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxl # IGFsaWduPSdyaWdodCcgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMScgY2Vs # bHBhZGRpbmc9JzAnPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBh # bGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwh # LS0gJUhFTFBCVVRUT04lICAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9j # dW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9oZWxwXCI7 # ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDs/Jm5ic3A7PC9h # Pjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAg # ICA8IS0tICVCQUNLQlVUVE9OUyUgLS0+PHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2NyaXB0 # OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfbWFp # blwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7Jmx0OyZs # dDsmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAg # ICAgICAgICAgICAgIDwhLS0gJUJBQ0tCVVRUT05TJSAtLT48dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9 # J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1 # ZT1cInJ3ZF9iYWNrXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4m # bmJzcDsmbHQ7Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAg # ICAgICAgICAgICAgICAgICAgICA8IS0tICVDTE9TRUJVVFRPTiUgLS0+PHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48 # YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rp # b24udmFsdWU9XCJyd2RfcXVpdFwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1p # dCgpOyc+Jm5ic3A7WCZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAg # ICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAg # ICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgICAgICAgPC90ZD4K # ICAgICAgICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICAgICAg # ICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPSclV0lEVEgyJSc+PC90 # ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICAg # ICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0NDQ0NDQyc+CiAgICAg # ICAgICAgICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0nY2VudGVyJyBib3Jk # ZXI9JzAnIGNlbGxzcGFjaW5nPSczJyBjZWxscGFkZGluZz0nMCc+CiAgICAg # ICAgICAgICAgICAgICAgICAgICAgJUJPRFklCiAgICAgICAgICAgICAgICAg # ICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8aW5w # dXQgbmFtZT0ncndkX2FjdGlvbicgdmFsdWU9JyRSV0RfRklSU1RBQ1RJT04k # JyB0eXBlPSdoaWRkZW4nPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5w # dXQgbmFtZT0ncndkX3Nlc3Npb24nIHZhbHVlPSckUldEX1NFU1NJT04kJyB0 # eXBlPSdoaWRkZW4nPgogICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAg # ICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8L3Rh # YmxlPgoKICAgICAgICAgICAgICAgIDwvdGQ+CgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVF # RUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2sn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0 # ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3do # aXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8 # L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAg # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAg # ICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAg # ICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VF # RUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICA8L3RyPgoKICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAg # ICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # ICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2Js # YWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgICA8dHIg # YWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAg # ICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # ICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWln # aHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdp # ZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAg # IDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9 # J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAg # ICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAg # ICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRo # PScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # ICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVp # Z2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoK # ICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICA8L3RkPgogICAgICAg # IDwvdHI+CiAgICAgIDwvdGFibGU+CiAgICA8L2Zvcm0+CiAgPC9ib2R5Pgo8 # L2h0bWw+CiIKCiRyd2RfaHRtbFsiV0lORE9XU0xPT0tBTElLRSJdCT0gIgo8 # IS0tIEdlbmVyYXRlZCBieSBSdWJ5V2ViRGlhbG9nLiAgICAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+CjwhLS0gRm9y # IG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBjb250YWN0IEVyaWsgVmVlbnN0 # cmEgPHJ3ZEBlcmlrdmVlbi5kZHMubmw+LiAtLT4KPGh0bWw+CiAgPGhlYWQ+ # CiAgICA8dGl0bGU+JVRJVExFJTwvdGl0bGU+CgogICAgPG1ldGEgaHR0cC1l # cXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJz # ZXQ9JUNIQVJTRVQlJz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQt # U3R5bGUtVHlwZScgY29udGVudD0ndGV4dC9jc3MnPgogICAgPG1ldGEgaHR0 # cC1lcXVpdj0nUmVmcmVzaCcgY29udGVudD0nJVJFRlJFU0glLCBqYXZhc2Ny # aXB0OmRvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+CgogICAgPGxpbmsg # cmVsPSdzaG9ydGN1dCBpY29uJyBocmVmPSclTE9HTyUnPgoKICAgIDxzdHls # ZSB0eXBlPSd0ZXh0L2Nzcyc+CiAgICA8IS0tCgoJYm9keSB7CgkJYmFja2dy # b3VuZAkJOiB1cmwoJVdBVEVSTUFSSyUpIHdoaXRlIGNlbnRlciBjZW50ZXIg # bm8tcmVwZWF0IGZpeGVkOwoJfQoKCWEgewoJCXRleHQtZGVjb3JhdGlvbgkJ # OiBub25lOwoJfQoKCWE6aG92ZXIgewoJCWJhY2tncm91bmQJCTogI0FBQUFB # QTsKCX0KCgl0ZC53aW5kb3cgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVF # ICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAz # cHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNvbGlk # OwoJfQoKCXRkLnBhbmVsMSB7CgkJYm9yZGVyLWNvbG9yCQk6ICM4ODg4ODgg # I0VFRUVFRSAjRUVFRUVFICM4ODg4ODg7CgkJYm9yZGVyLXdpZHRoCQk6IDFw # dDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29saWQ7 # Cgl9CgoJdGQucGFuZWwyIHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVFRSAj # ODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTogMXB0 # OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xpZDsK # CX0KCgl0ZC5wYW5lbDFoaWdoIHsKCQlib3JkZXItY29sb3IJCTogI0VFRUVF # RSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJCTog # MXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xp # ZDsKCX0KCgl0ZC5wYW5lbDJoaWdoIHsKCQlib3JkZXItY29sb3IJCTogI0VF # RUVFRSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJ # CTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIG5vbmUgbm9uZSBub25l # OwoJfQoKCXRkLnBhbmVsMWxvdyB7CgkJYm9yZGVyLWNvbG9yCQk6ICM4ODg4 # ODggI0VFRUVFRSAjRUVFRUVFICM4ODg4ODg7CgkJYm9yZGVyLXdpZHRoCQk6 # IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29s # aWQ7Cgl9CgoJdGQucGFuZWwybG93IHsKCQlib3JkZXItY29sb3IJCTogIzg4 # ODg4OCAjRUVFRUVFICNFRUVFRUUgIzg4ODg4ODsKCQlib3JkZXItd2lkdGgJ # CTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIG5vbmUgbm9uZSBub25l # OwoJfQoKCXRkLnRhYmJsYWQgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVF # ICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAx # cHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgc29saWQgc29saWQgc29saWQ7 # Cgl9CgoJdGQucGFzc2l2ZXRhYiB7CiAgICAgICAgICAgICAgICBiYWNrZ3Jv # dW5kLWNvbG9yCTogI0JCQkJCQjsKCQlib3JkZXItY29sb3IJCTogI0RERERE # RCAjREREREREICNFRUVFRUUgI0RERERERDsKCQlib3JkZXItd2lkdGgJCTog # MXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xpZCBzb2xp # ZDsKCX0KCgl0ZC5hY3RpdmV0YWIgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVF # RUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJ # OiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIG5vbmUgc29s # aWQ7Cgl9CgoJdGQubm90YWIgewoJCWJvcmRlci1jb2xvcgkJOiAjRUVFRUVF # ICNFRUVFRUUgI0VFRUVFRSAjRUVFRUVFOwoJCWJvcmRlci13aWR0aAkJOiAx # cHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgbm9uZSBzb2xpZCBub25lOwoJ # fQoKICAgIC8vLS0+CiAgICA8L3N0eWxlPgoKICAgIDxzY3JpcHQgdHlwZT0n # dGV4dC9qYXZhc2NyaXB0Jz4KICAgIDwhLS0KICAgICAgZnVuY3Rpb24gQm9k # eUdvKCkgewogICAgICAgICRSV0RfRk9DVVMkCiAgICAgIH0KICAgIC8vLS0+ # CiAgICA8L3NjcmlwdD4KICA8L2hlYWQ+CgogIDxib2R5IGJnY29sb3I9J3do # aXRlJyBvbmxvYWQ9J0JvZHlHbygpJyBsaW5rPScjMDAwMDAwJyB2bGluaz0n # IzAwMDAwMCcgYWxpbms9JyMwMDAwMDAnPgogICAgPGZvcm0gbmFtZT0nYm9k # eWZvcm0nIGFjdGlvbj0nLycgbWV0aG9kPSdwb3N0Jz4KICAgICAgPHRhYmxl # IGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNl # bGxwYWRkaW5nPScwJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJz4KICAg # ICAgICA8dHIgYWxpZ249J2NlbnRlcicgdmFsaWduPSdtaWRkbGUnPgogICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInPgoKICAgICAgICAgICAgPHRhYmxl # IGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNl # bGxwYWRkaW5nPScwJz4KCiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50 # ZXInPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGNsYXNz # PSd3aW5kb3cnPgoKICAgICAgICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdj # ZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5n # PScwJyAlV0lEVEgxJT4KICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249 # J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nIzQ0NDQ4OCc+CgogICAgICAgICAgICAgICAgICAg # ICAgICA8dGFibGUgYWxpZ249J2xlZnQnIGJvcmRlcj0nMCcgY2VsbHNwYWNp # bmc9JzEnIGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICAgICAgICAg # ICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2JvcmRlcic+PGltZyBzcmM9JyVMT0dPJScg # d2lkdGg9JzE0JyBoZWlnaHQ9JzE0Jz48L3RkPgogICAgICAgICAgICAgICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInPjxiPjxzbWFsbD48Zm9u # dCBjb2xvcj0nI0ZGRkZGRic+Jm5ic3A7JVRJVExFJSZuYnNwOzwvZm9udD48 # L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwv # dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAg # ICAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249J3JpZ2h0JyBib3JkZXI9 # JzAnIGNlbGxzcGFjaW5nPScxJyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAg # ICAgICAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAg # ICAgICAgICAgICAgICAgICAgICAgPCEtLSAlSEVMUEJVVFRPTiUgIC0tPjx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+ # PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0 # aW9uLnZhbHVlPVwicndkX2hlbHBcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJt # aXQoKTsnPiZuYnNwOz8mbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAg # ICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gJUJBQ0tCVVRUT05TJSAt # LT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNt # YWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndk # X2FjdGlvbi52YWx1ZT1cInJ3ZF9tYWluXCI7ZG9jdW1lbnQuYm9keWZvcm0u # c3VibWl0KCk7Jz4mbmJzcDsmbHQ7Jmx0OyZuYnNwOzwvYT48L3NtYWxsPjwv # Yj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAlQkFD # S0JVVFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVF # RUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5i # b2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX2JhY2tcIjtkb2N1bWVu # dC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOyZsdDsmbmJzcDs8L2E+PC9z # bWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwh # LS0gJUNMT1NFQlVUVE9OJSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xv # cj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9j # dW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9xdWl0XCI7 # ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDtYJm5ic3A7PC9h # Pjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAg # PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAg # ICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwv # dHI+CgogICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4K # ICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JyVXSURUSDIlJz48L3RkPgogICAgICAgICAgICAgICAgICAg # IDwvdHI+CgogICAgICAgICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVy # Jz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBi # Z2NvbG9yPScjQ0NDQ0NDJz4KICAgICAgICAgICAgICAgICAgICAgICAgPHRh # YmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzMn # IGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAl # Qk9EWSUKICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAg # ICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdyd2RfYWN0aW9uJyB2 # YWx1ZT0nJFJXRF9GSVJTVEFDVElPTiQnIHR5cGU9J2hpZGRlbic+CiAgICAg # ICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdyd2Rfc2Vzc2lvbicg # dmFsdWU9JyRSV0RfU0VTU0lPTiQnIHR5cGU9J2hpZGRlbic+CiAgICAgICAg # ICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+ # CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAg # PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAgICAgPC90YWJs # ZT4KCiAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+CiAgICAgIDwvdGFi # bGU+CiAgICA8L2Zvcm0+CiAgPC9ib2R5Pgo8L2h0bWw+CiIKCiRyd2RfaHRt # bFsiUERBIl0JPSAiCjwhLS0gR2VuZXJhdGVkIGJ5IFJ1YnlXZWJEaWFsb2cu # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg # ICAtLT4KPCEtLSBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnRh # Y3QgRXJpayBWZWVuc3RyYSA8cndkQGVyaWt2ZWVuLmRkcy5ubD4uIC0tPgo8 # aHRtbD4KICA8aGVhZD4KICAgIDx0aXRsZT4lVElUTEUlPC90aXRsZT4KCiAg # ICA8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3Rl # eHQvaHRtbDsgY2hhcnNldD0lQ0hBUlNFVCUnPgogICAgPG1ldGEgaHR0cC1l # cXVpdj0nUmVmcmVzaCcgY29udGVudD0nJVJFRlJFU0glLCBqYXZhc2NyaXB0 # OmRvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+CgogICAgPGxpbmsgcmVs # PSdzaG9ydGN1dCBpY29uJyBocmVmPSclTE9HTyUnPgoKICAgIDxzY3JpcHQg # dHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KICAgIDwhLS0KICAgICAgZnVuY3Rp # b24gQm9keUdvKCkgewogICAgICAgICRSV0RfRk9DVVMkCiAgICAgIH0KICAg # IC8vLS0+CiAgICA8L3NjcmlwdD4KICA8L2hlYWQ+CgogIDxib2R5IGJnY29s # b3I9J3doaXRlJyBvbmxvYWQ9J0JvZHlHbygpJyBsaW5rPScjMDAwMDAwJyB2 # bGluaz0nIzAwMDAwMCcgYWxpbms9JyMwMDAwMDAnPgogICAgPGZvcm0gbmFt # ZT0nYm9keWZvcm0nIGFjdGlvbj0nLycgbWV0aG9kPSdwb3N0Jz4KICAgICAg # PHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9 # JzAnIGNlbGxwYWRkaW5nPScwJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAl # Jz4KCiAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyM0NDQ0ODgnPgoKICAgICAgICAg # ICAgPHRhYmxlIGFsaWduPSdsZWZ0JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5n # PScxJyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgPHRyIGFsaWdu # PSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdib3JkZXIn # PjxpbWcgc3JjPSclTE9HTyUnIHdpZHRoPScxNCcgaGVpZ2h0PScxNCc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJz48Yj48c21h # bGw+PGZvbnQgY29sb3I9JyNGRkZGRkYnPiZuYnNwOyVUSVRMRSUmbmJzcDs8 # L2ZvbnQ+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgog # ICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgPHRhYmxlIGFsaWdu # PSdyaWdodCcgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMScgY2VsbHBhZGRp # bmc9JzAnPgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAg # ICAgICAgICAgICAgIDwhLS0gJUhFTFBCVVRUT04lICAtLT48dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9 # J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1 # ZT1cInJ3ZF9oZWxwXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4m # bmJzcDs/Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8IS0tICVCQUNLQlVUVE9OUyUgLS0+PHRkIGFsaWduPSdjZW50ZXIn # IGJnY29sb3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2Ny # aXB0OmRvY3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2Rf # bWFpblwiO2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7Jmx0 # OyZsdDsmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAg # ICAgIDwhLS0gJUJBQ0tCVVRUT05TJSAtLT48dGQgYWxpZ249J2NlbnRlcicg # Ymdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFzY3Jp # cHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9i # YWNrXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDsmbHQ7 # Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # IS0tICVDTE9TRUJVVFRPTiUgLS0+PHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2NyaXB0OmRv # Y3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfcXVpdFwi # O2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7WCZuYnNwOzwv # YT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAg # ICAgICAgIDwvdGFibGU+CgogICAgICAgICAgPC90ZD4KICAgICAgICA8L3Ry # PgoKICAgICAgICA8IS0tCiAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgog # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNGRkZGRkYn # PiZuYnNwOzwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgICAtLT4KCiAgICAg # ICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9JyNGRkZGRkYnPgoKICAgICAgICAgICAgICA8dGFi # bGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcg # Y2VsbHBhZGRpbmc9JzAnPgogICAgICAgICAgICAgICAgJUJPRFklCiAgICAg # ICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgPGlucHV0IG5hbWU9 # J3J3ZF9hY3Rpb24nIHZhbHVlPSckUldEX0ZJUlNUQUNUSU9OJCcgdHlwZT0n # aGlkZGVuJz4KICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0ncndkX3Nlc3Np # b24nIHZhbHVlPSckUldEX1NFU1NJT04kJyB0eXBlPSdoaWRkZW4nPgogICAg # ICAgICAgPC90ZD4KICAgICAgICA8L3RyPgoKICAgICAgPC90YWJsZT4KICAg # IDwvZm9ybT4KICA8L2JvZHk+CjwvaHRtbD4KIgoKJHJ3ZF9waXhlbAk9ICIK # UjBsR09EbGhBUUFCQU1JQUFBQUFBUC8vLys3dTdrUkVpUC8vLy8vLy8vLy8v # Ly8vL3lINUJBRUtBQU1BCkxBQUFBQUFCQUFFQUFBTUNPQWtBT3c9PQoiLnVu # cGFjaygibSIpLnNoaWZ0CgokcndkX2xvZ28JPSAiClIwbEdPRGxoRUFBUUFN # SUFBQUFBQVAvLy8rN3U3a1JFaVAvLy8vLy8vLy8vLy8vLy95SDVCQUVLQUFR # QQpMQUFBQUFBUUFCQUFBQU5DU0VyUS9rMjFRS3VscklyTnU4aGV1QUdVY0ow # QnVRVkQ2NzZEYXNLMHpOS3YKamVmQitvbzZsNkF4QkF4N00ySFJlUFFwaDV4 # Z2EwUnNKcWZFTFBJMkRTVUFBRHM9CiIudW5wYWNrKCJtIikuc2hpZnQKCgok # cndkX2h0bWxfMSwgJHJ3ZF9odG1sXzIJCT0gJHJ3ZF9odG1sW0VOVlsiUldE # VEhFTUUiXV0uc3BsaXQoL15ccyolQk9EWSVccypcciokLykKJHJ3ZF9odG1s # X1BEQV8xLCAkcndkX2h0bWxfUERBXzIJPSAkcndkX2h0bWxbIlBEQSJdLnNw # bGl0KC9eXHMqJUJPRFklXHMqXHIqJC8pCgojZW5kCiMKI2NsYXNzIFJXRGlh # bG9nIDwgUldEOjpSV0RpYWxvZwojZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4x # MTkwMC50YXIvZXYveG1sLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAx # NzUwADAwMDE3NTAAMDAwMDAwMDUzMTUAMTAyNTAzMjA2MTUAMDE3NzY1ACAw # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAA # MDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVp # cmUgImV2L3NnbWwiCgpjbGFzcyBTR01MT2JqZWN0CiAgZGVmIHRvX3goY2xv # c2V0YWdzPXRydWUpCiAgICByZXMJPSAiIgoKICAgIHBhcnNldHJlZSgicHJl # Y2hpbGRyZW5fdG9feCIsICJwb3N0Y2hpbGRyZW5fdG9feCIsIHJlcywgY2xv # c2V0YWdzKQoKICAgIHJlcwogIGVuZAplbmQKCmNsYXNzIFRleHQgPCBTR01M # T2JqZWN0CiAgZGVmIHByZWNoaWxkcmVuX3RvX3gocmVzLCBjbG9zZXRhZ3Mp # CiAgICByZXMgPDwgQHRleHQuc3RyaXAJdW5sZXNzIEB0ZXh0LnN0cmlwLmVt # cHR5PwogIGVuZAplbmQKCmNsYXNzIENvbW1lbnQgPCBTR01MT2JqZWN0CiAg # ZGVmIHByZWNoaWxkcmVuX3RvX3gocmVzLCBjbG9zZXRhZ3MpCiAgICByZXMg # PDwgIlxuIglpZiBub3QgcHJldmlvdXMoW10sIFtUZXh0XSkua2luZF9vZj8o # Q29tbWVudCkKICAgIGxpbmVzCT0gQHRleHQuZ3N1YigvKDwhLS18LS0+KS8s # ICIiKS5sZi5zcGxpdCgvXG4vKQogICAgaWYgbGluZXMubGVuZ3RoID09IDEK # ICAgICAgcmVzIDw8ICIgICIqKEBsZXZlbC0xKSArICI8IS0tICIgKyBsaW5l # c1swXS5zdHJpcCArICIgLS0+IiArICJcbiIKICAgIGVsc2UKICAgICAgcmVz # IDw8ICIgICIqKEBsZXZlbC0xKSArICI8IS0tIiArICJcbiIKICAgICAgcmVz # IDw8IGxpbmVzLmNvbGxlY3R7fHN8ICIgICIqKEBsZXZlbC0xKSArIHMuc3Ry # aXB9LmRlbGV0ZV9pZnt8c3wgcy5jb21wcmVzcy5lbXB0eT99LmpvaW4oIlxu # IikKICAgICAgcmVzIDw8ICJcbiIKICAgICAgcmVzIDw8ICIgICIqKEBsZXZl # bC0xKSArICItLT4iICsgIlxuIgogICAgICByZXMgPDwgIlxuIgogICAgZW5k # CiAgZW5kCmVuZAoKY2xhc3MgU3BlY2lhbCA8IFNHTUxPYmplY3QKICBkZWYg # cHJlY2hpbGRyZW5fdG9feChyZXMsIGNsb3NldGFncykKICAgIHJlcyA8PCAi # ICAiKihAbGV2ZWwtMSkgKyBAdGV4dC5jb21wcmVzcyArICJcbiIKICBlbmQK # ZW5kCgpjbGFzcyBJbnN0cnVjdGlvbiA8IFNHTUxPYmplY3QKICBkZWYgcHJl # Y2hpbGRyZW5fdG9feChyZXMsIGNsb3NldGFncykKICAgIHJlcyA8PCAiICAi # KihAbGV2ZWwtMSkgKyBAdGV4dC5jb21wcmVzcyArICJcbiIKICBlbmQKZW5k # CgpjbGFzcyBPcGVuVGFnIDwgVGFnCiAgZGVmIHByZWNoaWxkcmVuX3RvX3go # cmVzLCBjbG9zZXRhZ3MpCiAgICBhCT0gW0BzdWJ0eXBlXQoKICAgIGFyZ3MJ # PSBAYXJncy5kdXAKICAgIGFyZ3MuZGVsZXRlKCJpZCIpCiAgICBhcmdzLmRl # bGV0ZSgibmFtZSIpCiAgICBhcmdzCT0gYXJncy5zb3J0CiAgICBhcmdzLnVu # c2hpZnQoWyJpZCIsIEBhcmdzWyJpZCJdXSkJCWlmIEBhcmdzLmluY2x1ZGU/ # KCJpZCIpCiAgICBhcmdzLnVuc2hpZnQoWyJuYW1lIiwgQGFyZ3NbIm5hbWUi # XV0pCWlmIEBhcmdzLmluY2x1ZGU/KCJuYW1lIikKCiAgICBhcmdzLmVhY2gg # ZG8gfGssIHZ8CiAgICAgIGlmIG5vdCB2LmluY2x1ZGU/KCInIikKICAgICAg # ICBhIDw8ICIje2t9PScje3Z9JyIKICAgICAgZWxzZQogICAgICAgIGlmIG5v # dCB2LmluY2x1ZGU/KCciJykKICAgICAgICAgIGEgPDwgIiN7a309XCIje3Z9 # XCIiCiAgICAgICAgZWxzZQogICAgICAgICAgYSA8PCAiI3trfT0nI3t2Lmdz # dWIoL1wnLywgJyInKX0nIgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVu # ZAoKICAgIGlmIEBjaGlsZHJlbi5sZW5ndGggPT0gMCBvciAoQGNoaWxkcmVu # Lmxlbmd0aCA9PSAxIGFuZCBAY2hpbGRyZW5bMF0ua2luZF9vZj8oVGV4dCkg # YW5kIEBjaGlsZHJlblswXS50ZXh0LmNvbXByZXNzLmVtcHR5PykKICAgICAg # cmVzIDw8ICIgICIqKEBsZXZlbC0xKSArICI8I3thLmpvaW4oIiAiKX0vPiIg # KyAiXG4iCiAgICBlbHNlCiAgICAgIGlmIEBjaGlsZHJlbi5sZW5ndGggPT0g # MSBhbmQgQGNoaWxkcmVuWzBdLmtpbmRfb2Y/KFRleHQpIGFuZCBAY2hpbGRy # ZW5bMF0udGV4dC5sZi5zcGxpdCgvXG4vKS5sZW5ndGggPT0gMQogICAgICAg # IHJlcyA8PCAiICAiKihAbGV2ZWwtMSkgKyAiPCN7YS5qb2luKCIgIil9PiIK # ICAgICAgZWxzZQogICAgICAgIHJlcyA8PCAiICAiKihAbGV2ZWwtMSkgKyAi # PCN7YS5qb2luKCIgIil9PiIgKyAiXG4iCiAgICAgIGVuZAogICAgZW5kCiAg # ZW5kCgogIGRlZiBwb3N0Y2hpbGRyZW5fdG9feChyZXMsIGNsb3NldGFncykK # ICAgIGlmIGNsb3NldGFncwogICAgICB1bmxlc3MgQGNoaWxkcmVuLmxlbmd0 # aCA9PSAwIG9yIChAY2hpbGRyZW4ubGVuZ3RoID09IDEgYW5kIEBjaGlsZHJl # blswXS5raW5kX29mPyhUZXh0KSBhbmQgQGNoaWxkcmVuWzBdLnRleHQuY29t # cHJlc3MuZW1wdHk/KQogICAgICAgIHJlcyA8PCAiXG4iCQlpZiBAY2hpbGRy # ZW4ubGVuZ3RoID09IDEgYW5kIEBjaGlsZHJlblswXS5raW5kX29mPyhUZXh0 # KSBhbmQgQGNoaWxkcmVuWzBdLnRleHQubGYuc3BsaXQoL1xuLykubGVuZ3Ro # ID4gMQogICAgICAgIHJlcyA8PCAiICAiKihAbGV2ZWwtMSkJdW5sZXNzIEBj # aGlsZHJlbi5sZW5ndGggPT0gMSBhbmQgQGNoaWxkcmVuWzBdLmtpbmRfb2Y/ # KFRleHQpIGFuZCBAY2hpbGRyZW5bMF0udGV4dC5sZi5zcGxpdCgvXG4vKS5s # ZW5ndGggPT0gMQogICAgICAgIHJlcyA8PCAiPC8je0BzdWJ0eXBlfT4iCiAg # ICAgICAgcmVzIDw8ICJcbiIKICAgICAgZW5kCiAgICBlbmQKICBlbmQKZW5k # CgpjbGFzcyBYTUwgPCBTR01MCiAgZGVmIHRvX3goY2xvc2V0YWdzPXRydWUp # CiAgICByZXMJPSAiIgoKICAgIHBhcnNldHJlZSgicHJlY2hpbGRyZW5fdG9f # eCIsICJwb3N0Y2hpbGRyZW5fdG9feCIsIHJlcywgY2xvc2V0YWdzKQoKICAg # IHJlcwogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5mLjExOTAwLnRhci9ldi9zZ21s # LnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAw # MDAxMDEyNQAxMDI1MDMyMDYxNQAwMjAxMjIAIDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIg # IABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiZXYvdHJlZSIKCmNs # YXNzIFNHTUxPYmplY3QgPCBUcmVlT2JqZWN0CiAgZGVmIHRvX3MKICAgIHJl # cwk9ICIiCgogICAgcGFyc2V0cmVlKCJwcmVjaGlsZHJlbl90b19zIiwgInBv # c3RjaGlsZHJlbl90b19zIiwgcmVzKQoKICAgIHJlcwogIGVuZAoKICBkZWYg # dG9faAogICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNoaWxkcmVu # X3RvX3NnbWwiLCAicG9zdGNoaWxkcmVuX3RvX3NnbWwiLCByZXMpCgogICAg # cmVzCiAgZW5kCmVuZAoKY2xhc3MgVGV4dCA8IFNHTUxPYmplY3QKICBkZWYg # aW5pdGlhbGl6ZSh0ZXh0KQogICAgc3VwZXIoKQogICAgQHRleHQgPSB0ZXh0 # CiAgZW5kCgogIGRlZiBwcmVjaGlsZHJlbl90b19zKHJlcykKICAgICNyZXMg # PDwgIiN7Q0dJLnVuZXNjYXBlSFRNTChAdGV4dCl9ICIKICAgIHJlcyA8PCBA # dGV4dAogIGVuZAoKICBkZWYgcHJlY2hpbGRyZW5fdG9fc2dtbChyZXMpCiAg # ICAjcmVzIDw8ICIje0NHSS51bmVzY2FwZUhUTUwoQHRleHQpfSIKICAgIHJl # cyA8PCBAdGV4dAogIGVuZAplbmQKCmNsYXNzIENvbW1lbnQgPCBTR01MT2Jq # ZWN0CiAgZGVmIGluaXRpYWxpemUodGV4dCkKICAgIHN1cGVyKCkKICAgIEB0 # ZXh0ID0gdGV4dAogIGVuZAoKICBkZWYgcHJlY2hpbGRyZW5fdG9fc2dtbChy # ZXMpCiAgICByZXMgPDwgIiN7QHRleHR9IgogIGVuZAplbmQKCmNsYXNzIFNw # ZWNpYWwgPCBTR01MT2JqZWN0CiAgZGVmIGluaXRpYWxpemUodGV4dCkKICAg # IHN1cGVyKCkKICAgIEB0ZXh0ID0gdGV4dAogIGVuZAoKICBkZWYgcHJlY2hp # bGRyZW5fdG9fc2dtbChyZXMpCiAgICByZXMgPDwgIiN7QHRleHR9IgogIGVu # ZAplbmQKCmNsYXNzIEluc3RydWN0aW9uIDwgU0dNTE9iamVjdAogIGRlZiBp # bml0aWFsaXplKHRleHQpCiAgICBzdXBlcigpCiAgICBAdGV4dCA9IHRleHQK # ICBlbmQKCiAgZGVmIHByZWNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAgcmVz # IDw8ICIje0B0ZXh0fSIKICBlbmQKZW5kCgpjbGFzcyBUYWcgPCBTR01MT2Jq # ZWN0CiAgYXR0cl9yZWFkZXIgOmFyZ3MKICBhdHRyX3dyaXRlciA6YXJncwoK # ICBkZWYgaW5pdGlhbGl6ZShzdWJ0eXBlLCBhcmdzPXt9KQogICAgc3VwZXIo # c3VidHlwZSkKICAgIEBhcmdzID0gYXJncwogICAgQHRleHQgPSAiIgogIGVu # ZAplbmQKCmNsYXNzIE9wZW5UYWcgPCBUYWcKICBkZWYgaW5pdGlhbGl6ZSgq # YXJncykKICAgIHN1cGVyCiAgICBAdXBvcmRvd24gPSBEb3duCiAgZW5kCgog # IGRlZiBwcmVjaGlsZHJlbl90b19zZ21sKHJlcykKICAgIGEJPSBbQHN1YnR5 # cGVdCgogICAgQGFyZ3Muc29ydC5lYWNoIGRvIHxrLCB2fAogICAgICBpZiBu # b3Qgdi5pbmNsdWRlPygiJyIpCiAgICAgICAgYSA8PCAiI3trfT0nI3t2fSci # CiAgICAgIGVsc2UKICAgICAgICBpZiBub3Qgdi5pbmNsdWRlPygnIicpCiAg # ICAgICAgICBhIDw8ICIje2t9PVwiI3t2fVwiIgogICAgICAgIGVsc2UKICAg # ICAgICAgIGEgPDwgIiN7a309JyN7di5nc3ViKC9cJy8sICciJyl9JyIKICAg # ICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMgPDwgIjwje2Eu # am9pbigiICIpfT4iICsgQHRleHQKICBlbmQKCiAgZGVmIHBvc3RjaGlsZHJl # bl90b19zZ21sKHJlcykKICAgIHJlcyA8PCAiPC8je0BzdWJ0eXBlfT4iCWlm # IEBjbG9zZWQKICBlbmQKZW5kCgpjbGFzcyBDbG9zZVRhZyA8IFRhZwogIGRl # ZiBpbml0aWFsaXplKCphcmdzKQogICAgc3VwZXIKICAgIEB1cG9yZG93biA9 # IER1bW15CiAgZW5kCmVuZAoKY2xhc3MgU0dNTCA8IFRyZWUKICBkZWYgaW5p # dGlhbGl6ZSgqYXJncykKICAgIEB0YWdjYWNoZQk9IHt9CgogICAgc3VwZXIK # ICBlbmQKCiAgZGVmIGJ1aWxkb2JqZWN0cyhzdHJpbmcpCiAgICBAb2JqZWN0 # cyA9IFtdCgogICAgdmVyd2VyazMJPQogICAgbGFtYmRhIGRvIHxzdHJpbmd8 # CiAgICAgIGEJPSBbXQogIAogICAgICBzdHJpbmdbMS4uLTJdLnNwbGl0Ymxv # Y2tzKFsiJyIsICInIl0sIFsnIicsICciJ10pLmNvbGxlY3QgZG8gfHR5cGUs # IHN8CiAgICAgICAgY2FzZSB0eXBlCiAgICAgICAgd2hlbiAwCiAgICAgICAg # ICBpZiBzZWxmLmNsYXNzLnRvX3MgPT0gIkhUTUwiCiAgICAgICAgICAgIHMu # c3BsaXR3b3Jkcy5lYWNoIGRvIHx3fAogICAgICAgICAgICAgIGQJPSB3LnNw # bGl0KCI9IiwgMikKICAKICAgICAgICAgICAgICBpZiBkLmxlbmd0aCA9PSAx # CiAgICAgICAgICAgICAgICBhIDw8IGRbMF0KICAgICAgICAgICAgICBlbHNl # CiAgICAgICAgICAgICAgICBhIDw8IGRbMF0JaWYgbm90IGRbMF0ubmlsPyBh # bmQgbm90IGRbMF0uZW1wdHk/CiAgICAgICAgICAgICAgICBhIDw8ICI9Igog # ICAgICAgICAgICAgICAgYSA8PCBkWzFdCWlmIG5vdCBkWzFdLm5pbD8gYW5k # IG5vdCBkWzFdLmVtcHR5PwogICAgICAgICAgICAgIGVuZAogICAgICAgICAg # ICBlbmQKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgYS5jb25jYXQgcy5z # cGxpdHdvcmRzKFsiLyIsICI9Il0pCiAgICAgICAgICBlbmQKICAgICAgICB3 # aGVuIDEsIDIJdGhlbiBhIDw8IHMKICAgICAgICBlbmQKICAgICAgZW5kCiAg # CiAgICAgIG9wZW4JPSBmYWxzZQogICAgICBjbG9zZQk9IGZhbHNlCiAgCiAg # ICAgIGEgPSBhWzBdLnNwbGl0d29yZHMoIi8iKSArIGFbMS4uLTFdCiAgCiAg # ICAgIGlmIGFbMF0gPT0gIi8iCiAgICAgICAgY2xvc2UJPSB0cnVlCiAgICAg # ICAgYS5zaGlmdAogICAgICBlbHNlCiAgICAgICAgb3Blbgk9IHRydWUKICAg # ICAgZW5kCiAgCiAgICAgIGlmIGFbLTFdID09ICIvIgogICAgICAgIGNsb3Nl # CT0gdHJ1ZQogICAgICAgIGEucG9wCiAgICAgIGVuZAogIAogICAgICB0YWcJ # PSBhLnNoaWZ0LmRvd25jYXNlCiAgICAgIGFyZ3MJPSB7fQogIAogICAgICB3 # aGlsZSBub3QgYS5sZW5ndGguemVybz8KICAgICAgICBpZiBhLmxlbmd0aCA+ # PSAzIGFuZCBhWzFdID09ICI9IgogICAgICAgICAga2V5CT0gYS5zaGlmdC5k # b3duY2FzZQogICAgICAgICAgZHVtbXkJPSBhLnNoaWZ0CiAgICAgICAgICB2 # YWx1ZQk9IGEuc2hpZnQubm9xdW90ZXMKICAgICAgICAgIGFyZ3Nba2V5XQk9 # IHZhbHVlCiAgICAgICAgZWxzZQogICAgICAgICAga2V5CT0gYS5zaGlmdC5k # b3duY2FzZQogICAgICAgICAgYXJnc1trZXldCT0gIiIKICAgICAgICBlbmQK # ICAgICAgZW5kCiAgCiAgICAgIFt0YWcsIGFyZ3MsIG9wZW4sIGNsb3NlXQog # ICAgZW5kCgogICAgdmVyd2VyazIJPQogICAgbGFtYmRhIGRvIHxzdHJpbmd8 # CiAgICAgIGlmIEB0YWdjYWNoZS5pbmNsdWRlPyBzdHJpbmcKICAgICAgICBy # ZXMJPSBAdGFnY2FjaGVbc3RyaW5nXQogICAgICBlbHNlCiAgICAgICAgcmVz # CT0gdmVyd2VyazMuY2FsbChzdHJpbmcpCgogICAgICAgIEB0YWdjYWNoZVtz # dHJpbmddID0gcmVzCiAgICAgIGVuZAoKICAgICAgcmVzCiAgICBlbmQKCiAg # ICB2ZXJ3ZXJrMSA9CiAgICBsYW1iZGEgZG8gfHN0cmluZ3wKICAgICAgdGFn # LCBhcmdzLCBvcGVuLCBjbG9zZQk9IHZlcndlcmsyLmNhbGwoc3RyaW5nKQoK # ICAgICAgQG9iamVjdHMgPDwgT3BlblRhZy5uZXcodGFnLmR1cCwgYXJncy5k # dXApCWlmIG9wZW4KICAgICAgQG9iamVjdHMgPDwgQ2xvc2VUYWcubmV3KHRh # Zy5kdXAsIGFyZ3MuZHVwKQlpZiBjbG9zZQogICAgZW5kCgogICAgc3RyaW5n # LnNwbGl0YmxvY2tzKFsiPCEtLSIsICItLT4iXSwgWyI8ISIsICI+Il0sIFsi # PD8iLCAiPz4iXSwgWyI8IiwgIj4iXSkuZWFjaCBkbyB8dHlwZSwgc3wKICAg # ICAgY2FzZSB0eXBlCiAgICAgIHdoZW4gMAkJdGhlbiBAb2JqZWN0cyA8PCBU # ZXh0Lm5ldyhzKQogICAgICB3aGVuIDEJCXRoZW4gQG9iamVjdHMgPDwgQ29t # bWVudC5uZXcocykKICAgICAgd2hlbiAyCQl0aGVuIEBvYmplY3RzIDw8IFNw # ZWNpYWwubmV3KHMpCiAgICAgIHdoZW4gMwkJdGhlbiBAb2JqZWN0cyA8PCBJ # bnN0cnVjdGlvbi5uZXcocykKICAgICAgd2hlbiA0CQl0aGVuIHZlcndlcmsx # LmNhbGwocykKICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIHRvX3MK # ICAgIHJlcwk9ICIiCgogICAgcGFyc2V0cmVlKCJwcmVjaGlsZHJlbl90b19z # IiwgInBvc3RjaGlsZHJlbl90b19zIiwgcmVzKQoKICAgIHJlcwogIGVuZAoK # ICBkZWYgdG9faAogICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNo # aWxkcmVuX3RvX3NnbWwiLCAicG9zdGNoaWxkcmVuX3RvX3NnbWwiLCByZXMp # CgogICAgcmVzCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1w # LmVhcjJydWJ5c2NyaXB0LmYuMTE5MDAudGFyL2V2L3RyZWUucmIAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDE3MTYzADEw # MjUwMzIwNjE1ADAyMDEzMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAByZXF1aXJlICJldi9ydWJ5IgpyZXF1aXJlICJldi9u # ZXQiCnJlcXVpcmUgIm1kNSIKcmVxdWlyZSAidGhyZWFkIgoKU2FtZQk9IDAK # RG93bgk9IDEKVXAJPSAyCkR1bW15CT0gMwoKbW9kdWxlIFRleHRBcnJheQog # IGRlZiB0ZXh0YXJyYXkKICAgIEBjaGlsZHJlbi5jb2xsZWN0IGRvIHxvYmp8 # CiAgICAgIFtvYmoudGV4dF0gPDwgb2JqLnRleHRhcnJheQogICAgZW5kLmZs # YXR0ZW4uY29tcGFjdAogIGVuZAplbmQKCgptb2R1bGUgUGFyc2VUcmVlCiAg # ZGVmIHBhcnNldHJlZShwcmVtZXRob2Q9InByZWNoaWxkcmVuIiwgcG9zdG1l # dGhvZD0icG9zdGNoaWxkcmVuIiwgKmFyZ3MpCiAgICBpZiBAdmlzaWJsZQog # ICAgICBtZXRob2QocHJlbWV0aG9kKS5jYWxsKCphcmdzKQlpZiByZXNwb25k # X3RvPyhwcmVtZXRob2QpCgogICAgICBAY2hpbGRyZW4uZWFjaCBkbyB8b2Jq # fAogICAgICAgIG9iai5wYXJzZXRyZWUocHJlbWV0aG9kLCBwb3N0bWV0aG9k # LCAqYXJncykKICAgICAgZW5kCgogICAgICBtZXRob2QocG9zdG1ldGhvZCku # Y2FsbCgqYXJncykJaWYgcmVzcG9uZF90bz8ocG9zdG1ldGhvZCkKICAgIGVu # ZAogIGVuZAoKICAjZGVmIHBhcnNldHJlZShwcmVtZXRob2Q9InByZWNoaWxk # cmVuIiwgcG9zdG1ldGhvZD0icG9zdGNoaWxkcmVuIiwgKmFyZ3MpCiAgIyAg # c3RhY2sJPSBbc2VsZl0KICAjICBkb25lCT0gW10KICAjCiAgIyAgd2hpbGUg # bm90IHN0YWNrLmVtcHR5PwogICMgICAgb2JqCT0gc3RhY2sucG9wCiAgIwog # ICMgICAgaWYgbm90IGRvbmUuaW5jbHVkZT8ob2JqKQogICMgICAgICBvYmou # bWV0aG9kKHByZW1ldGhvZCkuY2FsbCgqYXJncykJaWYgb2JqLnJlc3BvbmRf # dG8/KHByZW1ldGhvZCkKICAjCiAgIyAgICAgIHN0YWNrLnB1c2gob2JqKQog # ICMgICAgICBkb25lLnB1c2gob2JqKQogICMKICAjICAgICAgc3RhY2suY29u # Y2F0IG9iai5jaGlsZHJlbi5yZXZlcnNlCiAgIyAgICAgICNvYmouY2hpbGRy # ZW4ucmV2ZXJzZS5lYWNoIGRvIHxjb2JqfAogICMgICAgICAgICNzdGFjay5w # dXNoKGNvYmopCiAgIyAgICAgICNlbmQKICAjICAgIGVsc2UKICAjICAgICAg # b2JqLm1ldGhvZChwb3N0bWV0aG9kKS5jYWxsKCphcmdzKQlpZiBvYmoucmVz # cG9uZF90bz8ocG9zdG1ldGhvZCkKICAjICAgIGVuZAogICMgIGVuZAogICNl # bmQKZW5kCgpjbGFzcyBUcmVlT2JqZWN0CiAgYXR0cl9yZWFkZXIgOnN1YnR5 # cGUKICBhdHRyX3dyaXRlciA6c3VidHlwZQogIGF0dHJfcmVhZGVyIDp1cG9y # ZG93bgogIGF0dHJfd3JpdGVyIDp1cG9yZG93bgogIGF0dHJfcmVhZGVyIDps # ZXZlbAogIGF0dHJfd3JpdGVyIDpsZXZlbAogIGF0dHJfcmVhZGVyIDpwYXJl # bnQKICBhdHRyX3dyaXRlciA6cGFyZW50CiAgYXR0cl9yZWFkZXIgOmNoaWxk # cmVuCiAgYXR0cl93cml0ZXIgOmNoaWxkcmVuCiAgYXR0cl9yZWFkZXIgOmNs # b3NlZAogIGF0dHJfd3JpdGVyIDpjbG9zZWQKICBhdHRyX3JlYWRlciA6dGV4 # dAogIGF0dHJfd3JpdGVyIDp0ZXh0CiAgYXR0cl9yZWFkZXIgOnZpc2libGUK # ICBhdHRyX3dyaXRlciA6dmlzaWJsZQoKICBpbmNsdWRlIFRleHRBcnJheQog # IGluY2x1ZGUgUGFyc2VUcmVlCgogIGRlZiBpbml0aWFsaXplKHN1YnR5cGU9 # bmlsKQogICAgQHN1YnR5cGUJPSBzdWJ0eXBlCiAgICBAdXBvcmRvd24JPSBT # YW1lCiAgICBAbGV2ZWwJPSBuaWwKICAgIEBwYXJlbnQJPSBuaWwKICAgIEBj # aGlsZHJlbgk9IFtdCiAgICBAY2xvc2VkCT0gbmlsCiAgICBAdmlzaWJsZQk9 # IHRydWUKICBlbmQKCiAgZGVmIGluc3BlY3QKICAgIHBhcmVudCwgY2hpbGRy # ZW4JPSBAcGFyZW50LCBAY2hpbGRyZW4KCiAgICBAcGFyZW50LCBAY2hpbGRy # ZW4JPSBwYXJlbnQub2JqZWN0X2lkLCBjaGlsZHJlbi5jb2xsZWN0e3xvYmp8 # IG9iai5vYmplY3RfaWR9CgogICAgcmVzID0gIiAgIiAqIChsZXZlbC0xKSAr # ICIje3NlbGYuY2xhc3N9KCN7QHN1YnR5cGV9KSAje3N1cGVyfSIKCiAgICBA # cGFyZW50LCBAY2hpbGRyZW4JPSBwYXJlbnQsIGNoaWxkcmVuCgogICAgcmVz # CiAgZW5kCgogIGRlZiBwcmV2aW91cyhrbGFzcz1bXSwgc2tpcD1bXSkKICAg # IGtsYXNzCT0gW2tsYXNzXS5mbGF0dGVuCiAgICBza2lwCT0gW3NraXBdLmZs # YXR0ZW4KCiAgICBwbwk9IEBwYXJlbnQKICAgIHJldHVybiBuaWwJaWYgcG8u # bmlsPwoKICAgIGNoCT0gcG8uY2hpbGRyZW4KICAgIHJldHVybiBuaWwJaWYg # Y2gubmlsPwoKICAgIG4JPSBjaC5pbmRleChzZWxmKQogICAgcmV0dXJuIG5p # bAlpZiBuLm5pbD8KCiAgICByZXMJPSBuaWwKICAgIGlmIGtsYXNzLm5pbD8K # ICAgICAgbiAtPSAxCiAgICAgIHJlcwk9IGNoW25dCiAgICBlbHNlCiAgICAg # IGJlZ2luCiAgICAgICAgbiAtPSAxCiAgICAgICAgcmVzCT0gY2hbbl0KICAg # ICAgZW5kIHdoaWxlIChrbGFzcy5lbXB0eT8gb3Iga2xhc3MuY29sbGVjdHt8 # a3wgY2hbbi0xXS5raW5kX29mPyhrKX0uc29ydC51bmlxID09IFt0cnVlXSkg # XAogICAgICAgICAgICBhbmQgKHNraXAuZW1wdHk/IG9yIHNraXAuY29sbGVj # dHt8a3wgY2hbbi0xXS5raW5kX29mPyhrKX0uc29ydC51bmlxID09IFtmYWxz # ZV0pCiAgICBlbmQKCiAgICByZXMKICBlbmQKZW5kCgpjbGFzcyBUcmVlCiAg # QEB2ZXJzaWUJPSAxCiAgQEBtdXRleAk9IE11dGV4Lm5ldwoKICBhdHRyX3Jl # YWRlciA6ZGF0YQogIGF0dHJfd3JpdGVyIDpkYXRhCiAgYXR0cl9yZWFkZXIg # OnBhcmVudAogIGF0dHJfd3JpdGVyIDpwYXJlbnQKICBhdHRyX3JlYWRlciA6 # Y2hpbGRyZW4KICBhdHRyX3dyaXRlciA6Y2hpbGRyZW4KICBhdHRyX3JlYWRl # ciA6dmlzaWJsZQogIGF0dHJfd3JpdGVyIDp2aXNpYmxlCgogIGluY2x1ZGUg # VGV4dEFycmF5CiAgaW5jbHVkZSBQYXJzZVRyZWUKCiAgZGVmIGluaXRpYWxp # emUoc3RyaW5nKQogICAgc3RyaW5nID0gc3RyaW5nLmpvaW4oIiIpIGlmIHN0 # cmluZy5raW5kX29mPyhBcnJheSkKCiAgICBAZGF0YQkJPSBzdHJpbmcKICAg # IEBwYXJlbnQJCT0gbmlsCiAgICBAY2hpbGRyZW4JCT0gW10KICAgIEBvYmpl # Y3RzCQk9IFtdCiAgICBAdmlzaWJsZQkJPSB0cnVlCiAgICBAY2hlY2t2aXNp # YmlsaXR5CT0gZmFsc2UKCiAgICBidWlsZG9iamVjdHMoc3RyaW5nKQogICAg # YnVpbGRwYXJlbnRzCiAgICBidWlsZGNoaWxkcmVuCiAgICBtYXJrY2xvc2Vk # CiAgICBkZWxldGVkdW1taWVzCgogICAgQGNoZWNrdmlzaWJpbGl0eQk9IHRy # dWUKICBlbmQKCiAgZGVmIHNlbGYuZmlsZShmaWxlKQogICAgbmV3KEZpbGUu # bmV3KGZpbGUpLnJlYWRsaW5lcykKICBlbmQKCiAgZGVmIHNlbGYubG9jYXRp # b24odXJsLCBmb3JtPUhhc2gubmV3KQogICAgcwk9IEhUVFBDbGllbnQuZ2V0 # KHVybCwge30sIGZvcm0pCiAgICBzCT0gIiIJaWYgcy5uaWw/CiAgICBuZXco # cykKICBlbmQKCiAgZGVmIHNlbGYubmV3X2Zyb21fY2FjaGUyKGRhdGEpCiAg # ICBuZXcoZGF0YSkKICBlbmQKCiAgZGVmIHNlbGYubmV3X2Zyb21fY2FjaGUo # ZGF0YSkKICAgIGhhc2gJPSBNRDUubmV3KCIje0BAdmVyc2llfSAje2RhdGF9 # IikKCiAgICBkaXIJCT0gIiN7dGVtcH0vZXZjYWNoZS4je3VzZXJ9L3RyZWUu # bmV3IgogICAgZmlsZQk9ICIje2Rpcn0vI3toYXNofSIKCiAgICB0cmVlCT0g # bmlsCgogICAgRmlsZS5ta3BhdGgoZGlyKQoKICAgIGlmIEZpbGUuZmlsZT8o # ZmlsZSkKICAgICAgQEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAgICAgIHRy # ZWUJPSBNYXJzaGFsLnJlc3RvcmUoRmlsZS5uZXcoZmlsZSwgInJiIikpCiAg # ICAgIGVuZAogICAgZWxzZQogICAgICB0cmVlCT0gbmV3KGRhdGEpCgogICAg # ICBpZiBub3QgdHJlZS5uaWw/CiAgICAgICAgQEBtdXRleC5zeW5jaHJvbml6 # ZSBkbwogICAgICAgICAgRmlsZS5vcGVuKGZpbGUsICJ3YiIpIHt8ZnwgTWFy # c2hhbC5kdW1wKHRyZWUsIGYpfQogICAgICAgIGVuZAogICAgICBlbmQKICAg # IGVuZAoKICAgIHJldHVybiB0cmVlCiAgZW5kCgogIGRlZiBpbnNwZWN0CiAg # ICBAb2JqZWN0cy5jb2xsZWN0IGRvIHxvYmp8CiAgICAgIG9iai5pbnNwZWN0 # CiAgICBlbmQuam9pbigiXG4iKQogIGVuZAoKICBkZWYgYnVpbGRvYmplY3Rz # KHN0cmluZykKICAgIHJhaXNlICJIYXMgdG8gYmUgZGVmaW5lZCBpbiB0aGUg # c3ViY2xhc3MuIgogIGVuZAoKICBkZWYgYnVpbGRwYXJlbnRzCiAgICBsZXZl # bAk9IDEKICAgIGxldmVscwk9IEhhc2gubmV3CiAgICBsZXZlbHNbMF0JPSBu # aWwKICAgIHBhcnNlIGRvIHx0eXBlLCBvYmp8CiAgICAgIGNhc2Ugb2JqLnVw # b3Jkb3duCiAgICAgIHdoZW4gRG93bgogICAgICAgIG9iai5sZXZlbAk9IGxl # dmVsCiAgICAgICAgb2JqLnBhcmVudAk9IGxldmVsc1tsZXZlbC0xXQogICAg # ICAgIGxldmVsc1tsZXZlbF0JPSBvYmoKICAgICAgICBsZXZlbCArPSAxCiAg # ICAgIHdoZW4gVXAsIER1bW15CiAgICAgICAgcGwgPSBsZXZlbAogICAgICAg # IDEudXB0byhsZXZlbC0xKSBkbyB8bHwKICAgICAgICAgIHBvID0gbGV2ZWxz # W2xdCiAgICAgICAgICBwbCA9IGwgaWYgcG8uc3VidHlwZSA9PSBvYmouc3Vi # dHlwZQogICAgICAgIGVuZAogICAgICAgIGxldmVsID0gcGwKICAgICAgICBv # YmoubGV2ZWwJPSBsZXZlbAogICAgICAgIG9iai5wYXJlbnQJPSBsZXZlbHNb # bGV2ZWwtMV0KICAgICAgd2hlbiBTYW1lCiAgICAgICAgb2JqLmxldmVsCT0g # bGV2ZWwKICAgICAgICBvYmoucGFyZW50CT0gbGV2ZWxzW2xldmVsLTFdCiAg # ICAgIGVuZAogICAgZW5kCiAgZW5kCgogIGRlZiBidWlsZGNoaWxkcmVuCiAg # ICBAb2JqZWN0cy5lYWNoIGRvIHxvYmp8CiAgICAgIG9iai5jaGlsZHJlbiA9 # IFtdCiAgICBlbmQKCiAgICBwYXJzZSBkbyB8dHlwZSwgb2JqfAogICAgICBp # ZiBub3Qgb2JqLnBhcmVudC5uaWw/CiAgICAgICAgcG8gPSBvYmoucGFyZW50 # CiAgICAgICAgcG8uY2hpbGRyZW4gPDwgb2JqCiAgICAgIGVsc2UKICAgICAg # ICBAY2hpbGRyZW4gPDwgb2JqCiAgICAgIGVuZAogICAgZW5kCiAgZW5kCgog # IGRlZiBtYXJrY2xvc2VkCiAgICAoW3NlbGZdICsgQG9iamVjdHMpLmVhY2gg # ZG8gfG9ianwKICAgICAgb2JqLmNoaWxkcmVuLmVhY2hfaW5kZXggZG8gfGl8 # CiAgICAgICAgY28xCQk9IG9iai5jaGlsZHJlbltpXQogICAgICAgIGNvMgkJ # PSBvYmouY2hpbGRyZW5baSsxXQoKICAgICAgICBjbzEuY2xvc2VkCT0gKG5v # dCBjbzIubmlsPyBhbmQgY28xLnVwb3Jkb3duID09IERvd24gYW5kIChjbzIu # dXBvcmRvd24gPT0gVXAgb3IgY28yLnVwb3Jkb3duID09IER1bW15KSBhbmQg # Y28xLnN1YnR5cGUgPT0gY28yLnN1YnR5cGUpCiAgICAgIGVuZAogICAgZW5k # CiAgZW5kCgogIGRlZiBkZWxldGVkdW1taWVzCiAgICAoW3NlbGZdICsgQG9i # amVjdHMpLmVhY2ggZG8gfG9ianwKICAgICAgb2JqLmNoaWxkcmVuLmRlbGV0 # ZV9pZiBkbyB8b2JqMnwKICAgICAgICBvYmoyLnVwb3Jkb3duID09IER1bW15 # CiAgICAgIGVuZAogICAgZW5kCgogICAgQG9iamVjdHMuZGVsZXRlX2lmIGRv # IHxvYmp8CiAgICAgIG9iai51cG9yZG93biA9PSBEdW1teQogICAgZW5kCiAg # ZW5kCgogIGRlZiBwYXJzZSh0eXBlcz1bXSwgc3VidHlwZXM9W10sIG9uY2U9 # ZmFsc2UpCiAgICB0eXBlcwk9IFt0eXBlc10JaWYgdHlwZXMuY2xhc3MgPT0g # Q2xhc3MKICAgIHN1YnR5cGVzCT0gW3N1YnR5cGVzXQlpZiBzdWJ0eXBlcy5j # bGFzcyA9PSBTdHJpbmcKICAgIGhpZGVsZXZlbAk9IG5pbAoKICAgIGNhdGNo # IDpvbmNlIGRvCiAgICAgIEBvYmplY3RzLmVhY2ggZG8gfG9ianwKICAgICAg # ICBpZiAoQGNoZWNrdmlzaWJpbGl0eSBhbmQgaGlkZWxldmVsLm5pbD8gYW5k # IChub3Qgb2JqLnZpc2libGUpKQogICAgICAgICAgaGlkZWxldmVsCT0gb2Jq # LmxldmVsCiAgICAgICAgZWxzZQogICAgICAgICAgaWYgKEBjaGVja3Zpc2li # aWxpdHkgYW5kIChub3QgaGlkZWxldmVsLm5pbD8pIGFuZCBvYmoudmlzaWJs # ZSBhbmQgb2JqLmxldmVsIDw9IGhpZGVsZXZlbCkKICAgICAgICAgICAgaGlk # ZWxldmVsCT0gbmlsCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKCiAgICAg # ICAgaWYgaGlkZWxldmVsLm5pbD8KICAgICAgICAgIG9rID0gZmFsc2UKICAg # ICAgICAgIGNhdGNoIDpzdG9wIGRvCiAgICAgICAgICAgIGlmIHR5cGVzLmVt # cHR5PwogICAgICAgICAgICAgIGlmIHN1YnR5cGVzLmVtcHR5PwogICAgICAg # ICAgICAgICAgb2sgPSB0cnVlCiAgICAgICAgICAgICAgICB0aHJvdyA6c3Rv # cAogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHN1YnR5cGVz # LmVhY2ggZG8gfHN0fAogICAgICAgICAgICAgICAgICBpZiBvYmouc3VidHlw # ZSA9PSBzdAogICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZQogICAgICAg # ICAgICAgICAgICAgIHRocm93IDpzdG9wCiAgICAgICAgICAgICAgICAgIGVu # ZAogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAg # ICAgICAgIGVsc2UKICAgICAgICAgICAgICBpZiBzdWJ0eXBlcy5lbXB0eT8K # ICAgICAgICAgICAgICAgIHR5cGVzLmVhY2ggZG8gfHR8CiAgICAgICAgICAg # ICAgICAgIGlmIG9iai5raW5kX29mPyh0KQogICAgICAgICAgICAgICAgICAg # IG9rID0gdHJ1ZQogICAgICAgICAgICAgICAgICAgIHRocm93IDpzdG9wCiAg # ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgZW5kCiAgICAg # ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgdHlwZXMuZWFjaCBkbyB8 # dHwKICAgICAgICAgICAgICAgICAgc3VidHlwZXMuZWFjaCBkbyB8c3R8CiAg # ICAgICAgICAgICAgICAgICAgaWYgb2JqLmtpbmRfb2Y/KHQpIGFuZCBvYmou # c3VidHlwZSA9PSBzdAogICAgICAgICAgICAgICAgICAgICAgb2sgPSB0cnVl # CiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyA6c3RvcAogICAgICAgICAg # ICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAg # ICAgICAgIGVuZAogICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQK # ICAgICAgICAgIGVuZAoKICAgICAgICAgIGlmIG9rCiAgICAgICAgICAgIHlp # ZWxkKG9iai5jbGFzcy50b19zLCBvYmopCgogICAgICAgICAgICB0aHJvdyA6 # b25jZQlpZiBvbmNlCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAg # ZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIHBhdGgocGFkKQogICAgcDEJPSBz # ZWxmCgogICAgdW5sZXNzIHBhZC5uaWw/CiAgICAgIHBhZC5zcGxpdCgvXC8v # KS5lYWNoIGRvIHxkZWVsfAogICAgICAgIHRhZywgdm9vcmtvbWVuCT0gZGVl # bC5zcGxpdCgvOi8pCgogICAgICAgIGlmIChub3QgdGFnLm5pbD8pIGFuZCAo # bm90IHAxLm5pbD8pCiAgICAgICAgICB2b29ya29tZW4JPSAxCWlmIHZvb3Jr # b21lbi5uaWw/CiAgICAgICAgICB2b29ya29tZW4JPSB2b29ya29tZW4udG9f # aQoKICAgICAgICAgIHRlbGxlcgk9IDAKICAgICAgICAgIHAyCT0gbmlsCiAg # ICAgICAgICBwMS5jaGlsZHJlbi5lYWNoX2luZGV4IGRvIHxpfAogICAgICAg # ICAgICAjaWYgcDEuY2hpbGRyZW5baV0udXBvcmRvd24gPT0gRG93bgogICAg # ICAgICAgICAgIHVubGVzcyAgcDEuY2hpbGRyZW5baV0uc3VidHlwZS5uaWw/ # CiAgICAgICAgICAgICAgICBpZiBwMS5jaGlsZHJlbltpXS5zdWJ0eXBlLm5v # cXVvdGVzID09IHRhZy5ub3F1b3RlcwogICAgICAgICAgICAgICAgICB0ZWxs # ZXIgKz0gMQogICAgICAgICAgICAgICAgICBwMgk9IHAxLmNoaWxkcmVuW2ld # CWlmIHRlbGxlciA9PSB2b29ya29tZW4KICAgICAgICAgICAgICAgIGVuZAog # ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAjZW5kCiAgICAgICAgICBl # bmQKICAgICAgICAgIHAxCT0gcDIKICAgICAgICBlbmQKICAgICAgZW5kCiAg # ICBlbmQKCiAgICBwMQogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAHRtcC5lYXIycnVieXNjcmlwdC5mLjExOTAwLnRh # ci9ldi9uZXQucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAAMDAw # MTc1MAAwMDAwMDA0NjIyNgAxMDI1MDMyMDYxNQAwMTc3NjEAIDAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAdXN0YXIgIABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVy # aWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAw # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxdWlyZSAiZXYv # cnVieSIKcmVxdWlyZSAiZXYvZnRvb2xzIgpyZXF1aXJlICJldi9taW1lIgpy # ZXF1aXJlICJuZXQvaHR0cCIKcmVxdWlyZSAic29ja2V0IgpyZXF1aXJlICJ1 # cmkiCnJlcXVpcmUgImNnaSIKcmVxdWlyZSAibWQ1IgpyZXF1aXJlICJ0aHJl # YWQiCgokcHJveHkJPSBFTlZbIlBST1hZIl0JaWYgJHByb3h5Lm5pbD8KCmZp # bGUJPSAiI3tob21lfS8uZXZuZXQiCmlmIEZpbGUuZmlsZT8oZmlsZSkKICBI # YXNoLmZpbGUoZmlsZSkuZWFjaCBkbyB8aywgdnwKICAgIGV2YWwgIiQje2t9 # ID0gJyN7dn0nIgl1bmxlc3Mgaz1+IC9eXCMvCiAgZW5kCmVuZAoKZGVmIHVy # aTJ0eHQocykKCSMgPz8/IFdlcmt0IG5pZXQgZ29lZAogIGkJPSBzLmluZGV4 # KC8lW1s6ZGlnaXQ6XV17Mn0vKQogIHdoaWxlIG5vdCBpLm5pbD8KICAgIHMJ # PSBzWzAuLihpLTEpXSArIHNbKGkrMSkuLihpKzIpXS51bnBhY2soJ0gyJyku # c2hpZnQudG9faS5jaHIgKyBzWyhpKzMpLi4tMV0KICAgIGkJPSBzLmluZGV4 # KC8lW1s6ZGlnaXQ6XV17Mn0vKQogIGVuZAogIHMKZW5kCgpjbGFzcyBUQ1BT # ZXJ2ZXIKICBkZWYgc2VsZi5mcmVlcG9ydChmcm9tLCB0bywgcmVtb3RlPWZh # bHNlKQogICAgaWYgd2luZG93cz8gb3IgY3lnd2luPwogICAgICBUQ1BTZXJ2 # ZXIuZnJlZXBvcnRfd2luZG93cyhmcm9tLCB0bywgcmVtb3RlKQogICAgZWxz # ZQogICAgICBUQ1BTZXJ2ZXIuZnJlZXBvcnRfbGludXgoZnJvbSwgdG8sIHJl # bW90ZSkKICAgIGVuZAogIGVuZAoKICBkZWYgc2VsZi5mcmVlcG9ydF9saW51 # eChmcm9tLCB0bywgcmVtb3RlKQogICAgcG9ydHMJPSAoZnJvbS4udG8pLnRv # X2EKICAgIHBvcnQJPSBuaWwKICAgIHJlcwkJPSBuaWwKCiAgICB3aGlsZSBy # ZXMubmlsPyBhbmQgbm90IHBvcnRzLmVtcHR5PwogICAgICBiZWdpbgogICAg # ICAgIHBvcnQJPSBwb3J0c1swXQogICAgICAgIHBvcnRzLmRlbGV0ZShwb3J0 # KQoKICAgICAgICBpbwk9IFRDUFNlcnZlci5uZXcocmVtb3RlID8gIjAuMC4w # LjAiIDogImxvY2FsaG9zdCIsIHBvcnQpCgogICAgICAgIHJlcwk9IFtwb3J0 # LCBpb10KICAgICAgcmVzY3VlCiAgICAgIGVuZAogICAgZW5kCgogICAgcmVz # CT0gW25pbCwgbmlsXQlpZiByZXMubmlsPwoKICAgIHBvcnQsIGlvCT0gcmVz # CgogICAgcmV0dXJuIHBvcnQsIGlvCiAgZW5kCgogIGRlZiBzZWxmLmZyZWVw # b3J0X3dpbmRvd3MoZnJvbSwgdG8sIHJlbW90ZSkKICAgIHBvcnRzCT0gKGZy # b20uLnRvKS50b19hCiAgICBwb3J0CT0gbmlsCiAgICByZXMJCT0gbmlsCgog # ICAgd2hpbGUgcmVzLm5pbD8gYW5kIG5vdCBwb3J0cy5lbXB0eT8KICAgICAg # YmVnaW4KICAgICAgICBwb3J0CT0gcG9ydHMuYW55CiAgICAgICAgcG9ydHMu # ZGVsZXRlKHBvcnQpCgogICAgICAgIGlvCT0gVENQU29ja2V0Lm5ldygibG9j # YWxob3N0IiwgcG9ydCkKICAgICAgICBpby5jbG9zZQogICAgICByZXNjdWUK # ICAgICAgICByZXMJPSBwb3J0CiAgICAgIGVuZAogICAgZW5kCgogICAgcG9y # dCwgaW8JPSByZXMKCiAgICByZXR1cm4gcG9ydCwgaW8KICBlbmQKCiAgZGVm # IHNlbGYuZnJlZXBvcnRfd2luZG93czIoZnJvbSwgdG8sIHJlbW90ZSkKICAg # IHJlcwk9IG5pbAogICAgcG9ydAk9IGZyb20KCiAgICB3aGlsZSByZXMubmls # PyBhbmQgcG9ydCA8PSB0bwogICAgICBiZWdpbgogICAgICAgIGlvCT0gVENQ # U29ja2V0Lm5ldygibG9jYWxob3N0IiwgcG9ydCkKICAgICAgICBpby5jbG9z # ZQoKICAgICAgICBwb3J0ICs9IDEKICAgICAgcmVzY3VlCiAgICAgICAgcmVz # CT0gcG9ydAogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiByZXMKICBl # bmQKCiAgZGVmIHNlbGYudXNlZHBvcnRzKGZyb20sIHRvKQogICAgdGhyZWFk # cwk9IFtdCiAgICByZXMJCT0gW10KCiAgICBmcm9tLnVwdG8odG8pIGRvIHxw # b3J0fAogICAgICB0aHJlYWRzIDw8IFRocmVhZC5uZXcgZG8KICAgICAgICBi # ZWdpbgogICAgICAgICAgaW8JPSBUQ1BTb2NrZXQubmV3KCJsb2NhbGhvc3Qi # LCBwb3J0KQogICAgICAgICAgaW8uY2xvc2UKCiAgICAgICAgICBwb3J0CiAg # ICAgICAgcmVzY3VlCiAgICAgICAgICBuaWwKICAgICAgICBlbmQKICAgICAg # ZW5kCiAgICBlbmQKCiAgICB0aHJlYWRzLmVhY2ggZG8gfHRocmVhZHwKICAg # ICAgcG9ydAk9IHRocmVhZC52YWx1ZQogICAgICByZXMgPDwgcG9ydAl1bmxl # c3MgcG9ydC5uaWw/CiAgICBlbmQKCiAgICByZXR1cm4gcmVzCiAgZW5kCmVu # ZAoKY2xhc3MgRVZVUkkKICBhdHRyX3JlYWRlciA6cHJvdG9jb2wKICBhdHRy # X3dyaXRlciA6cHJvdG9jb2wKICBhdHRyX3JlYWRlciA6dXNlcnBhc3MKICBh # dHRyX3dyaXRlciA6dXNlcnBhc3MKICBhdHRyX3JlYWRlciA6aG9zdAogIGF0 # dHJfd3JpdGVyIDpob3N0CiAgYXR0cl9yZWFkZXIgOnBvcnQKICBhdHRyX3dy # aXRlciA6cG9ydAogIGF0dHJfcmVhZGVyIDpwYXRoCiAgYXR0cl93cml0ZXIg # OnBhdGgKICBhdHRyX3JlYWRlciA6dmFycwogIGF0dHJfd3JpdGVyIDp2YXJz # CiAgYXR0cl9yZWFkZXIgOmFuY2hvcgogIGF0dHJfd3JpdGVyIDphbmNob3IK # CiAgZGVmIGluaXRpYWxpemUodXJsKQogICAgYmVnaW4KICAgICAgQHByb3Rv # Y29sLCBAdXNlcnBhc3MsIEBob3N0LCBAcG9ydCwgZDEsIEBwYXRoLCBkMiwg # QHZhcnMsIEBhbmNob3IJPSBVUkkuc3BsaXQodXJsLnRvX3MpCiAgICByZXNj # dWUKICAgIGVuZAoKICAgIEBwYXRoCQk9ICIvIgkJaWYgKG5vdCBAcGF0aC5u # aWw/IGFuZCBAcGF0aC5lbXB0eT8gYW5kIEBwcm90b2NvbCA9PSAiaHR0cCIp # CgogICAgQHByb3RvY29sCQk9ICIiCQlpZiBAcHJvdG9jb2wubmlsPwogICAg # QHVzZXJwYXNzCQk9ICIiCQlpZiBAdXNlcnBhc3MubmlsPwogICAgQGhvc3QJ # CT0gIiIJCWlmIEBob3N0Lm5pbD8KICAgIEBwb3J0CQk9IDAJCWlmIEBwb3J0 # Lm5pbD8KICAgIEBwYXRoCQk9ICIiCQlpZiBAcGF0aC5uaWw/CiAgICBAdmFy # cwkJPSAiIgkJaWYgQHZhcnMubmlsPwogICAgQGFuY2hvcgkJPSAiIgkJaWYg # QGFuY2hvci5uaWw/CgogICAgcmVzCQkJPSB7fQogICAgQHZhcnN2b2xnb3Jk # ZQk9IFtdCiAgICBAdmFycy5zcGxpdCgvJi8pLmVhY2h7fHZhcnwgaywgdiA9 # IHZhci5zcGxpdCgvPS8pIDsgcmVzW2tdID0gdiA7IEB2YXJzdm9sZ29yZGUg # PDwga30KICAgIEB2YXJzCQk9IHJlcwoKICAgIEBwb3J0CQk9IEBwb3J0LnRv # X2kKICBlbmQKCiAgZGVmICsodXJsMikKICAgIHVybDEJPSBzZWxmLnRvX3MK # ICAgIHVybDIJPSB1cmwyLnRvX3MJaWYgdXJsMi5raW5kX29mPyhzZWxmLmNs # YXNzKQoKICAgIHJldHVybiBFVlVSSS5uZXcoKFVSSTo6R2VuZXJpYy5uZXco # KlVSSS5zcGxpdCh1cmwxKSkgKyBVUkk6OkdlbmVyaWMubmV3KCpVUkkuc3Bs # aXQodXJsMikpKS50b19zKQlyZXNjdWUgbmlsCiAgZW5kCgogIGRlZiB0b19z # CiAgICBwcm90b2NvbAk9IEBwcm90b2NvbAogICAgdXNlcnBhc3MJPSBAdXNl # cnBhc3MKICAgIGhvc3QJPSBAaG9zdAogICAgcG9ydAk9IEBwb3J0CiAgICBw # YXRoCT0gQHBhdGgKICAgIHZhcnMJPSB2YXJzdHJpbmcKICAgIGFuY2hvcgk9 # IEBhbmNob3IKCiAgICBwcm90b2NvbAk9IG5pbAlpZiBAcHJvdG9jb2wuZW1w # dHk/CiAgICB1c2VycGFzcwk9IG5pbAlpZiBAdXNlcnBhc3MuZW1wdHk/CiAg # ICBob3N0CT0gbmlsCWlmIEBob3N0LmVtcHR5PwogICAgcG9ydAk9IG5pbAlp # ZiBAcG9ydC56ZXJvPwogICAgcGF0aAk9IG5pbAlpZiBAcGF0aC5lbXB0eT8K # ICAgIHZhcnMJPSBuaWwJaWYgQHZhcnMuZW1wdHk/CiAgICBhbmNob3IJPSBu # aWwJaWYgQGFuY2hvci5lbXB0eT8KCiAgICByZXMJPSBVUkk6OkhUVFAubmV3 # KEBwcm90b2NvbCwgQHVzZXJwYXNzLCBAaG9zdCwgcG9ydCwgbmlsLCBAcGF0 # aCwgbmlsLCB2YXJzLCBAYW5jaG9yKS50b19zLmZyb21faHRtbAoKICAgIHJl # cy5nc3ViISgvQC8sICIiKQlpZiAoQHVzZXJwYXNzLm5pbD8gb3IgQHVzZXJw # YXNzLmVtcHR5PykKCiAgICByZXMuZ3N1YiEoL1wjJC8sICIiKQoKICAgIHJl # dHVybiByZXMKICBlbmQKCiAgZGVmIGxvY2FsbmFtZQogICAgcHJvdG9jb2wJ # PSBAcHJvdG9jb2wKICAgIHVzZXJwYXNzCT0gQHVzZXJwYXNzCiAgICBob3N0 # CT0gQGhvc3QKICAgIHBvcnQJPSBAcG9ydAogICAgcGF0aAk9IEBwYXRoCiAg # ICB2YXJzCT0gdmFyc3RyaW5nCiAgICBhbmNob3IJPSBAYW5jaG9yCgogICAg # cHJvdG9jb2wJPSBuaWwJaWYgQHByb3RvY29sLmVtcHR5PwogICAgdXNlcnBh # c3MJPSBuaWwJaWYgQHVzZXJwYXNzLmVtcHR5PwogICAgaG9zdAk9IG5pbAlp # ZiBAaG9zdC5lbXB0eT8KICAgIHBvcnQJPSBuaWwJaWYgQHBvcnQuemVybz8K # ICAgIHBhdGgJPSBuaWwJaWYgQHBhdGguZW1wdHk/CiAgICB2YXJzCT0gbmls # CWlmIEB2YXJzLmVtcHR5PwogICAgYW5jaG9yCT0gbmlsCWlmIEBhbmNob3Iu # ZW1wdHk/CgogICAgcGF0aAk9ICIje3BhdGh9LiIJaWYgcGF0aCA9fiAvW1wv # XFxdJC8KCiAgICBmCT0gTUQ1Lm5ldyhwcm90b2NvbC50b19zICsgdXNlcnBh # c3MudG9fcyArIGhvc3QudG9fcyArIHBvcnQudG9fcyArIEZpbGUuZGlybmFt # ZShwYXRoLnRvX3MpICsgdmFycy50b19zKS50b19zCiAgICBlCT0gRmlsZS5i # YXNlbmFtZShwYXRoLnRvX3MpLmdzdWIoL1teXHdcLlwtXS8sICJfIikuZ3N1 # YigvXysvLCAiXyIpCiAgICByZXMJPSBmICsgIi4iICsgZQogICAgcmVzLmdz # dWIhKC9bXlx3XSskLywgIiIpCgogICAgcmV0dXJuIHJlcwogIGVuZAoKICBk # ZWYgdmFyc3RyaW5nCiAgICByZXMJCT0gW10KICAgIHZhcnMJPSBAdmFycy5k # dXAKCiAgICBAdmFyc3ZvbGdvcmRlLmVhY2ggZG8gfGt8CiAgICAgIGlmIHZh # cnMuaW5jbHVkZT8oaykKICAgICAgICB2CT0gdmFyc1trXQogICAgICAgIHZh # cnMuZGVsZXRlKGspCgogICAgICAgIHJlcyA8PCAodi5uaWw/ID8gayA6ICIj # e2t9PSN7dn0iKQogICAgICBlbmQKICAgIGVuZAoKICAgIHJlcy5jb25jYXQo # dmFycy5jb2xsZWN0e3xrLCB2fCB2Lm5pbD8gPyBrIDogIiN7a309I3t2fSJ9 # KQoKICAgIHJldHVybiByZXMuam9pbigiJiIpCiAgZW5kCmVuZAoKY2xhc3Mg # SFRUUENsaWVudAogIEBAdmVyc2llCT0gMQogIEBAbXV0ZXgJPSBNdXRleC5u # ZXcKICBAQGhvc3RzCT0ge30KCiAgY2xhc3MgSGVhZGVyCiAgICBhdHRyX3Jl # YWRlciA6aGVhZGVyCiAgICBhdHRyX3JlYWRlciA6cHJvdG9jb2wKICAgIGF0 # dHJfcmVhZGVyIDpjb2RlCiAgICBhdHRyX3JlYWRlciA6dGV4dAoKICAgIGRl # ZiBpbml0aWFsaXplKGhlYWRlcikKICAgICAgQGhlYWRlcgk9IHt9CgogICAg # ICBpZiBub3QgaGVhZGVyLm5pbD8KICAgICAgICBmaXJzdGxpbmUsIHJlc3QJ # PSBoZWFkZXIuc3BsaXQoL1xyKlxuLywgMikKCiAgICAgICAgQHByb3RvY29s # LCBAY29kZSwgQHRleHQJPSBmaXJzdGxpbmUuc3BsaXQoLyAgKi8sIDMpCgog # ICAgICAgIEBjb2RlCT0gQGNvZGUudG9faQoKICAgICAgICBpZiBub3QgcmVz # dC5uaWw/CiAgICAgICAgICByZXN0LnNwbGl0KC9ccipcbi8pLmVhY2ggZG8g # fGxpbmV8CiAgICAgICAgICAgIGtleSwgdmFsdWUJPSBsaW5lLnNwbGl0KC8g # LywgMikKICAgICAgICAgICAgQGhlYWRlcltrZXkuc3ViKC86JC8sICIiKS5k # b3duY2FzZV0JPSB2YWx1ZQogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAg # ICAgIGVuZAogICAgZW5kCgogICAgZGVmIHRvX3MKICAgICAgcmVzCT0gIiIK # CiAgICAgIHJlcyA8PCAiJXMgJXMgJXNcbiIgJSBbQHByb3RvY29sLCBAY29k # ZSwgQHRleHRdCgogICAgICBAaGVhZGVyLmVhY2ggZG8gfGssIHZ8CiAgICAg # ICAgcmVzIDw8ICIlcz0lc1xuIiAlIFtrLCB2XQogICAgICBlbmQKCiAgICAg # IHJldHVybiByZXMKICAgIGVuZAogIGVuZAoKICBjbGFzcyBDaHVuawogICAg # ZGVmIGluaXRpYWxpemUoZGF0YSkKICAgICAgQGRhdGEJPSAiIgogICAgICBs # aW5lLCBkYXRhCT0gZGF0YS5zcGxpdCgvXHIqXG4vLCAyKQogICAgICBzaXpl # LCBleHQJCT0gbGluZS5zcGxpdCgvOy8sIDIpCiAgICAgIHNpemUJCT0gc2l6 # ZS5oZXgKICAgICAgd2hpbGUgbm90IHNpemUuemVybz8gYW5kIG5vdCBkYXRh # Lm5pbD8KICAgICAgICBAZGF0YQkJKz0gZGF0YVswLi4oc2l6ZS0xKV0KICAg # ICAgICBkYXRhCQk9IGRhdGFbc2l6ZS4uLTFdCiAgICAgICAgaWYgbm90IGRh # dGEubmlsPwogICAgICAgICAgZGF0YS5nc3ViISgvXlxyKlxuLywgIiIpCiAg # ICAgICAgICBsaW5lLCBkYXRhCT0gZGF0YS5zcGxpdCgvXHIqXG4vLCAyKQog # ICAgICAgICAgc2l6ZSwgZXh0CT0gbGluZS5zcGxpdCgvOy8sIDIpCiAgICAg # ICAgICBzaXplCQk9IHNpemUuaGV4CiAgICAgICAgZW5kCiAgICAgIGVuZAog # ICAgZW5kCgogICAgZGVmIHRvX3MKICAgICAgQGRhdGEKICAgIGVuZAogIGVu # ZAoKICBjbGFzcyBOb0FkZHJlc3NFeGNlcHRpb24gPCBTdGFuZGFyZEVycm9y # CiAgZW5kCgogIGRlZiBzZWxmLmdldGFkZHJlc3MoaG9zdCkKICAgIGlmIG5v # dCBAQGhvc3RzLmluY2x1ZGU/KGhvc3QpCiAgICAgIEBAaG9zdHNbaG9zdF0J # PSAiIgogICAgICBldnRpbWVvdXQoNSkgZG8JIyA/Pz8gRG9ldCAndXQgbmll # dD8uLi4KICAgICAgICBAQGhvc3RzW2hvc3RdCT0gSVBTb2NrZXQuZ2V0YWRk # cmVzcyhob3N0KQogICAgICBlbmQKICAgIGVuZAoKICAgIHJhaXNlIE5vQWRk # cmVzc0V4Y2VwdGlvbiwgaG9zdAlpZiBAQGhvc3RzW2hvc3RdLmVtcHR5PwoK # ICAgIEBAaG9zdHNbaG9zdF0KICBlbmQKCiAgZGVmIHNlbGYuaGVhZCh1cmks # IGZvcm09e30sIHJlY3Vyc2l2ZT10cnVlKQogICAgaGVhZGVyCT0gSGVhZGVy # Lm5ldyhuaWwpCgogICAgYmVnaW4KICAgICAgd2hpbGUgbm90IHVyaS5uaWw/ # CiAgICAgICAgdXJpCQk9IEVWVVJJLm5ldyh1cmkpIGlmIHVyaS5raW5kX29m # PyBTdHJpbmcKICAgICAgICBob3N0CQk9IHVyaS5ob3N0CiAgICAgICAgcG9y # dAkJPSB1cmkucG9ydAoKICAgICAgICBpZiAkcHJveHkubmlsPyBvciAkcHJv # eHkuZW1wdHk/IG9yIGhvc3QgPT0gImxvY2FsaG9zdCIKICAgICAgICAgIGlv # CQk9IG5pbAoKICAgICAgICAgIEBAbXV0ZXguc3luY2hyb25pemUgZG8KICAg # ICAgICAgICAgaW8JCQk9IFRDUFNvY2tldC5uZXcoZ2V0YWRkcmVzcyhob3N0 # KSwgcG9ydC56ZXJvPyA/IDgwIDogcG9ydCkKICAgICAgICAgIGVuZAoKICAg # ICAgICAgIGlvLndyaXRlKCJIRUFEICN7dXJpLnBhdGggb3IgJy8nfSN7dXJp # LnZhcnN0cmluZy5lbXB0eT8gPyAnJyA6ICc/JyArIHVyaS52YXJzdHJpbmd9 # IEhUVFAvMS4wXHJcbkhvc3Q6ICN7aG9zdH1cclxuXHJcbiIpCiAgICAgICAg # ZWxzZQogICAgICAgICAgcHJveHkJCT0gRVZVUkkubmV3KCRwcm94eSkKICAg # ICAgICAgIGlvCQk9IFRDUFNvY2tldC5uZXcocHJveHkuaG9zdCwgcHJveHku # cG9ydC56ZXJvPyA/IDgwODAgOiBwcm94eS5wb3J0KQoKICAgICAgICAgIGlv # LndyaXRlKCJIRUFEICN7dXJpfSBIVFRQLzEuMFxyXG4jeyJQcm94eS1BdXRo # b3JpemF0aW9uOiBCYXNpYyAiKyRwcm94eV9hdXRoKyJcclxuIiBpZiBub3Qg # JHByb3h5X2F1dGgubmlsP31cclxuXHJcbiIpCiAgICAgICAgZW5kCgogICAg # ICAgIGlvLmNsb3NlX3dyaXRlCgogICAgICAgIHJlcwk9IGlvLnJlYWQKCiAg # ICAgICAgaW8uY2xvc2VfcmVhZAoKICAgICAgICBoZWFkZXIsIGRhdGEJPSBu # aWwsIG5pbAogICAgICAgIGhlYWRlciwgZGF0YQk9IHJlcy5zcGxpdCgvXHIq # XG5ccipcbi8sIDIpCWlmIG5vdCByZXMubmlsPwogICAgICAgIGhlYWRlcgkJ # PSBIZWFkZXIubmV3KGhlYWRlcikKCiAgICAgICAgaWYgcmVjdXJzaXZlIGFu # ZCBoZWFkZXIuaGVhZGVyWyJsb2NhdGlvbiJdICE9IHVyaS50b19zCiAgICAg # ICAgICB1cmkJPSBFVlVSSS5uZXcodXJpKSArIGhlYWRlci5oZWFkZXJbImxv # Y2F0aW9uIl0KICAgICAgICBlbHNlCiAgICAgICAgICB1cmkJPSBuaWwKICAg # ICAgICBlbmQKICAgICAgZW5kCiAgICByZXNjdWUgRXJybm86OkVDT05OUkVT # RVQsIEVycm5vOjpFSE9TVFVOUkVBQ0ggPT4gZQogICAgICAkc3RkZXJyLnB1 # dHMgZS5tZXNzYWdlCiAgICAgIHNsZWVwIDEKICAgICAgcmV0cnkKICAgIHJl # c2N1ZSBFcnJubzo6RUNPTk5SRUZVU0VEID0+IGUKICAgICAgZGF0YQk9IG5p # bAogICAgcmVzY3VlIE5vQWRkcmVzc0V4Y2VwdGlvbiA9PiBlCiAgICAgICRz # dGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAgaGVhZGVyCT0gSGVhZGVyLm5l # dyhuaWwpCiAgICBlbmQKCiAgICBHQy5zdGFydAoKICAgIHJldHVybiBoZWFk # ZXIKICBlbmQKCiAgZGVmIHNlbGYuZ2V0KHVyaSwgaHR0cGhlYWRlcj17fSwg # Zm9ybT17fSkKICAgIHBvc3QJPSBBcnJheS5uZXcKICAgIGZvcm0uZWFjaF9w # YWlyIGRvIHx2YXIsIHZhbHVlfAogICAgICBwb3N0IDw8ICIje3Zhci50b19o # dG1sfT0je3ZhbHVlLnRvX2h0bWx9IgogICAgZW5kCiAgICBwb3N0CT0gcG9z # dC5qb2luKCI/IikKCiAgICBkYXRhCT0gbmlsCgogICAgYmVnaW4KICAgICAg # d2hpbGUgbm90IHVyaS5uaWw/CiAgICAgICAgdXJpCT0gRVZVUkkubmV3KHVy # aSkgaWYgdXJpLmtpbmRfb2Y/IFN0cmluZwogICAgICAgIGhvc3QJPSB1cmku # aG9zdAogICAgICAgIHBvcnQJPSB1cmkucG9ydAoKICAgICAgICBpZiAkcHJv # eHkubmlsPyBvciAkcHJveHkuZW1wdHk/IG9yIGhvc3QgPT0gImxvY2FsaG9z # dCIKICAgICAgICAgIGlvCT0gbmlsCiAgICAgICAgICBAQG11dGV4LnN5bmNo # cm9uaXplIGRvCiAgICAgICAgICAgIGlvCQkJPSBUQ1BTb2NrZXQubmV3KGdl # dGFkZHJlc3MoaG9zdCksIHBvcnQuemVybz8gPyA4MCA6IHBvcnQpCiAgICAg # ICAgICBlbmQKCiAgICAgICAgICBpZiBwb3N0LmVtcHR5PwogICAgICAgICAg # ICBpby53cml0ZSAiR0VUICVzJXMgSFRUUC8xLjBcclxuIiAlIFsodXJpLnBh # dGggb3IgJy8nKSwgKHVyaS52YXJzdHJpbmcuZW1wdHk/ID8gJycgOiAnPycg # KyB1cmkudmFyc3RyaW5nKV0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAg # aW8ud3JpdGUgIlBPU1QgJXMlcyBIVFRQLzEuMFxyXG4iICUgWyh1cmkucGF0 # aCBvciAnLycpLCAodXJpLnZhcnN0cmluZy5lbXB0eT8gPyAnJyA6ICc/JyAr # IHVyaS52YXJzdHJpbmcpXQogICAgICAgICAgZW5kCiAgICAgICAgZWxzZQog # ICAgICAgICAgcHJveHkJPSBFVlVSSS5uZXcoJHByb3h5KQogICAgICAgICAg # aW8JPSBUQ1BTb2NrZXQubmV3KHByb3h5Lmhvc3QsIHByb3h5LnBvcnQuemVy # bz8gPyA4MDgwIDogcHJveHkucG9ydCkKCiAgICAgICAgICBpZiBwb3N0LmVt # cHR5PwogICAgICAgICAgICBpby53cml0ZSAiR0VUICVzIEhUVFAvMS4wXHJc # biIgJSB1cmkKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgaW8ud3JpdGUg # IlBPU1QgJXMgSFRUUC8xLjBcclxuIiAlIHVyaQogICAgICAgICAgZW5kCiAg # ICAgICAgZW5kCgogICAgICAgIGlvLndyaXRlICJIb3N0OiAlc1xyXG4iICUg # aG9zdAogICAgICAgIGlvLndyaXRlICJVc2VyLUFnZW50OiB4eXpcclxuIgog # ICAgICAgIGlvLndyaXRlICJQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyAl # c1xyXG4iICUgJHByb3h5X2F1dGgJdW5sZXNzICRwcm94eV9hdXRoLm5pbD8K # ICAgICAgICAjaW8ud3JpdGUgIkFjY2VwdC1FbmNvZGluZzogZGVmbGF0ZVxy # XG4iCiAgICAgICAgI2lvLndyaXRlICJBY2NlcHQtQ2hhcnNldDogSVNPLTg4 # NTktMVxyXG4iCiAgICAgICAgaW8ud3JpdGUgIkNvbm5lY3Rpb246IGNsb3Nl # XHJcbiIKICAgICAgICBpby53cml0ZSAiQ29udGVudC1UeXBlOiBhcHBsaWNh # dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcclxuIgl1bmxlc3MgcG9zdC5l # bXB0eT8KICAgICAgICBpby53cml0ZSAiQ29udGVudC1MZW5ndGg6ICVzXHJc # biIgJSBwb3N0Lmxlbmd0aAkJCXVubGVzcyBwb3N0LmVtcHR5PwogICAgICAg # IGh0dHBoZWFkZXIuZWFjaCBkbyB8aywgdnwKICAgICAgICAgICRzdGRlcnIu # cHV0cyAiJXM6ICVzXHJcbiIgJSBbaywgdl0KICAgICAgICAgIGlvLndyaXRl # ICIlczogJXNcclxuIiAlIFtrLCB2XQogICAgICAgIGVuZAogICAgICAgIGlv # LndyaXRlICJcclxuIgogICAgICAgIGlvLndyaXRlIHBvc3QJCQkJCQkJdW5s # ZXNzIHBvc3QuZW1wdHk/CgogICAgICAgIGlvLmNsb3NlX3dyaXRlCgogICAg # ICAgIHJlcwkJPSBpby5yZWFkCgogICAgICAgIGlvLmNsb3NlX3JlYWQKCiAg # ICAgICAgaGVhZGVyLCBkYXRhCT0gbmlsLCBuaWwKICAgICAgICBoZWFkZXIs # IGRhdGEJPSByZXMuc3BsaXQoL1xyKlxuXHIqXG4vLCAyKQlpZiBub3QgcmVz # Lm5pbD8KCiAgICAgICAgaGVhZGVyCT0gSGVhZGVyLm5ldyhoZWFkZXIpCiAg # ICAgICAgbGVuZ3RoCT0gaGVhZGVyLmhlYWRlclsiY29udGVudC1sZW5ndGgi # XQogICAgICAgIGRhdGEJPSAiIglpZiBsZW5ndGggPT0gIjAiCgogICAgICAg # IGlmIGhlYWRlci5oZWFkZXJbImxvY2F0aW9uIl0gIT0gdXJpLnRvX3MKICAg # ICAgICAgIHVyaQk9IEVWVVJJLm5ldyh1cmkpICsgaGVhZGVyLmhlYWRlclsi # bG9jYXRpb24iXQogICAgICAgIGVsc2UKICAgICAgICAgIHVyaQk9IG5pbAog # ICAgICAgIGVuZAoKICAgICAgICBpZiBoZWFkZXIuaGVhZGVyWyJ0cmFuc2Zl # ci1lbmNvZGluZyJdID09ICJjaHVua2VkIgogICAgICAgICAgZGF0YQk9IENo # dW5rLm5ldyhkYXRhKS50b19zCWlmIG5vdCBkYXRhLm5pbD8KICAgICAgICBl # bmQKCiAgICAgICAgI2lmIGhlYWRlci5oZWFkZXJbImNvbnRlbnQtZW5jb2Rp # bmciXSA9PSAiZ3ppcCIKICAgICAgICAgICNkYXRhCT0gImd6aXAgLWQiLmV4 # ZWMoZGF0YSkJaWYgbm90IGRhdGEubmlsPwogICAgICAgICNlbmQKCiAgICAg # ICAgZGF0YQk9IG5pbAl1bmxlc3MgaGVhZGVyLmNvZGUgPT0gMjAwCiAgICAg # IGVuZAogICAgcmVzY3VlIEVycm5vOjpFQ09OTlJFU0VULCBFcnJubzo6RUhP # U1RVTlJFQUNIID0+IGUKICAgICAgJHN0ZGVyci5wdXRzIGUubWVzc2FnZQog # ICAgICBzbGVlcCAxCiAgICAgIHJldHJ5CiAgICByZXNjdWUgRXJybm86OkVD # T05OUkVGVVNFRCA9PiBlCiAgICAgIGRhdGEJPSBuaWwKICAgIHJlc2N1ZSBO # b0FkZHJlc3NFeGNlcHRpb24sIEVycm5vOjpFQ09OTlJFRlVTRUQgPT4gZQog # ICAgICAkc3RkZXJyLnB1dHMgZS5tZXNzYWdlCiAgICAgIGRhdGEJPSBuaWwK # ICAgIGVuZAoKICAgIEdDLnN0YXJ0CgogICAgcmV0dXJuIGRhdGEKICBlbmQK # CiAgZGVmIHNlbGYuaGVhZF9mcm9tX2NhY2hlKHVyaSwgZm9ybT17fSkKICAg # IGZyb21fY2FjaGUoImhlYWQiLCB1cmksIGZvcm0pCiAgZW5kCgogIGRlZiBz # ZWxmLmdldF9mcm9tX2NhY2hlKHVyaSwgZm9ybT17fSkKICAgIGZyb21fY2Fj # aGUoImdldCIsIHVyaSwgZm9ybSkKICBlbmQKCiAgZGVmIHNlbGYuZnJvbV9j # YWNoZShhY3Rpb24sIHVyaSwgZm9ybSkKICAgIGxvYwkJPSB1cmkudG9fcyAr # IGZvcm0uc29ydC5pbnNwZWN0CiAgICBoYXNoCT0gTUQ1Lm5ldygiI3tAQHZl # cnNpZX0gI3tsb2N9IikKCiAgICBkaXIJCT0gIiN7dGVtcH0vZXZjYWNoZS4j # e3VzZXJ9L2h0dHBjbGllbnQuI3thY3Rpb259IgogICAgZmlsZQk9ICIje2Rp # cn0vI3toYXNofSIKICAgIGRhdGEJPSBuaWwKCiAgICBGaWxlLm1rcGF0aChk # aXIpCgogICAgZXhwaXJlCT0gMzU2KjI0KjYwKjYwCgogICAgaWYgRmlsZS5m # aWxlPyhmaWxlKSBhbmQgKFRpbWUubmV3LnRvX2YgLSBGaWxlLnN0YXQoZmls # ZSkubXRpbWUudG9fZiA8IGV4cGlyZSkKICAgICAgQEBtdXRleC5zeW5jaHJv # bml6ZSBkbwogICAgICAgIEZpbGUub3BlbihmaWxlLCAicmIiKQl7fGZ8IGRh # dGEgPSBmLnJlYWR9CiAgICAgIGVuZAogICAgZWxzZQogICAgICBkYXRhCT0g # bWV0aG9kKGFjdGlvbikuY2FsbCh1cmksIGZvcm0pCgogICAgICBpZiBub3Qg # ZGF0YS5uaWw/CiAgICAgICAgQEBtdXRleC5zeW5jaHJvbml6ZSBkbwogICAg # ICAgICAgRmlsZS5vcGVuKGZpbGUsICJ3YiIpCXt8ZnwgZi53cml0ZSBkYXRh # fQogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiBk # YXRhCiAgZW5kCmVuZAoKY2xhc3MgUmVxdWVzdEdldCA8IEhhc2gKICBkZWYg # aW5pdGlhbGl6ZShkYXRhKQogICAgQ0dJLnBhcnNlKGRhdGEpLmVhY2ggZG8g # fGssIHZ8CiAgICAgIHNlbGZba10JPSB2CiAgICBlbmQKICBlbmQKZW5kCgpj # bGFzcyBSZXF1ZXN0UG9zdCA8IEhhc2gKICBkZWYgaW5pdGlhbGl6ZShkYXRh # KQogICAgQ0dJLnBhcnNlKGRhdGEpLmVhY2ggZG8gfGssIHZ8CiAgICAgIHNl # bGZba10JPSB2CiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBSZXF1ZXN0UmVx # dWVzdAogIGF0dHJfcmVhZGVyIDptZXRob2QKICBhdHRyX3JlYWRlciA6dXJp # CiAgYXR0cl9yZWFkZXIgOnBhdGgKICBhdHRyX3JlYWRlciA6ZGF0YQogIGF0 # dHJfcmVhZGVyIDpwcm90b2NvbAoKICBkZWYgaW5pdGlhbGl6ZShmaXJzdGxp # bmUpCiAgICBAbWV0aG9kLCBAdXJpLCBAcHJvdG9jb2wJPSBmaXJzdGxpbmUu # c3BsaXQoLyAvKQogICAgQHBhdGgsIEBkYXRhCQk9IEB1cmkuc3BsaXQoL1w/ # LykKICAgIEBkYXRhCQkJPSAiIgkJCWlmIEBkYXRhLm5pbD8JIyBUT0RPCgoj # ICAgIGkJPSBAcGF0aC5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykKIyAgICB3 # aGlsZSBub3QgaS5uaWw/CiMgICAgICBAcGF0aAk9IEBwYXRoWzAuLihpLTEp # XSArIEBwYXRoWyhpKzEpLi4oaSsyKV0udW5wYWNrKCdIMicpLnNoaWZ0LnRv # X2kuY2hyICsgQHBhdGhbKGkrMykuLi0xXQojICAgICAgaQk9IEBwYXRoLmlu # ZGV4KC8lW1s6ZGlnaXQ6XV17Mn0vKQojICAgIGVuZAogIGVuZAoKICBkZWYg # dG9fcwogICAgIiN7QG1ldGhvZH0gI3tAdXJpfSAje0Bwcm90b2NvbH1cclxu # IgogIGVuZAoKICBkZWYgaW5zcGVjdAogICAgIihSZXF1ZXN0UmVxdWVzdDog # JXMpIiAlIFtAbWV0aG9kLCBAcGF0aCwgQGRhdGEsIEBwcm90b2NvbF0uam9p # bigiLCAiKQogIGVuZAplbmQKCmNsYXNzIFJlcXVlc3QgPCBIYXNoCiAgYXR0 # cl9yZWFkZXIgOnBlZXJhZGRyCiAgYXR0cl9yZWFkZXIgOnJlcXVlc3QKICBh # dHRyX3JlYWRlciA6Y29va2llcwogIGF0dHJfcmVhZGVyIDp2YXJzCiAgYXR0 # cl9yZWFkZXIgOnVzZXIKICBhdHRyX3dyaXRlciA6dXNlcgoKICBkZWYgaW5p # dGlhbGl6ZShpbykKICAgIEBpbwkJPSBpbwoKICAgIGZpcnN0bGluZQk9IEBp # by5nZXRzCgogICAgcmV0dXJuCWlmIGZpcnN0bGluZS5uaWw/CgogICAgQHJl # cXVlc3QJPSBSZXF1ZXN0UmVxdWVzdC5uZXcoZmlyc3RsaW5lLnN0cmlwKQoK # ICAgIGxpbmUJPSBAaW8uZ2V0cwogICAgbGluZQk9IGxpbmUuc3RyaXAJdW5s # ZXNzIGxpbmUubmlsPwogICAgd2hpbGUgbm90IGxpbmUubmlsPyBhbmQgbm90 # IGxpbmUuZW1wdHk/CiAgICAgIGtleSwgdmFsdWUJPSBsaW5lLnNwbGl0KCIg # IiwgMikKICAgICAgc2VsZltrZXkuc3ViKC86JC8sICIiKS5kb3duY2FzZV0J # PSB2YWx1ZQoKICAgICAgbGluZQk9IEBpby5nZXRzCiAgICAgIGxpbmUJPSBs # aW5lLnN0cmlwCXVubGVzcyBsaW5lLm5pbD8KICAgIGVuZAoKICAgIGNvb2tp # ZQk9IHNlbGZbImNvb2tpZSJdCiAgICBjb29raWUJPSAiIglpZiBjb29raWUu # bmlsPwogICAgQGNvb2tpZXMJPSB7fQogICAgY29va2llLnNwbGl0KC87Lyku # ZWFjaCBkbyB8c3wKICAgICAgaywgdgkJPSBzLnN0cmlwLnNwbGl0KC89Lywg # MikKICAgICAgQGNvb2tpZXNba10JPSB2CiAgICBlbmQKCiAgICBpZiBub3Qg # QHJlcXVlc3QubWV0aG9kLm5pbD8KICAgICAgY2FzZSBAcmVxdWVzdC5tZXRo # b2QudXBjYXNlCiAgICAgIHdoZW4gIkhFQUQiCiAgICAgIHdoZW4gIkdFVCIK # ICAgICAgICBAdmFycwk9IFJlcXVlc3RHZXQubmV3KEByZXF1ZXN0LmRhdGEu # bmlsPyA/ICIiIDogQHJlcXVlc3QuZGF0YSkKICAgICAgd2hlbiAiUE9TVCIK # ICAgICAgICBkYXRhCT0gKEBpby5yZWFkKHNlbGZbImNvbnRlbnQtbGVuZ3Ro # Il0udG9faSkgb3IgIiIpCiAgICAgICAgQHZhcnMJPSBSZXF1ZXN0UG9zdC5u # ZXcoKHNlbGZbImNvbnRlbnQtdHlwZSJdID09ICJhcHBsaWNhdGlvbi94LXd3 # dy1mb3JtLXVybGVuY29kZWQiKSA/IGRhdGEgOiAiIikKICAgICAgZWxzZQog # ICAgICAgICRzdGRlcnIucHV0cyAiVW5rbm93biByZXF1ZXN0ICgnI3tmaXJz # dGxpbmV9JykuIgogICAgICBlbmQKICAgIGVuZAoKICAgIEBwZWVyYWRkcgk9 # IEBpby5wZWVyYWRkcgoKICAgIEBwZGEJPSBmYWxzZQogICAgQHBkYQk9IHRy # dWUJaWYgKHNlbGYuaW5jbHVkZT8oInVzZXItYWdlbnQiKSBhbmQgc2VsZlsi # dXNlci1hZ2VudCJdLmRvd25jYXNlLmluY2x1ZGU/KCJ3aW5kb3dzIGNlIikp # CiAgICBAcGRhCT0gdHJ1ZQlpZiAoc2VsZi5pbmNsdWRlPygidXNlci1hZ2Vu # dCIpIGFuZCBzZWxmWyJ1c2VyLWFnZW50Il0uZG93bmNhc2UuaW5jbHVkZT8o # ImhhbmRodHRwIikpCgogICAgQGlvLmNsb3NlX3JlYWQKICBlbmQKCiAgZGVm # IHBkYT8KICAgIEBwZGEKICBlbmQKCiAgZGVmIHRvX3MKICAgIHJlcyA9IEBy # ZXF1ZXN0LnRvX3MKICAgIHNlbGYuZWFjaCBkbyB8aywgdnwKICAgICAgcmVz # IDw8ICIje2t9OiAje3Z9XHJcbiIKICAgIGVuZAogICAgcmVzCiAgZW5kCgog # IGRlZiBpbnNwZWN0CiAgICAiKFJlcXVlc3Q6ICVzKSIgJSBbQHBlZXJhZGRy # LCBAcmVxdWVzdC5pbnNwZWN0LCBAdmFycy5pbnNwZWN0LCBAY29va2llcy5p # bnNwZWN0LCBzdXBlcl0uam9pbigiLCAiKQogIGVuZAplbmQKCmNsYXNzIFJl # c3BvbnNlIDwgSGFzaAogIGF0dHJfd3JpdGVyIDpyZXNwb25zZQogIGF0dHJf # d3JpdGVyIDpmaWxlCiAgYXR0cl9yZWFkZXIgOmNvb2tpZXMKICBhdHRyX3Jl # YWRlciA6c3RvcAogIGF0dHJfcmVhZGVyIDphdF9zdG9wCgogIGRlZiBpbml0 # aWFsaXplKGlvKQogICAgQGlvCQk9IGlvCiAgICBAcmVzcG9uc2UJPSAiSFRU # UC8xLjAgMjAwIE9LIgogICAgQGNvb2tpZXMJPSB7fQogICAgQGRhdGEJPSAi # IgogICAgQHN5bmNkCT0gZmFsc2UKICAgIEBzdG9wCT0gZmFsc2UKICAgIEBh # dF9zdG9wCT0gbGFtYmRhe30KICAgIEBmaWxlCT0gbmlsCiAgZW5kCgogIGRl # ZiBmbHVzaAogICAgc3luYwoKICAgIGlmIEBmaWxlCiAgICAgIEZpbGUub3Bl # bihAZmlsZSwgInJiIikgZG8gfGZ8CiAgICAgICAgd2hpbGUgZGF0YSA9IGYu # cmVhZCgxMF8wMDApCiAgICAgICAgICBAaW8ud3JpdGUgZGF0YQogICAgICAg # IGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIEBpby5jbG9zZQogIGVuZAoK # ICBkZWYgdG9fcwogICAgcmVzID0gIiN7QHJlc3BvbnNlfVxyXG4iCiAgICBz # ZWxmLmVhY2ggZG8gfGssIHZ8CiAgICAgIHJlcyA8PCAiI3trfTogI3t2fVxy # XG4iCiAgICBlbmQKCiAgICBAY29va2llcy5lYWNoIGRvIHxrLCB2fAogICAg # ICByZXMgPDwgIlNldC1Db29raWU6ICVzPSVzO1xyXG4iICUgW2ssIHZdCiAg # ICBlbmQKCiAgICByZXMKICBlbmQKCiAgZGVmIHN5bmMKICAgIHNpemUJPSAo # QGRhdGEgb3IgIiIpLmxlbmd0aAoKICAgIGlmIEBmaWxlCiAgICAgIGV4dAk9 # IEBmaWxlLnNjYW4oL1wuW15cLl0qJC8pCiAgICAgIGV4dAk9IGV4dC5zaGlm # dAogICAgICBleHQJPSBleHRbMS4uLTFdCXVubGVzcyBleHQubmlsPwogICAg # ICBtaW1ldHlwZQk9IEVWTWltZTo6TWltZVR5cGVbZXh0XQoKICAgICAgc2Vs # ZlsiQ29udGVudC1UeXBlIl0JPSBtaW1ldHlwZQkJdW5sZXNzIG1pbWV0eXBl # Lm5pbD8KCiAgICAgIHNpemUgKz0gRmlsZS5zaXplKEBmaWxlKQlpZiBGaWxl # LmZpbGU/KEBmaWxlKQogICAgZW5kCgogICAgc2VsZlsiQ29udGVudC1MZW5n # dGgiXQk9IHNpemUKCiAgICBAaW8ud3JpdGUoIiN7dG9fc31cclxuIikJdW5s # ZXNzIEBzeW5jZAogICAgQGlvLndyaXRlKEBkYXRhKQogICAgQGRhdGEJPSAi # IgogICAgQHN5bmNkCT0gdHJ1ZQogIGVuZAoKICBkZWYgPDwgKHMpCiAgICBA # ZGF0YSA8PCBzCiAgZW5kCgogIGRlZiBjbGVhbgogICAgQGRhdGEJPSAiIgog # IGVuZAoKICBkZWYgaW5zcGVjdAogICAgIihSZXNwb25zZTogJXMpIiAlIFtA # cmVzcG9uc2UsIEBkYXRhXS5qb2luKCIsICIpCiAgZW5kCgogIGRlZiBzdG9w # KCZibG9jaykKICAgIEBzdG9wCT0gdHJ1ZQogICAgQGF0X3N0b3AJPSBibG9j # awl1bmxlc3MgYmxvY2submlsPwogIGVuZAoKICBkZWYgc3RvcD8KICAgIEBz # dG9wCiAgZW5kCmVuZAoKY2xhc3MgSFRUUFNlcnZlckV4Y2VwdGlvbiA8IEV4 # Y2VwdGlvbgplbmQKCmNsYXNzIEhUVFBTZXJ2ZXIKICBkZWYgc2VsZi5zZXJ2 # ZShwb3J0aW89ODAsIHJlbW90ZT1mYWxzZSwgYXV0aD1uaWwsIHJlYWxtPSJl # di9uZXQiKQogICAgcG9ydCwgc2VydmVyCT0gcG9ydGlvCgogICAgYmVnaW4K # ICAgICAgc2VydmVyCT0gVENQU2VydmVyLm5ldyhyZW1vdGUgPyAiMC4wLjAu # MCIgOiAibG9jYWxob3N0IiwgcG9ydCkJaWYgc2VydmVyLm5pbD8KCiAgICAg # ICRzdGRlcnIucHV0cyAiSnVzdCBwb2ludCB5b3VyIGJyb3dzZXIgdG8gaHR0 # cDovL2xvY2FsaG9zdDoje3BvcnR9LyAuLi4iCiAgICByZXNjdWUKICAgICAg # c2VydmVyCT0gbmlsCgogICAgICAkc3RkZXJyLnB1dHMgIlBvcnQgI3twb3J0 # fSBpcyBpbiB1c2UuIgogICAgZW5kCgogICAgaWYgbm90IHNlcnZlci5uaWw/ # CiAgICAgIGNvdW50CT0gMAoKICAgICAgYXRfZXhpdCBkbwogICAgICAgICMk # c3RkZXJyLnB1dHMgIlJlY2VpdmVkICN7Y291bnR9IHJlcXVlc3RzIgogICAg # ICBlbmQKCiAgICAgIHNlcnZlcnRocmVhZCA9CiAgICAgIFRocmVhZC5uZXcg # ZG8KICAgICAgICBtdXRleAk9IE11dGV4Lm5ldwoKICAgICAgICBUaHJlYWQu # Y3VycmVudFsidGhyZWFkcyJdCT0gW10KCiAgICAgICAgZXZlcnkoMSwgVGhy # ZWFkLmN1cnJlbnQpIGRvIHx0aHJlYWR8CiAgICAgICAgICBtdXRleC5zeW5j # aHJvbml6ZSBkbwogICAgICAgICAgICB0aHJlYWRbInRocmVhZHMiXS5kZWxl # dGVfaWZ7fHR8IChub3QgdC5hbGl2ZT8pfQogICAgICAgICAgZW5kCiAgICAg # ICAgZW5kCgogICAgICAgIGxvb3AgZG8KICAgICAgICAgIGlvCT0gc2VydmVy # LmFjY2VwdAogICAgICAgICAgY291bnQgKz0gMQoKICAgICAgICAgIHRocmVh # ZCA9CiAgICAgICAgICBUaHJlYWQubmV3KFRocmVhZC5jdXJyZW50LCBjb3Vu # dCkgZG8gfHBhcmVudHRocmVhZCwgY291bnQyfAogICAgICAgICAgICBzdG9w # CT0gZmFsc2UKCiAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgYmVn # aW4KICAgICAgICAgICAgICAgIHJlcQk9IFJlcXVlc3QubmV3KGlvKQogICAg # ICAgICAgICAgICAgcmVzcAk9IFJlc3BvbnNlLm5ldyhpbykKICAgICAgICAg # ICAgICByZXNjdWUKICAgICAgICAgICAgICAgIHJhaXNlIEhUVFBTZXJ2ZXJF # eGNlcHRpb24KICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgYmVn # aW4KICAgICAgICAgICAgICAgIGlwCT0gcmVxLnBlZXJhZGRyWzNdCiAgICAg # ICAgICAgICAgcmVzY3VlIE5hbWVFcnJvcgogICAgICAgICAgICAgICAgcmFp # c2UgSFRUUFNlcnZlckV4Y2VwdGlvbgogICAgICAgICAgICAgIGVuZAoKICAg # ICAgICAgICAgICBpZiAobm90IHJlbW90ZSkgb3IgKHJlbW90ZSBhbmQgKGF1 # dGgubmlsPyBvciBhdXRoLmVtcHR5PyBvciBhdXRoZW50aWNhdGUoYXV0aCwg # cmVhbG0sIHJlcSwgcmVzcCkpKQogICAgICAgICAgICAgICAgJHN0ZGVyci5w # dXRzICIje2NvdW50Mn0gI3tUaW1lLm5ldy5zdHJmdGltZSgiJVktJW0tJWQg # JUg6JU06JVMiKX0gI3tpcH0gI3tyZXEudXNlcn0gI3tyZXEucmVxdWVzdC50 # b19zLnN0cmlwfSIKCiAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAg # ICAgICAgICB5aWVsZChyZXEsIHJlc3ApCiAgICAgICAgICAgICAgICByZXNj # dWUgRXhjZXB0aW9uID0+IGUKICAgICAgICAgICAgICAgICAgbXV0ZXguc3lu # Y2hyb25pemUgZG8KICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMg # ZS5jbGFzcy50b19zICsgIjogIiArIGUubWVzc2FnZQogICAgICAgICAgICAg # ICAgICAgICRzdGRlcnIucHV0cyBlLmJhY2t0cmFjZS5jb2xsZWN0e3xzfCAi # XHQiK3N9LmpvaW4oIlxuIikKICAgICAgICAgICAgICAgICAgZW5kCiAgICAg # ICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQtVHlwZSJdCT0gInRleHQvcGxh # aW4iCiAgICAgICAgICAgICAgICAgIHJlc3AucmVzcG9uc2UJCT0gIkhUVFAv # MS4wIDIwMCA/Pz8iCiAgICAgICAgICAgICAgICAgIHJlc3AuY2xlYW4KICAg # ICAgICAgICAgICAgICAgcmVzcCA8PCBlLmNsYXNzLnRvX3MgKyAiOiAiICsg # ZS5tZXNzYWdlCiAgICAgICAgICAgICAgICAgIHJlc3AgPDwgIlxuIgogICAg # ICAgICAgICAgICAgICByZXNwIDw8ICJcbiIKICAgICAgICAgICAgICAgICAg # cmVzcCA8PCBlLmJhY2t0cmFjZS5jb2xsZWN0e3xzfCAiXHQiK3N9LmpvaW4o # IlxuIikKICAgICAgICAgICAgICAgICAgcmVzcCA8PCAiXG4iCiAgICAgICAg # ICAgICAgICAgIHJlc3AgPDwgIlxuIgogICAgICAgICAgICAgICAgICByZXNw # IDw8ICIoWW91IGNhbiB1c2UgdGhlIGJhY2sgYnV0dG9uIGFuZCBzdG9wIHRo # ZSBhcHBsaWNhdGlvbiBwcm9wZXJseSwgaWYgYXBwcm9wcmlhdGUuKSIKICAg # ICAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgICAgIHN0b3AJPSB0cnVl # CWlmIHJlc3Auc3RvcD8KICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAg # ICAgYmVnaW4KICAgICAgICAgICAgICAgIHJlc3AuZmx1c2gJCQkKICAgICAg # ICAgICAgICByZXNjdWUKICAgICAgICAgICAgICAgIHJhaXNlIEhUVFBTZXJ2 # ZXJFeGNlcHRpb24KICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgcmVz # Y3VlIEhUVFBTZXJ2ZXJFeGNlcHRpb24KICAgICAgICAgICAgZW5kCgogICAg # ICAgICAgICBwYXJlbnR0aHJlYWRbInN0b3AiXQk9IHJlc3AJaWYgc3RvcAog # ICAgICAgICAgZW5kCgogICAgICAgICAgbXV0ZXguc3luY2hyb25pemUgZG8K # ICAgICAgICAgICAgVGhyZWFkLmN1cnJlbnRbInRocmVhZHMiXSA8PCB0aHJl # YWQKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKCiAgICAg # IHNsZWVwIDAuMQl3aGlsZSBub3Qgc2VydmVydGhyZWFkWyJzdG9wIl0KCiAg # ICAgIHNlcnZlcnRocmVhZFsidGhyZWFkcyJdLmVhY2gge3x0fCB0LmpvaW59 # CgogICAgICBzZXJ2ZXJ0aHJlYWRbInN0b3AiXS5hdF9zdG9wLmNhbGwKCiAg # ICAgIHNlcnZlcnRocmVhZC5raWxsCiAgICBlbmQKICBlbmQKCiAgZGVmIHNl # bGYuYXV0aGVudGljYXRlKGF1dGgsIHJlYWxtLCByZXEsIHJlc3ApCiAgICBp # ZiBhdXRoLmtpbmRfb2Y/IFN0cmluZwogICAgICBmaWxlCT0gIiN7aG9tZX0v # I3thdXRofSIKICAgICAgYXV0aHMJPSB7fQogICAgICBhdXRocwk9IEhhc2gu # ZmlsZShmaWxlKQlpZiBGaWxlLmZpbGU/KGZpbGUpCiAgICBlbHNlCiAgICAg # IGF1dGhzCT0gYXV0aAogICAgZW5kCgogICAgYXV0aHVzZXJwYXNzd29yZAk9 # IHJlcVsiYXV0aG9yaXphdGlvbiJdCiAgICBpZiBub3QgYXV0aHVzZXJwYXNz # d29yZC5uaWw/CiAgICAgIGF1dGh0eXBlLCB1c2VycGFzc3dvcmQJPSBhdXRo # dXNlcnBhc3N3b3JkLnNwbGl0KC8gLykKICAgICAgaWYgYXV0aHR5cGUgPT0g # IkJhc2ljIiBhbmQgbm90IHVzZXJwYXNzd29yZC5uaWw/CiAgICAgICAgdSwg # cAk9IHVzZXJwYXNzd29yZC51bnBhY2soIm0iKS5zaGlmdC5zcGxpdCgvOi8p # CiAgICAgIGVuZAogICAgZW5kCgogICAgb2sJPSAoYXV0aHMuaW5jbHVkZT8o # dSkgYW5kIGF1dGhzW3VdID09IHApCgogICAgdW5sZXNzIG9rCiAgICAgIHJl # c3BbIldXVy1BdXRoZW50aWNhdGUiXQk9ICJCYXNpYyByZWFsbT1cIiN7cmVh # bG19XCIiCiAgICAgIHJlc3AucmVzcG9uc2UJCT0gIkhUVFAvMS4wIDQwMSBV # bmF1dGhvcml6ZWQiCiAgICBlbmQKCiAgICByZXEudXNlcgk9IHUKCiAgICBy # ZXR1cm4gb2sKICBlbmQKZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE5 # MDAudGFyL2V2L21pbWUucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1 # MAAwMDAxNzUwADAwMDAwMDMxNjEzADEwMjUwMzIwNjE1ADAyMDExNAAgMAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAw # MDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtb2R1bGUg # RVZNaW1lCiAgTWltZVR5cGUgPSB7fQoKICBNaW1lVHlwZVsnMTIzJ10gPSAn # YXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zJwogIE1pbWVUeXBlWyczZHMn # XSA9ICdpbWFnZS94LTNkcycKICBNaW1lVHlwZVsnYSddID0gJ2FwcGxpY2F0 # aW9uL3gtdW5peC1hcmNoaXZlJwogIE1pbWVUeXBlWydhYncnXSA9ICdhcHBs # aWNhdGlvbi94LWFiaXdvcmQnCiAgTWltZVR5cGVbJ2FjMyddID0gJ2F1ZGlv # L2FjMycKICBNaW1lVHlwZVsnYWZtJ10gPSAnYXBwbGljYXRpb24veC1mb250 # LWFmbScKICBNaW1lVHlwZVsnYWcnXSA9ICdpbWFnZS94LWFwcGxpeC1ncmFw # aGljJwogIE1pbWVUeXBlWydhaWYnXSA9ICdhdWRpby94LWFpZmYnCiAgTWlt # ZVR5cGVbJ2FpZmMnXSA9ICdhdWRpby94LWFpZmYnCiAgTWltZVR5cGVbJ2Fp # ZmYnXSA9ICdhdWRpby94LWFpZmYnCiAgTWltZVR5cGVbJ2FwJ10gPSAnYXBw # bGljYXRpb24veC1hcHBsaXgtcHJlc2VudHMnCiAgTWltZVR5cGVbJ2FwZSdd # ID0gJ2FwcGxpY2F0aW9uL3gtYXBlJwogIE1pbWVUeXBlWydhcmonXSA9ICdh # cHBsaWNhdGlvbi94LWFyaicKICBNaW1lVHlwZVsnYXMnXSA9ICdhcHBsaWNh # dGlvbi94LWFwcGxpeC1zcHJlYWRzaGVldCcKICBNaW1lVHlwZVsnYXNjJ10g # PSAndGV4dC9wbGFpbicKICBNaW1lVHlwZVsnYXNmJ10gPSAndmlkZW8veC1t # cy1hc2YnCiAgTWltZVR5cGVbJ2FzcCddID0gJ2FwcGxpY2F0aW9uL3gtYXNw # JwogIE1pbWVUeXBlWydhc3gnXSA9ICdhdWRpby94LW1zLWFzeCcKICBNaW1l # VHlwZVsnYXUnXSA9ICdhdWRpby94LXVsYXcnCiAgTWltZVR5cGVbJ2F2aSdd # ID0gJ3ZpZGVvL3gtbXN2aWRlbycKICBNaW1lVHlwZVsnYXcnXSA9ICdhcHBs # aWNhdGlvbi94LWFwcGxpeC13b3JkJwogIE1pbWVUeXBlWydiYWsnXSA9ICdh # cHBsaWNhdGlvbi94LWJhY2t1cCcKICBNaW1lVHlwZVsnYmNwaW8nXSA9ICdh # cHBsaWNhdGlvbi94LWJjcGlvJwogIE1pbWVUeXBlWydiZGYnXSA9ICdhcHBs # aWNhdGlvbi94LWZvbnQtYmRmJwogIE1pbWVUeXBlWydiaWInXSA9ICd0ZXh0 # L2JpYicKICBNaW1lVHlwZVsnYmluJ10gPSAnYXBwbGljYXRpb24vb2N0ZXQt # c3RyZWFtJwogIE1pbWVUeXBlWydibGVuZCddID0gJ2FwcGxpY2F0aW9uL3gt # YmxlbmRlcicKICBNaW1lVHlwZVsnYmxlbmRlciddID0gJ2FwcGxpY2F0aW9u # L3gtYmxlbmRlcicKICBNaW1lVHlwZVsnYm1wJ10gPSAnaW1hZ2UvYm1wJwog # IE1pbWVUeXBlWydieiddID0gJ2FwcGxpY2F0aW9uL3gtYnppcCcKICBNaW1l # VHlwZVsnYnoyJ10gPSAnYXBwbGljYXRpb24veC1iemlwJwogIE1pbWVUeXBl # WydjJ10gPSAndGV4dC94LWMnCiAgTWltZVR5cGVbJ2MrKyddID0gJ3RleHQv # eC1jKysnCiAgTWltZVR5cGVbJ2NjJ10gPSAndGV4dC94LWMrKycKICBNaW1l # VHlwZVsnY2RmJ10gPSAnYXBwbGljYXRpb24veC1uZXRjZGYnCiAgTWltZVR5 # cGVbJ2NkciddID0gJ2FwcGxpY2F0aW9uL3ZuZC5jb3JlbC1kcmF3JwogIE1p # bWVUeXBlWydjZ2knXSA9ICdhcHBsaWNhdGlvbi94LWNnaScKICBNaW1lVHlw # ZVsnY2dtJ10gPSAnaW1hZ2UvY2dtJwogIE1pbWVUeXBlWydjbGFzcyddID0g # J2FwcGxpY2F0aW9uL3gtamF2YS1ieXRlLWNvZGUnCiAgTWltZVR5cGVbJ2Ns # cyddID0gJ3RleHQveC10ZXgnCiAgTWltZVR5cGVbJ2NwaW8nXSA9ICdhcHBs # aWNhdGlvbi94LWNwaW8nCiAgTWltZVR5cGVbJ2NwcCddID0gJ3RleHQveC1j # KysnCiAgTWltZVR5cGVbJ2NzaCddID0gJ3RleHQveC1jc2gnCiAgTWltZVR5 # cGVbJ2NzcyddID0gJ3RleHQvY3NzJwogIE1pbWVUeXBlWydjc3YnXSA9ICd0 # ZXh0L3gtY29tbWEtc2VwYXJhdGVkLXZhbHVlcycKICBNaW1lVHlwZVsnZGF0 # J10gPSAndmlkZW8vbXBlZycKICBNaW1lVHlwZVsnZGJmJ10gPSAnYXBwbGlj # YXRpb24veC14YmFzZScKICBNaW1lVHlwZVsnZGMnXSA9ICdhcHBsaWNhdGlv # bi94LWRjLXJvbScKICBNaW1lVHlwZVsnZGNsJ10gPSAndGV4dC94LWRjbCcK # ICBNaW1lVHlwZVsnZGNtJ10gPSAnaW1hZ2UveC1kY20nCiAgTWltZVR5cGVb # J2RlYiddID0gJ2FwcGxpY2F0aW9uL3gtZGViJwogIE1pbWVUeXBlWydkZXNr # dG9wJ10gPSAnYXBwbGljYXRpb24veC1nbm9tZS1hcHAtaW5mbycKICBNaW1l # VHlwZVsnZGlhJ10gPSAnYXBwbGljYXRpb24veC1kaWEtZGlhZ3JhbScKICBN # aW1lVHlwZVsnZGlmZiddID0gJ3RleHQveC1wYXRjaCcKICBNaW1lVHlwZVsn # ZGp2J10gPSAnaW1hZ2Uvdm5kLmRqdnUnCiAgTWltZVR5cGVbJ2RqdnUnXSA9 # ICdpbWFnZS92bmQuZGp2dScKICBNaW1lVHlwZVsnZG9jJ10gPSAnYXBwbGlj # YXRpb24vbXN3b3JkJwogIE1pbWVUeXBlWydkc2wnXSA9ICd0ZXh0L3gtZHNs # JwogIE1pbWVUeXBlWydkdGQnXSA9ICd0ZXh0L3gtZHRkJwogIE1pbWVUeXBl # WydkdmknXSA9ICdhcHBsaWNhdGlvbi94LWR2aScKICBNaW1lVHlwZVsnZHdn # J10gPSAnaW1hZ2Uvdm5kLmR3ZycKICBNaW1lVHlwZVsnZHhmJ10gPSAnaW1h # Z2Uvdm5kLmR4ZicKICBNaW1lVHlwZVsnZWwnXSA9ICd0ZXh0L3gtZW1hY3Mt # bGlzcCcKICBNaW1lVHlwZVsnZW1mJ10gPSAnaW1hZ2UveC1lbWYnCiAgTWlt # ZVR5cGVbJ2VwcyddID0gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnCiAgTWlt # ZVR5cGVbJ2V0aGVtZSddID0gJ2FwcGxpY2F0aW9uL3gtZS10aGVtZScKICBN # aW1lVHlwZVsnZXR4J10gPSAndGV4dC94LXNldGV4dCcKICBNaW1lVHlwZVsn # ZXhlJ10gPSAnYXBwbGljYXRpb24veC1tcy1kb3MtZXhlY3V0YWJsZScKICBN # aW1lVHlwZVsnZXonXSA9ICdhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXQnCiAg # TWltZVR5cGVbJ2YnXSA9ICd0ZXh0L3gtZm9ydHJhbicKICBNaW1lVHlwZVsn # ZmlnJ10gPSAnaW1hZ2UveC14ZmlnJwogIE1pbWVUeXBlWydmaXRzJ10gPSAn # aW1hZ2UveC1maXRzJwogIE1pbWVUeXBlWydmbGFjJ10gPSAnYXVkaW8veC1m # bGFjJwogIE1pbWVUeXBlWydmbGMnXSA9ICd2aWRlby94LWZsYycKICBNaW1l # VHlwZVsnZmxpJ10gPSAndmlkZW8veC1mbGknCiAgTWltZVR5cGVbJ2diJ10g # PSAnYXBwbGljYXRpb24veC1nYW1lYm95LXJvbScKICBNaW1lVHlwZVsnZ2No # ZW1wYWludCddID0gJ2FwcGxpY2F0aW9uL3gtZ2NoZW1wYWludCcKICBNaW1l # VHlwZVsnZ2NyZCddID0gJ3RleHQveC12Y2FyZCcKICBNaW1lVHlwZVsnZ2Ny # eXN0YWwnXSA9ICdhcHBsaWNhdGlvbi94LWdjcnlzdGFsJwogIE1pbWVUeXBl # WydnZW0nXSA9ICd0ZXh0L3gtcnVieWdlbScKICBNaW1lVHlwZVsnZ2VuJ10g # PSAnYXBwbGljYXRpb24veC1nZW5lc2lzLXJvbScKICBNaW1lVHlwZVsnZ2cn # XSA9ICdhcHBsaWNhdGlvbi94LXNtcy1yb20nCiAgTWltZVR5cGVbJ2dpZidd # ID0gJ2ltYWdlL2dpZicKICBNaW1lVHlwZVsnZ2xhZGUnXSA9ICdhcHBsaWNh # dGlvbi94LWdsYWRlJwogIE1pbWVUeXBlWydnbmMnXSA9ICdhcHBsaWNhdGlv # bi94LWdudWNhc2gnCiAgTWltZVR5cGVbJ2dudWNhc2gnXSA9ICdhcHBsaWNh # dGlvbi94LWdudWNhc2gnCiAgTWltZVR5cGVbJ2dudW1lcmljJ10gPSAnYXBw # bGljYXRpb24veC1nbnVtZXJpYycKICBNaW1lVHlwZVsnZ3JheSddID0gJ2lt # YWdlL3gtZ3JheScKICBNaW1lVHlwZVsnZ3RhciddID0gJ2FwcGxpY2F0aW9u # L3gtZ3RhcicKICBNaW1lVHlwZVsnZ3onXSA9ICdhcHBsaWNhdGlvbi94LWd6 # aXAnCiAgTWltZVR5cGVbJ2gnXSA9ICd0ZXh0L3gtYy1oZWFkZXInCiAgTWlt # ZVR5cGVbJ2grKyddID0gJ3RleHQveC1jLWhlYWRlcicKICBNaW1lVHlwZVsn # aGRmJ10gPSAnYXBwbGljYXRpb24veC1oZGYnCiAgTWltZVR5cGVbJ2hsbHMn # XSA9ICd0ZXh0L3gtaGxsYXBpc2NyaXB0JwogIE1pbWVUeXBlWydocHAnXSA9 # ICd0ZXh0L3gtYy1oZWFkZXInCiAgTWltZVR5cGVbJ2hzJ10gPSAndGV4dC94 # LWhhc2tlbGwnCiAgTWltZVR5cGVbJ2h0bSddID0gJ3RleHQvaHRtbCcKICBN # aW1lVHlwZVsnaHRtbCddID0gJ3RleHQvaHRtbCcKICBNaW1lVHlwZVsnaWNi # J10gPSAnaW1hZ2UveC1pY2InCiAgTWltZVR5cGVbJ2ljbyddID0gJ2ltYWdl # L3gtaWNvJwogIE1pbWVUeXBlWydpY3MnXSA9ICd0ZXh0L2NhbGVuZGFyJwog # IE1pbWVUeXBlWydpZGwnXSA9ICd0ZXh0L3gtaWRsJwogIE1pbWVUeXBlWydp # ZWYnXSA9ICdpbWFnZS9pZWYnCiAgTWltZVR5cGVbJ2lmZiddID0gJ2ltYWdl # L3gtaWZmJwogIE1pbWVUeXBlWydpbGJtJ10gPSAnaW1hZ2UveC1pbGJtJwog # IE1pbWVUeXBlWydpc28nXSA9ICdhcHBsaWNhdGlvbi94LWlzby1pbWFnZScK # ICBNaW1lVHlwZVsnaXQnXSA9ICdhdWRpby94LWl0JwogIE1pbWVUeXBlWydq # YXInXSA9ICdhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZScKICBNaW1lVHlw # ZVsnamF2YSddID0gJ3RleHQveC1qYXZhJwogIE1pbWVUeXBlWydqcGUnXSA9 # ICdpbWFnZS9qcGVnJwogIE1pbWVUeXBlWydqcGVnJ10gPSAnaW1hZ2UvanBl # ZycKICBNaW1lVHlwZVsnanBnJ10gPSAnaW1hZ2UvanBlZycKICBNaW1lVHlw # ZVsnanByJ10gPSAnYXBwbGljYXRpb24veC1qYnVpbGRlci1wcm9qZWN0Jwog # IE1pbWVUeXBlWydqcHgnXSA9ICdhcHBsaWNhdGlvbi94LWpidWlsZGVyLXBy # b2plY3QnCiAgTWltZVR5cGVbJ2pzJ10gPSAndGV4dC94LWphdmFzY3JpcHQn # CiAgTWltZVR5cGVbJ2tkZWxuayddID0gJ2FwcGxpY2F0aW9uL3gta2RlLWFw # cC1pbmZvJwogIE1pbWVUeXBlWydraWwnXSA9ICdhcHBsaWNhdGlvbi94LWtp # bGx1c3RyYXRvcicKICBNaW1lVHlwZVsna3ByJ10gPSAnYXBwbGljYXRpb24v # eC1rcHJlc2VudGVyJwogIE1pbWVUeXBlWydrc3AnXSA9ICdhcHBsaWNhdGlv # bi94LWtzcHJlYWQnCiAgTWltZVR5cGVbJ2t3ZCddID0gJ2FwcGxpY2F0aW9u # L3gta3dvcmQnCiAgTWltZVR5cGVbJ2xhJ10gPSAnYXBwbGljYXRpb24veC1z # aGFyZWQtbGlicmFyeS1sYScKICBNaW1lVHlwZVsnbGhhJ10gPSAnYXBwbGlj # YXRpb24veC1saGEnCiAgTWltZVR5cGVbJ2xocyddID0gJ3RleHQveC1saXRl # cmF0ZS1oYXNrZWxsJwogIE1pbWVUeXBlWydsaHonXSA9ICdhcHBsaWNhdGlv # bi94LWxoeicKICBNaW1lVHlwZVsnbG8nXSA9ICdhcHBsaWNhdGlvbi94LW9i # amVjdC1maWxlJwogIE1pbWVUeXBlWydsdHgnXSA9ICd0ZXh0L3gtdGV4Jwog # IE1pbWVUeXBlWydsd28nXSA9ICdpbWFnZS94LWx3bycKICBNaW1lVHlwZVsn # bHdvYiddID0gJ2ltYWdlL3gtbHdvJwogIE1pbWVUeXBlWydsd3MnXSA9ICdp # bWFnZS94LWx3cycKICBNaW1lVHlwZVsnbHl4J10gPSAndGV4dC94LWx5eCcK # ICBNaW1lVHlwZVsnbSddID0gJ3RleHQveC1vYmpjJwogIE1pbWVUeXBlWydt # M3UnXSA9ICdhdWRpby94LW1wZWd1cmwnCiAgTWltZVR5cGVbJ200YSddID0g # J2F1ZGlvL3gtbTRhJwogIE1pbWVUeXBlWydtYW4nXSA9ICd0ZXh0L3gtdHJv # ZmYtbWFuJwogIE1pbWVUeXBlWydtZCddID0gJ2FwcGxpY2F0aW9uL3gtZ2Vu # ZXNpcy1yb20nCiAgTWltZVR5cGVbJ21lJ10gPSAndGV4dC94LXRyb2ZmLW1l # JwogIE1pbWVUeXBlWydtZ3AnXSA9ICdhcHBsaWNhdGlvbi94LW1hZ2ljcG9p # bnQnCiAgTWltZVR5cGVbJ21pZCddID0gJ2F1ZGlvL3gtbWlkaScKICBNaW1l # VHlwZVsnbWlkaSddID0gJ2F1ZGlvL3gtbWlkaScKICBNaW1lVHlwZVsnbWlm # J10gPSAnYXBwbGljYXRpb24veC1taWYnCiAgTWltZVR5cGVbJ21pZmYnXSA9 # ICdpbWFnZS94LW1pZmYnCiAgTWltZVR5cGVbJ21tJ10gPSAndGV4dC94LXRy # b2ZmLW1tJwogIE1pbWVUeXBlWydtbWwnXSA9ICd0ZXh0L21hdGhtbCcKICBN # aW1lVHlwZVsnbW9kJ10gPSAnYXVkaW8veC1tb2QnCiAgTWltZVR5cGVbJ21v # diddID0gJ3ZpZGVvL3F1aWNrdGltZScKICBNaW1lVHlwZVsnbW92aWUnXSA9 # ICd2aWRlby94LXNnaS1tb3ZpZScKICBNaW1lVHlwZVsnbXAxJ10gPSAnYXVk # aW8vbXBlZycKICBNaW1lVHlwZVsnbXAyJ10gPSAndmlkZW8vbXBlZycKICBN # aW1lVHlwZVsnbXAzJ10gPSAnYXVkaW8vbXBlZycKICBNaW1lVHlwZVsnbXBl # J10gPSAndmlkZW8vbXBlZycKICBNaW1lVHlwZVsnbXBlZyddID0gJ3ZpZGVv # L21wZWcnCiAgTWltZVR5cGVbJ21wZyddID0gJ3ZpZGVvL21wZWcnCiAgTWlt # ZVR5cGVbJ21ycCddID0gJ2FwcGxpY2F0aW9uL3gtbXJwcm9qZWN0JwogIE1p # bWVUeXBlWydtcnByb2plY3QnXSA9ICdhcHBsaWNhdGlvbi94LW1ycHJvamVj # dCcKICBNaW1lVHlwZVsnbXMnXSA9ICd0ZXh0L3gtdHJvZmYtbXMnCiAgTWlt # ZVR5cGVbJ21zeCddID0gJ2FwcGxpY2F0aW9uL3gtbXN4LXJvbScKICBNaW1l # VHlwZVsnbjY0J10gPSAnYXBwbGljYXRpb24veC1uNjQtcm9tJwogIE1pbWVU # eXBlWyduYyddID0gJ2FwcGxpY2F0aW9uL3gtbmV0Y2RmJwogIE1pbWVUeXBl # WyduZXMnXSA9ICdhcHBsaWNhdGlvbi94LW5lcy1yb20nCiAgTWltZVR5cGVb # J25zdiddID0gJ3ZpZGVvL3gtbnN2JwogIE1pbWVUeXBlWydvJ10gPSAnYXBw # bGljYXRpb24veC1vYmplY3QtZmlsZScKICBNaW1lVHlwZVsnb2RhJ10gPSAn # YXBwbGljYXRpb24vb2RhJwogIE1pbWVUeXBlWydvZ2cnXSA9ICdhcHBsaWNh # dGlvbi9vZ2cnCiAgTWltZVR5cGVbJ29sZW8nXSA9ICdhcHBsaWNhdGlvbi94 # LW9sZW8nCiAgTWltZVR5cGVbJ3AnXSA9ICd0ZXh0L3gtcGFzY2FsJwogIE1p # bWVUeXBlWydwYWxtJ10gPSAnaW1hZ2UveC1wYWxtJwogIE1pbWVUeXBlWydw # YXMnXSA9ICd0ZXh0L3gtcGFzY2FsJwogIE1pbWVUeXBlWydwYXNjYWwnXSA9 # ICd0ZXh0L3gtcGFzY2FsJwogIE1pbWVUeXBlWydwYXRjaCddID0gJ3RleHQv # eC1wYXRjaCcKICBNaW1lVHlwZVsncGJtJ10gPSAnaW1hZ2UveC1wb3J0YWJs # ZS1iaXRtYXAnCiAgTWltZVR5cGVbJ3BjZCddID0gJ2ltYWdlL3gtcGhvdG8t # Y2QnCiAgTWltZVR5cGVbJ3BjZiddID0gJ2FwcGxpY2F0aW9uL3gtZm9udC1w # Y2YnCiAgTWltZVR5cGVbJ3BjdCddID0gJ2ltYWdlL3gtcGljdCcKICBNaW1l # VHlwZVsncGN4J10gPSAnaW1hZ2UveC1wY3gnCiAgTWltZVR5cGVbJ3BkYidd # ID0gJ2FwcGxpY2F0aW9uL3gtcGFsbS1kYXRhYmFzZScKICBNaW1lVHlwZVsn # cGRmJ10gPSAnYXBwbGljYXRpb24vcGRmJwogIE1pbWVUeXBlWydwZXJsJ10g # PSAndGV4dC94LXBlcmwnCiAgTWltZVR5cGVbJ3BmYSddID0gJ2FwcGxpY2F0 # aW9uL3gtZm9udC10eXBlMScKICBNaW1lVHlwZVsncGZiJ10gPSAnYXBwbGlj # YXRpb24veC1mb250LXR5cGUxJwogIE1pbWVUeXBlWydwZ20nXSA9ICdpbWFn # ZS94LXBvcnRhYmxlLWdyYXltYXAnCiAgTWltZVR5cGVbJ3BnbiddID0gJ2Fw # cGxpY2F0aW9uL3gtY2hlc3MtcGduJwogIE1pbWVUeXBlWydwZ3AnXSA9ICdh # cHBsaWNhdGlvbi9wZ3AnCiAgTWltZVR5cGVbJ3BocCddID0gJ2FwcGxpY2F0 # aW9uL3gtcGhwJwogIE1pbWVUeXBlWydwaHAzJ10gPSAnYXBwbGljYXRpb24v # eC1waHAnCiAgTWltZVR5cGVbJ3BocDQnXSA9ICdhcHBsaWNhdGlvbi94LXBo # cCcKICBNaW1lVHlwZVsncGljdCddID0gJ2ltYWdlL3gtcGljdCcKICBNaW1l # VHlwZVsncGwnXSA9ICd0ZXh0L3gtcGVybCcKICBNaW1lVHlwZVsncGxzJ10g # PSAnYXVkaW8veC1zY3BscycKICBNaW1lVHlwZVsncG0nXSA9ICd0ZXh0L3gt # cGVybCcKICBNaW1lVHlwZVsncG5nJ10gPSAnaW1hZ2UvcG5nJwogIE1pbWVU # eXBlWydwbm0nXSA9ICdpbWFnZS94LXBvcnRhYmxlLWFueW1hcCcKICBNaW1l # VHlwZVsncG8nXSA9ICd0ZXh0L3gtcG8nCiAgTWltZVR5cGVbJ3BwJ10gPSAn # dGV4dC94LXBhc2NhbCcKICBNaW1lVHlwZVsncHBtJ10gPSAnaW1hZ2UveC1w # b3J0YWJsZS1waXhtYXAnCiAgTWltZVR5cGVbJ3BwcyddID0gJ2FwcGxpY2F0 # aW9uL3ZuZC5tcy1wb3dlcnBvaW50JwogIE1pbWVUeXBlWydwcHQnXSA9ICdh # cHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcKICBNaW1lVHlwZVsncHMn # XSA9ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JwogIE1pbWVUeXBlWydwc2Qn # XSA9ICdpbWFnZS94LXBzZCcKICBNaW1lVHlwZVsncHNmJ10gPSAnYXBwbGlj # YXRpb24veC1mb250LWxpbnV4LXBzZicKICBNaW1lVHlwZVsncHNpZCddID0g # J2F1ZGlvL3Bycy5zaWQnCiAgTWltZVR5cGVbJ3B5J10gPSAndGV4dC94LXB5 # dGhvbicKICBNaW1lVHlwZVsncHljJ10gPSAnYXBwbGljYXRpb24veC1weXRo # b24tYnl0ZS1jb2RlJwogIE1pbWVUeXBlWydxaWYnXSA9ICdhcHBsaWNhdGlv # bi9xaWYnCiAgTWltZVR5cGVbJ3F0J10gPSAndmlkZW8vcXVpY2t0aW1lJwog # IE1pbWVUeXBlWydyYSddID0gJ2F1ZGlvL3gtcmVhbC1hdWRpbycKICBNaW1l # VHlwZVsncmFtJ10gPSAnYXVkaW8veC1wbi1yZWFsYXVkaW8nCiAgTWltZVR5 # cGVbJ3JhciddID0gJ2FwcGxpY2F0aW9uL3gtcmFyJwogIE1pbWVUeXBlWydy # YXMnXSA9ICdpbWFnZS94LWNtdS1yYXN0ZXInCiAgTWltZVR5cGVbJ3JiJ10g # PSAndGV4dC94LXJ1YnknCiAgTWltZVR5cGVbJ3JiYSddID0gJ3RleHQveC1y # dWJ5JwogIE1pbWVUeXBlWydyYncnXSA9ICd0ZXh0L3gtcnVieScKICBNaW1l # VHlwZVsncmVqJ10gPSAnYXBwbGljYXRpb24veC1yZWplY3QnCiAgTWltZVR5 # cGVbJ3JnYiddID0gJ2ltYWdlL3gtcmdiJwogIE1pbWVUeXBlWydybSddID0g # J2F1ZGlvL3gtcmVhbC1hdWRpbycKICBNaW1lVHlwZVsncm9mZiddID0gJ3Rl # eHQveC10cm9mZicKICBNaW1lVHlwZVsncnBtJ10gPSAnYXBwbGljYXRpb24v # eC1ycG0nCiAgTWltZVR5cGVbJ3J0ZiddID0gJ2FwcGxpY2F0aW9uL3J0ZicK # ICBNaW1lVHlwZVsncnR4J10gPSAndGV4dC9yaWNodGV4dCcKICBNaW1lVHlw # ZVsncnVieSddID0gJ3RleHQveC1ydWJ5JwogIE1pbWVUeXBlWydydWJ5dydd # ID0gJ3RleHQveC1ydWJ5JwogIE1pbWVUeXBlWydydiddID0gJ2F1ZGlvL3gt # cmVhbC1hdWRpbycKICBNaW1lVHlwZVsncyddID0gJ3RleHQveC1hc20nCiAg # TWltZVR5cGVbJ3MzbSddID0gJ2F1ZGlvL3gtczNtJwogIE1pbWVUeXBlWydz # Y20nXSA9ICd0ZXh0L3gtc2NoZW1lJwogIE1pbWVUeXBlWydzZGEnXSA9ICdh # cHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXcnCiAgTWltZVR5cGVb # J3NkYyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2FsYycK # ICBNaW1lVHlwZVsnc2RkJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZp # c2lvbi5pbXByZXNzJwogIE1pbWVUeXBlWydzZHAnXSA9ICdhcHBsaWNhdGlv # bi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MnCiAgTWltZVR5cGVbJ3Nkcydd # ID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2hhcnQnCiAgTWlt # ZVR5cGVbJ3NkdyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24u # d3JpdGVyJwogIE1pbWVUeXBlWydzZ2knXSA9ICdpbWFnZS94LXNnaScKICBN # aW1lVHlwZVsnc2dsJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lv # bi53cml0ZXInCiAgTWltZVR5cGVbJ3NnbSddID0gJ3RleHQvc2dtbCcKICBN # aW1lVHlwZVsnc2dtbCddID0gJ3RleHQvc2dtbCcKICBNaW1lVHlwZVsnc2gn # XSA9ICd0ZXh0L3gtc2gnCiAgTWltZVR5cGVbJ3NoYXInXSA9ICdhcHBsaWNh # dGlvbi94LXNoYXInCiAgTWltZVR5cGVbJ3NpZCddID0gJ2F1ZGlvL3Bycy5z # aWQnCiAgTWltZVR5cGVbJ3NsayddID0gJ3RleHQvc3ByZWFkc2hlZXQnCiAg # TWltZVR5cGVbJ3NtZCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNp # b24ubWFpbCcKICBNaW1lVHlwZVsnc21mJ10gPSAnYXBwbGljYXRpb24vdm5k # LnN0YXJkaXZpc2lvbi5tYXRoJwogIE1pbWVUeXBlWydzbWknXSA9ICdhcHBs # aWNhdGlvbi94LXNtaWwnCiAgTWltZVR5cGVbJ3NtaWwnXSA9ICdhcHBsaWNh # dGlvbi94LXNtaWwnCiAgTWltZVR5cGVbJ3NtbCddID0gJ2FwcGxpY2F0aW9u # L3gtc21pbCcKICBNaW1lVHlwZVsnc21zJ10gPSAnYXBwbGljYXRpb24veC1z # bXMtcm9tJwogIE1pbWVUeXBlWydzbmQnXSA9ICdhdWRpby9iYXNpYycKICBN # aW1lVHlwZVsnc28nXSA9ICdhcHBsaWNhdGlvbi94LXNoYXJlZC1saWJyYXJ5 # JwogIE1pbWVUeXBlWydzcGQnXSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtc3Bl # ZWRvJwogIE1pbWVUeXBlWydzcWwnXSA9ICd0ZXh0L3gtc3FsJwogIE1pbWVU # eXBlWydzcmMnXSA9ICdhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlJwogIE1p # bWVUeXBlWydzdGMnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxj # LnRlbXBsYXRlJwogIE1pbWVUeXBlWydzdGQnXSA9ICdhcHBsaWNhdGlvbi92 # bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlJwogIE1pbWVUeXBlWydzdGknXSA9 # ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlJwog # IE1pbWVUeXBlWydzdG0nXSA9ICdhdWRpby94LXN0bScKICBNaW1lVHlwZVsn # c3R3J10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBs # YXRlJwogIE1pbWVUeXBlWydzdHknXSA9ICd0ZXh0L3gtdGV4JwogIE1pbWVU # eXBlWydzdW4nXSA9ICdpbWFnZS94LXN1bi1yYXN0ZXInCiAgTWltZVR5cGVb # J3N2NGNwaW8nXSA9ICdhcHBsaWNhdGlvbi94LXN2NGNwaW8nCiAgTWltZVR5 # cGVbJ3N2NGNyYyddID0gJ2FwcGxpY2F0aW9uL3gtc3Y0Y3JjJwogIE1pbWVU # eXBlWydzdmcnXSA9ICdpbWFnZS9zdmcreG1sJwogIE1pbWVUeXBlWydzdmd6 # J10gPSAnaW1hZ2Uvc3ZnK3htbCcKICBNaW1lVHlwZVsnc3dmJ10gPSAnYXBw # bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnCiAgTWltZVR5cGVbJ3N4Yydd # ID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGMnCiAgTWltZVR5cGVb # J3N4ZCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcnCiAgTWlt # ZVR5cGVbJ3N4ZyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRl # ci5nbG9iYWwnCiAgTWltZVR5cGVbJ3N4aSddID0gJ2FwcGxpY2F0aW9uL3Zu # ZC5zdW4ueG1sLmltcHJlc3MnCiAgTWltZVR5cGVbJ3N4bSddID0gJ2FwcGxp # Y2F0aW9uL3ZuZC5zdW4ueG1sLm1hdGgnCiAgTWltZVR5cGVbJ3N4dyddID0g # J2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlcicKICBNaW1lVHlwZVsn # c3lsayddID0gJ3RleHQvc3ByZWFkc2hlZXQnCiAgTWltZVR5cGVbJ3QnXSA9 # ICd0ZXh0L3gtdHJvZmYnCiAgTWltZVR5cGVbJ3RhciddID0gJ2FwcGxpY2F0 # aW9uL3gtdGFyJwogIE1pbWVUeXBlWyd0Y2wnXSA9ICd0ZXh0L3gtdGNsJwog # IE1pbWVUeXBlWyd0ZXgnXSA9ICd0ZXh0L3gtdGV4JwogIE1pbWVUeXBlWyd0 # ZXhpJ10gPSAndGV4dC94LXRleGluZm8nCiAgTWltZVR5cGVbJ3RleGluZm8n # XSA9ICd0ZXh0L3gtdGV4aW5mbycKICBNaW1lVHlwZVsndGdhJ10gPSAnaW1h # Z2UveC10Z2EnCiAgTWltZVR5cGVbJ3RneiddID0gJ2FwcGxpY2F0aW9uL3gt # Y29tcHJlc3NlZC10YXInCiAgTWltZVR5cGVbJ3RoZW1lJ10gPSAnYXBwbGlj # YXRpb24veC10aGVtZScKICBNaW1lVHlwZVsndGlmJ10gPSAnaW1hZ2UvdGlm # ZicKICBNaW1lVHlwZVsndGlmZiddID0gJ2ltYWdlL3RpZmYnCiAgTWltZVR5 # cGVbJ3RvcnJlbnQnXSA9ICdhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnQnCiAg # TWltZVR5cGVbJ3RyJ10gPSAndGV4dC94LXRyb2ZmJwogIE1pbWVUeXBlWyd0 # c3YnXSA9ICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzJwogIE1pbWVUeXBl # Wyd0dGMnXSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtdHRmJwogIE1pbWVUeXBl # Wyd0dGYnXSA9ICdhcHBsaWNhdGlvbi94LWZvbnQtdHRmJwogIE1pbWVUeXBl # Wyd0eHQnXSA9ICd0ZXh0L3BsYWluJwogIE1pbWVUeXBlWyd1c3RhciddID0g # J2FwcGxpY2F0aW9uL3gtdXN0YXInCiAgTWltZVR5cGVbJ3ZjZiddID0gJ3Rl # eHQveC12Y2FsZW5kYXInCiAgTWltZVR5cGVbJ3ZjcyddID0gJ3RleHQveC12 # Y2FsZW5kYXInCiAgTWltZVR5cGVbJ3ZpJ10gPSAndGV4dC94LXZpJwogIE1p # bWVUeXBlWyd2aW0nXSA9ICd0ZXh0L3gtdmknCiAgTWltZVR5cGVbJ3Zpdidd # ID0gJ3ZpZGVvL3ZuZC52aXZvJwogIE1pbWVUeXBlWyd2aXZvJ10gPSAndmlk # ZW8vdm5kLnZpdm8nCiAgTWltZVR5cGVbJ3ZvYiddID0gJ3ZpZGVvL21wZWcn # CiAgTWltZVR5cGVbJ3ZvYyddID0gJ2F1ZGlvL3gtdm9jJwogIE1pbWVUeXBl # Wyd2b3InXSA9ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRl # cicKICBNaW1lVHlwZVsnd2F2J10gPSAnYXVkaW8veC13YXYnCiAgTWltZVR5 # cGVbJ3dheCddID0gJ2F1ZGlvL3gtbXMtYXN4JwogIE1pbWVUeXBlWyd3azEn # XSA9ICdhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMnCiAgTWltZVR5cGVb # J3drMyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItMycKICBNaW1l # VHlwZVsnd2s0J10gPSAnYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zJwog # IE1pbWVUeXBlWyd3a3MnXSA9ICdhcHBsaWNhdGlvbi92bmQubG90dXMtMS0y # LTMnCiAgTWltZVR5cGVbJ3dtZiddID0gJ2ltYWdlL3gtd21mJwogIE1pbWVU # eXBlWyd3bXYnXSA9ICd2aWRlby94LW1zLXdtdicKICBNaW1lVHlwZVsnd3Js # J10gPSAnbW9kZWwvdnJtbCcKICBNaW1lVHlwZVsnd3Z4J10gPSAndmlkZW8v # eC1tcy13dngnCiAgTWltZVR5cGVbJ3hhYyddID0gJ2FwcGxpY2F0aW9uL3gt # Z251Y2FzaCcKICBNaW1lVHlwZVsneGJlbCddID0gJ2FwcGxpY2F0aW9uL3hi # ZWwnCiAgTWltZVR5cGVbJ3hibSddID0gJ2ltYWdlL3gteGJpdG1hcCcKICBN # aW1lVHlwZVsneGNmJ10gPSAnaW1hZ2UveC14Y2YnCiAgTWltZVR5cGVbJ3hp # J10gPSAnYXVkaW8veC14aScKICBNaW1lVHlwZVsneGxhJ10gPSAnYXBwbGlj # YXRpb24vdm5kLm1zLWV4Y2VsJwogIE1pbWVUeXBlWyd4bGMnXSA9ICdhcHBs # aWNhdGlvbi92bmQubXMtZXhjZWwnCiAgTWltZVR5cGVbJ3hsZCddID0gJ2Fw # cGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcKICBNaW1lVHlwZVsneGxzJ10gPSAn # YXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJwogIE1pbWVUeXBlWyd4bHQnXSA9 # ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnCiAgTWltZVR5cGVbJ3htJ10g # PSAnYXVkaW8veC14bScKICBNaW1lVHlwZVsneG1sJ10gPSAndGV4dC94bWwn # CiAgTWltZVR5cGVbJ3hwbSddID0gJ2ltYWdlL3gteHBpeG1hcCcKICBNaW1l # VHlwZVsneHdkJ10gPSAnaW1hZ2UveC14d2luZG93ZHVtcCcKICBNaW1lVHlw # ZVsneSddID0gJ3RleHQveC15YWNjJwogIE1pbWVUeXBlWyd5YWNjJ10gPSAn # dGV4dC94LXlhY2MnCiAgTWltZVR5cGVbJ3onXSA9ICdhcHBsaWNhdGlvbi94 # LWNvbXByZXNzJwogIE1pbWVUeXBlWyd6aXAnXSA9ICdhcHBsaWNhdGlvbi96 # aXAnCiAgTWltZVR5cGVbJ3pvbyddID0gJ2FwcGxpY2F0aW9uL3gtem9vJwpl # bmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2Ny # aXB0LmYuMTE5MDAudGFyL2V2L2Jyb3dzZXIucmIAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3 # NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDA1MjA3ADEwMjUwMzIwNjE1ADAy # MDY1MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw # MDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAByZXF1aXJlICJldi9ydWJ5IgpyZXF1aXJlICJldi9uZXQiCgpiZWdpbgog # IHJlcXVpcmUgIndpbjMyb2xlIgogIHJlcXVpcmUgIndpbjMyL3JlZ2lzdHJ5 # IgpyZXNjdWUgTG9hZEVycm9yCiAgJCIucHVzaCAid2luMzJvbGUuc28iCiAg # JCIucHVzaCAid2luMzIvcmVnaXN0cnkucmIiCmVuZAoKZGVmIHdpbmRvd3Ni # cm93c2VyCiAgJHN0ZGVyci5wdXRzICJMb29raW5nIGZvciBkZWZhdWx0IGJy # b3dzZXIuLi4iCgogIGZpbGV0eXBlCT0gImh0bWxmaWxlIgogIGFwcGxpY2F0 # aW9uCT0gbmlsCgogIGJlZ2luCiAgICBXaW4zMjo6UmVnaXN0cnk6OkhLRVlf # Q0xBU1NFU19ST09ULm9wZW4oIi5odG1sIikgZG8gfHJlZ3wKICAgICAgZmls # ZXR5cGUJCT0gcmVnWyIiXQogICAgZW5kCgogICAgV2luMzI6OlJlZ2lzdHJ5 # OjpIS0VZX0NMQVNTRVNfUk9PVC5vcGVuKGZpbGV0eXBlICsgIlxcc2hlbGxc # XG9wZW5cXGNvbW1hbmQiKSBkbyB8cmVnfAogICAgICBhcHBsaWNhdGlvbgk9 # IHJlZ1siIl0KICAgIGVuZAogIHJlc2N1ZSBOYW1lRXJyb3IKICAgICRzdGRl # cnIucHV0cyAiT25seSBhdmFpbGFibGUgZm9yIFdpbmRvd3MgYW5kIEN5Z3dp # bi4iCiAgZW5kCgogIGFwcGxpY2F0aW9uCmVuZAoKZGVmIGN5Z3dpbmJyb3dz # ZXIKICBicm93c2VyLCAqYXJncwk9IHdpbmRvd3Nicm93c2VyLnNwbGl0d29y # ZHMKICBicm93c2VyCQk9IGJyb3dzZXIuZ3N1YigvXFwvLCAiLyIpCiAgI2Jy # b3dzZXIJCT0gYnJvd3NlcgoKICBhcmdzLmNvbGxlY3Qhe3xhfCBhLmdzdWIo # L1xcLywgIi8iKX0KICAjYXJncy5jb2xsZWN0IXt8YXwgIlwiJXNcIiIgJSBb # YS5nc3ViKC9cXC8sICIvIildfQogICNhcmdzLmNvbGxlY3Qhe3xhfCAiXCIl # c1wiIiAlIFthXX0KCiAgcmVzCT0gIlwiJXNcIiAlcyIgJSBbYnJvd3Nlciwg # YXJncy5qb2luKCIgIildCiAgcmVzCmVuZAoKZGVmIGxpbnV4YnJvd3Nlcgog # IGFwcGxpY2F0aW9uCT0gIiIKCiAgYXBwbGljYXRpb24JPSBgd2hpY2ggZ2Fs # ZW9uCQkyPiAvZGV2L251bGxgLmNob21wCWlmIGFwcGxpY2F0aW9uLmVtcHR5 # PwogIGFwcGxpY2F0aW9uCT0gYHdoaWNoIG1vemlsbGEJMj4gL2Rldi9udWxs # YC5jaG9tcAlpZiBhcHBsaWNhdGlvbi5lbXB0eT8KICBhcHBsaWNhdGlvbgk9 # IGB3aGljaCBmaXJlZm94CTI+IC9kZXYvbnVsbGAuY2hvbXAJaWYgYXBwbGlj # YXRpb24uZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hpY2ggb3BlcmEJCTI+ # IC9kZXYvbnVsbGAuY2hvbXAJaWYgYXBwbGljYXRpb24uZW1wdHk/CiAgYXBw # bGljYXRpb24JPSBgd2hpY2gga29ucXVlcm9yCTI+IC9kZXYvbnVsbGAuY2hv # bXAJaWYgYXBwbGljYXRpb24uZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hp # Y2ggaHRtbHZpZXcJMj4gL2Rldi9udWxsYC5jaG9tcAlpZiBhcHBsaWNhdGlv # bi5lbXB0eT8KICBhcHBsaWNhdGlvbgk9IG5pbAkJCQkJCWlmIGFwcGxpY2F0 # aW9uLmVtcHR5PwoKICBhcHBsaWNhdGlvbgplbmQKCmRlZiBkZWZhdWx0YnJv # d3NlcgogIHJlcwk9IG5pbAogIHJlcwk9IHdpbmRvd3Nicm93c2VyCWlmIHdp # bmRvd3M/CiAgcmVzCT0gY3lnd2luYnJvd3NlcgkJaWYgY3lnd2luPwogIHJl # cwk9IGxpbnV4YnJvd3NlcgkJaWYgbGludXg/CiAgcmVzCmVuZAoKZGVmIHNo # b3d1cmxpbmJyb3dzZXIodXJsLCBicm93c2VyPWRlZmF1bHRicm93c2VyKQog # IGNvbW1hbmQJPSAiI3ticm93c2VyfSBcIiN7dXJsfVwiIgoKICBzeXN0ZW0o # Y29tbWFuZCkJb3IgJHN0ZGVyci5wdXRzICJTdGFydGluZyBvZiB0aGUgYnJv # d3NlciBmYWlsZWQsIG9yIHRoZSBicm93c2VyIHRlcm1pbmF0ZWQgYWJub3Jt # YWxseS5cbkNvbW1hbmQgPT4gI3tjb21tYW5kfSIKZW5kCgpkZWYgc2hvd2lu # YnJvd3NlcihodG1sLCBicm93c2VyPWRlZmF1bHRicm93c2VyKQogIHBvcnQs # IGlvCT0gVENQU2VydmVyLmZyZWVwb3J0KDc3MDEsIDc3MDkpCgogIHVubGVz # cyBicm93c2VyLm5pbD8KICAgIFRocmVhZC5uZXcgZG8KICAgICAgYmVnaW4K # CVRocmVhZC5wYXNzCgogICAgICAgIHNob3d1cmxpbmJyb3dzZXIoImh0dHA6 # Ly9sb2NhbGhvc3Q6I3twb3J0fS8iLCBicm93c2VyKQogICAgICByZXNjdWUK # ICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgSFRUUFNlcnZlci5zZXJ2ZShb # cG9ydCwgaW9dKSBkbyB8cmVxLCByZXNwfAogICAgcmVzcCA8PCBodG1sCgog # ICAgcmVzcC5zdG9wCiAgZW5kCmVuZAoKZGVmIHRhYjJodG1sKHRhYikKICBy # ZXMJPSAiIgoKICB0YWIJPSB0YWIudG9faHRtbChmYWxzZSkKCiAgcmVzIDw8 # ICI8aHRtbD5cbiIKICByZXMgPDwgIjxib2R5PlxuIgogIHJlcyA8PCAiPHRh # YmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0nMScgY2VsbHNwYWNpbmc9JzAn # IGNlbGxwYWRkaW5nPSczJz5cbiIKICByZXMgPDwgIjx0Ym9keT5cbiIKCiAg # dGFiLnNwbGl0KC9ccipcbi8pLmVhY2ggZG8gfGxpbmV8CiAgICByZXMgPDwg # Ijx0cj5cbiIKCiAgICBsaW5lLnNwbGl0KC9cdC8sIC0xKS5lYWNoIGRvIHx2 # ZWxkfAogICAgICB2ZWxkCT0gIiZuYnNwOyIJaWYgdmVsZC5jb21wcmVzcy5l # bXB0eT8KCiAgICAgIHJlcyA8PCAiPHRkPiVzPC90ZD5cbiIgJSB2ZWxkCiAg # ICBlbmQKCiAgICByZXMgPDwgIjwvdHI+XG4iCiAgZW5kCgogIHJlcyA8PCAi # PC90Ym9keT5cbiIKICByZXMgPDwgIjwvdGFibGU+XG4iCiAgcmVzIDw8ICI8 # L2JvZHk+XG4iCiAgcmVzIDw8ICI8L2h0bWw+XG4iCgogIHJlcwplbmQKAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTkwMC50YXIv # ZXYvdGhyZWFkLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3 # NTAAMDAwMDAwMDE2NDEAMTAyNTAzMjA2MTUAMDIwNDMyACAwAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlr # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1 # YnkiCnJlcXVpcmUgInRocmVhZCIKCmNsYXNzIEZha2VUaHJlYWQKICBkZWYg # aW5pdGlhbGl6ZSgqYXJncykKICAgIHlpZWxkKCphcmdzKQogIGVuZAoKICBk # ZWYgam9pbgogIGVuZAplbmQKCmNsYXNzIFRocmVhZExpbWl0ZXIKICBkZWYg # aW5pdGlhbGl6ZShsaW1pdCkKICAgIEBsaW1pdAk9IGxpbWl0CiAgICBAY291 # bnQJPSAwCiAgICBAdGhyZWFkcwk9IFtdCiAgICBAbXV0ZXgJPSBNdXRleC5u # ZXcKICAgIEBjdgkJPSBDb25kaXRpb25WYXJpYWJsZS5uZXcKCiAgICBldmVy # eSgxKSBkbwogICAgICBAbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICBA # dGhyZWFkcy5kdXAuZWFjaCBkbyB8dHwKICAgICAgICAgIHVubGVzcyB0LmFs # aXZlPwogICAgICAgICAgICAkc3RkZXJyLnB1dHMgIkZvdW5kIGRlYWQgdGhy # ZWFkLiIKCiAgICAgICAgICAgIEB0aHJlYWRzLmRlbGV0ZSh0KQoKICAgICAg # ICAgICAgQGNvdW50IC09IDEKCiAgICAgICAgICAgIEBjdi5zaWduYWwKICAg # ICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAogIGVu # ZAoKICBkZWYgd2FpdAogICAgaWYgYmxvY2tfZ2l2ZW4/CiAgICAgIHNlbGYu # d2FpdAogICAgICB5aWVsZAogICAgICBzZWxmLnNpZ25hbAogICAgZWxzZQog # ICAgICBAbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICBAdGhyZWFkcyA8 # PCBUaHJlYWQuY3VycmVudAoKICAgICAgICBAY291bnQgKz0gMQoKICAgICAg # ICBAY3Yud2FpdChAbXV0ZXgpCWlmIEBjb3VudCA+IEBsaW1pdAogICAgICBl # bmQKICAgIGVuZAogIGVuZAoKICBkZWYgc2lnbmFsCiAgICBAbXV0ZXguc3lu # Y2hyb25pemUgZG8KICAgICAgQHRocmVhZHMuZGVsZXRlKFRocmVhZC5jdXJy # ZW50KQoKICAgICAgQGNvdW50IC09IDEKCiAgICAgIEBjdi5zaWduYWwKICAg # IGVuZAogIGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAA