Commits

Jing Wang  committed d4b2458

add docstring to detector

  • Participants
  • Parent commits 3c8296a

Comments (0)

Files changed (24)

File .UNDO/README_undo

Binary file added.

File .UNDO/run.py_undo

Binary file added.

File Detector/.UNDO/AnoType.py_undo

Binary file added.

File Detector/.UNDO/AnomalyDetector.py_undo

Binary file modified.

File Detector/.UNDO/DataFile.py_undo

Binary file added.

File Detector/.UNDO/DataParser.py_undo

Binary file added.

File Detector/.UNDO/DetectorLib.py_undo

Binary file added.

File Detector/AnoType.py

+"""
+This file provides some utility function to detect the type of the anomaly
+"""
 import numpy as np
 from util import abstract_method
 from Derivative import ModelFreeDerivative, ModelBaseDerivative

File Detector/AnomalyDetector.py

 #!/usr/bin/env python
+"""
+This file contains all the detection techniques
+"""
+__author__ = "Jing Conan Wang"
+__email__ = "wangjing@bu.edu"
+__status__ = "Development"
+
 import sys
 sys.path.append("..")
-import settings
+# import settings
 from DetectorLib import I1, I2
-from util import DataEndException
+from util import DataEndException, abstract_method
 from matplotlib.pyplot import figure, plot, show, subplot, title
 import cPickle as pickle
 # from AnoType import ModelFreeAnoTypeTest, ModelBaseAnoTypeTest
 from Detector.DataFile import DataFile
 
 class AnoDetector (object):
+    """It is an Abstract Base Class for the anomaly detector."""
     def __init__(self, desc):
         self.desc = desc
         # self.record_data = dict(IF=[], IB=[], winT=[], threshold=[], em=[])
     def __call__(self, *args, **kwargs):
         return self.detect(*args, **kwargs)
 
+    def get_em(self, rg, rg_type):
+        """abstract method. Get empirical measure,
+        rg is a list specify the start and the end point of the data
+            that will be used
+        rg_type is the type of the rg, can be ['flow'|'time']"""
+        abstract_method()
+
+    def I(self, em1, em2):
+        """abstract method to calculate the difference of two
+        empirical measure"""
+        abstract_method()
+
     def record(self, **kwargs):
         for k, v in kwargs.iteritems():
             self.record_data[k].append(v)
             self.record_data[k] = []
 
     def detect(self, data_file):
+        """main function to detect. it will slide the window, get the emperical
+        measure and get the indicator"""
         self.data_file = data_file
         self.norm_em = self.get_em(rg=[0, 1000], rg_type='time')
 
         return I2(d_Pmb, d_mpmb, Pmb, mpmb)
 
     def get_em(self, rg, rg_type):
-        """get empirical measure"""
         pmf, Pmb, mpmb = self.data_file.get_em(rg, rg_type)
         return Pmb, mpmb
 
         show()
 
 def detect(f_name, win_size, fea_option, detector_type, detector_desc):
+    """An function for convenience
+    - *f_name* the name or a list of name for the flow file.
+    - *win_size* the window size
+    - *fea_option*
+
+    """
     detector_map = {
             'mf':ModelFreeAnoDetector,
             'mb':ModelBaseAnoDetector,

File Detector/DataFile.py

 """Class about parsing data files"""
+__author__ = "Jing Conan Wang"
+__email__ = "wangjing@bu.edu"
+
 import sys
 sys.path.append("..")
 import copy
         return new_file
 
     def parse(self):
+        """a functioin to load the data file and store them in **self.flow**
+        """
         import types
         self.flow = []
         if type(self.f_name) == types.ListType:
         self.sort_flow('t')
 
     def gen_fea(self):
+        """suppose the number of feature used is N
+        this function will set
+        - self.quan_flag: a Nx1 indicating whether each feature
+            need to be quantized or not
+        - self.fea_QN: a Nx1 indicating the quanzied level for each
+            feature.
+        - self.fea_vec: a list of list contains the features for each flow.
+        """
         self.fea = dict()
         for fk in self.fea_list:
             self.fea[fk] = self.fea_handler_map[fk][0]()
         self.fea_vec = self.fea.values()
 
     def gen_rel_time_spot(self):
+        """get the time stamp, normalize it, making it starts from zero"""
         self.t = self.get_value_list('t')
         mint = min(self.t)
         self.t = [ t - mint for t in self.t ]
 
     def sort_flow(self, key='time'):
+        """sort flows according to a attribute, which is 'key', the default 'key' is time"""
         self.flow = sorted( self.flow, key=itemgetter(key) )
 
     def argsort_flow(self, key='time'):
+        """indexes that can sort the flow"""
         return sorted( range(len(self.flow)), key=itemgetter(key) )
 
     def get_value_list(self, key): return [ f.get(key) for f in self.flow ]
         self.unique_src_cluster, self.center_pt = KMeans(self.unique_src_IP_vec_set, self.cluster_num, DF)
 
     def get_fea_slice(self, rg, rg_type):
+        """this function is to get a chunk of feature vector.
+        The feature belongs flows within the range specified by **rg**
+        **rg_type** can be ['flow' | 'time' ].
+        """
         if not rg: return self.fea_vec
         if rg_type == 'flow':
             # return self.fea_vec[rg, :]
             raise ValueError('unknow window type')
 
     def get_fea_range(self):
+        """get the range of the feature vector. """
         self.fea_range = dict()
         for k, v in self.fea.iteritems():
             self.fea_range[k] = [min(v), max(v)]
         return self.get_fea_range().values()
 
     def quantize_fea(self, rg=None, rg_type='time'):
+        """get quantized features for part of the flows"""
         fea_vec = self.get_fea_slice(rg, rg_type)
         fea_range = self.get_fea_range_vec()
         # q_fea_vec = vector_quantize_states(list(fea_vec.T), self.fea_QN, list(fea_range.T), self.quan_flag)

File Detector/DataParser.py

 #!/usr/bin/env python
-# Copyright (C)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# 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.
-#
+"""A library of utility function that can parse the data from a specify
+type of flow data. If new type of flow format need to be supported, you
+can write a new parse function, which is in this file
+"""
+__author__  = "Jing Conan Wang"
+__email__ = "wangjing@bu.edu"
 
 ##
 # @file DataParser.py
     return '.'.join(q)
 
 def ParseData(fileName):
+    """
+    the input is the filename of the flow file that needs to be parsed.
+    the ouput is list of dictionary contains the information for each flow in the data.
+    """
     flow = []
     FORMAT = dict(t=3, IP_Port=5, protocol=6, flowSize=10, endT=4) # Defines the FORMAT of the data file
     fid = open(fileName, 'r')

File Detector/DetectorLib.py

 #!/usr/bin/env python
+"""A library of utility function that will be used by detectors
+"""
 ### -- Created at [2012-03-01 14:55:21]
 ### -- [2012-03-01 17:13:27] support multi feature
 ### -- [2012-03-01 22:05:29] get_flow_rate, test with flowSize, dur, flowRate

File Detector/DetectorTest.py

Empty file removed.
 Implements anomaly detection algorithm in paper
 "STATICAL APPROACHES TO DATA EXFILTRATION DETECTION" submitted to CDC2012.
 
-
-how to custimize SADIT.
-
-Start from allinone.py 
-run() will run the configurer, simulator and detector consectutively. 
-main() will do the sensitivity analysiss
+Run
+-------------
+please type the ./run.py and help documents will appear
 
 
 Documentation

File Share/det_obj.out

 (dp1
-(F0.5
-F0.5
-tp2
-(dp3
+S'2'
+(dp2
 S'entropy'
-p4
-(lp5
+p3
+(lp4
 (cnumpy.core.multiarray
 scalar
-p6
+p5
 (cnumpy
 dtype
-p7
+p6
 (S'f8'
 I0
 I1
-tRp8
+tRp7
 (I3
 S'<'
 NNNI-1
 I-1
 I0
-tbS'l|P\xdaz\xbea?'
+tbS'\x02\xa2\x88\x1b\xc0\x8f4?'
+tRp8
+g5
+(g7
+S'\xf4\xff\xcc\xb6\xe55[?'
 tRp9
-g6
-(g8
-S'\xda\x0f$\xaf\xd2&w?'
-tRp10
-tp11
-a(g6
-(g8
-S'Pg\xf6\x7f\x9e\x81E?'
+tp10
+a(g5
+(g7
+S'\xd8@\xdf,\x9dwL?'
+tRp11
+g5
+(g7
+S'h\xf2`\x99E\x95s?'
 tRp12
-g6
-(g8
-S'\rJbKO\x06\x80?'
-tRp13
-tp14
-a(g6
-(g8
-S' \x8f\x08\x1b@\xe2\x15?'
+tp13
+a(g5
+(g7
+S'\xb4\xa0\xa4U\xdc\xcbU?'
+tRp14
+g5
+(g7
+S'\xf5\xf38\x11w\xb5q?'
 tRp15
-g6
-(g8
-S'\xc9\xc1\x1a\xa3\x0e<\x80?'
-tRp16
-tp17
-a(g6
-(g8
-S'\x00f\xbbe\xc3\x19\x16?'
+tp16
+a(g5
+(g7
+S'\x10\t\x01\xbd)?V?'
+tRp17
+g5
+(g7
+S'\r\xc48\xf7\x8a\x1dc?'
 tRp18
-g6
-(g8
-S'}}X0hV~?'
-tRp19
-tp20
-a(g6
-(g8
-S'\xb8%\xe8\xa6UC7?'
+tp19
+a(g5
+(g7
+S'\x98t\xb4j\xc1\nI?'
+tRp20
+g5
+(g7
+S'\xa3\xac=\xb1\xa2\x95\\?'
 tRp21
-g6
-(g8
-S'\xc0n\xecI\xed!{?'
-tRp22
-tp23
-a(g6
-(g8
-S'\xde\xdf\xb4\xa9\xf1u@?'
+tp22
+a(g5
+(g7
+S'P/j\x7fScZ?'
+tRp23
+g5
+(g7
+S'\x0e\xc3\xf0\xe7\xf26k?'
 tRp24
-g6
-(g8
-S'U\xe0\xcb\xb1\xbd,\x81?'
-tRp25
-tp26
-a(g6
-(g8
-S'`^\xf7\x8e\xacfE?'
+tp25
+a(g5
+(g7
+S"\rB|y'\xe4R?"
+tRp26
+g5
+(g7
+S'\xdc\xa9e\x87\xab.m?'
 tRp27
-g6
-(g8
-S'\x8a\xc1\xac\xfaP<\x85?'
-tRp28
-tp29
-a(g6
-(g8
-S'\\sP\x96\x16\x89W?'
+tp28
+a(g5
+(g7
+S'\x08\x10\x8d\xf4\x03\xc3E?'
+tRp29
+g5
+(g7
+S'R&\xbf\x9fS\xdef?'
 tRp30
-g6
-(g8
-S'\xd0\xb9(\xfb\x04\x88\x80?'
-tRp31
-tp32
-a(g6
-(g8
-S'\x10W\xb5\x1ft\xd5R?'
+tp31
+a(g5
+(g7
+S"\xa0\x81C\x8c\x15\xae'?"
+tRp32
+g5
+(g7
+S"\xd8\xf5\xb4\x8e\xbd'd?"
 tRp33
-g6
-(g8
-S'ty\t\t9\x94\x83?'
-tRp34
-tp35
-a(g6
-(g8
-S'\x00\xf9\xa2\x91\xd7\x8bU?'
+tp34
+a(g5
+(g7
+S'\xb0\xf1\xe1\x98.\xf18?'
+tRp35
+g5
+(g7
+S'8\xb51\xf3x\xc1\\?'
 tRp36
-g6
-(g8
-S'\x90\xd4\x83\x83E\x0b\x85?'
-tRp37
-tp38
-a(g6
-(g8
-S'tV\xd7_%\x94S?'
+tp37
+a(g5
+(g7
+S'p\xa7\x11\x12\x99\xd38?'
+tRp38
+g5
+(g7
+S'\x18\xc7\xca\x83\x9cda?'
 tRp39
-g6
-(g8
-S'\xb4p\x91\xe3\xd8\xba\x88?'
-tRp40
-tp41
-a(g6
-(g8
-S'\x18X\x1d\xa7\xb9Pr?'
+tp40
+a(g5
+(g7
+S'@)\xde*\x0c\x8c:?'
+tRp41
+g5
+(g7
+S'\xc8\xe6\x0bB\xa1\xa9h?'
 tRp42
-g6
-(g8
-S'n\xd1~^8\xdd\x8e?'
-tRp43
-tp44
-a(g6
-(g8
-S'\xea\xdb\xf74(\xaa\x7f?'
+tp43
+a(g5
+(g7
+S'\x04\x84\xdd\xa8\xd4\xf9 ?'
+tRp44
+g5
+(g7
+S'Z\xb3\x9b\x1dKWj?'
 tRp45
-g6
-(g8
-S'\xc7\xcb\xe4 {\x0f\x8f?'
-tRp46
-tp47
-a(g6
-(g8
-S'F\xbdJ\xe6\x07\ry?'
+tp46
+a(g5
+(g7
+S'\xe8\xa4\xba\nH\x8f>?'
+tRp47
+g5
+(g7
+S"2'\xead\xf0\xd9d?"
 tRp48
-g6
-(g8
-S'\xfc:j\xbd\x96\xd5\x8a?'
-tRp49
-tp50
-a(g6
-(g8
-S'\xd2\xe0\xe7R\x12\x9fp?'
+tp49
+a(g5
+(g7
+S'\xfe\t\xc3\x92f\xedE?'
+tRp50
+g5
+(g7
+S'\x11\x03\xc640\xbdl?'
 tRp51
-g6
-(g8
-S'\xf6y.EW\xd0\x81?'
-tRp52
-tp53
-a(g6
-(g8
-S'\x9er\x88\xce:Z\x80?'
+tp52
+a(g5
+(g7
+S'P\xb9\xce\xb3\x11\x99@?'
+tRp53
+g5
+(g7
+S'F2k$"\xe7c?'
 tRp54
-g6
-(g8
-S'\xadk\xa4\x96\xcc\x9f\x88?'
-tRp55
-tp56
-a(g6
-(g8
-S"\xd6'\x8b7\xb1\xd6q?"
+tp55
+a(g5
+(g7
+S'\xa8\x0b\x11i,\xa9`?'
+tRp56
+g5
+(g7
+S'*\xc4\n\r\x8a\xe9z?'
 tRp57
-g6
-(g8
-S'\x80\xd9\xc9L\x81\x8d\x83?'
-tRp58
-tp59
-a(g6
-(g8
-S'\x8a$"\xd3\t\xeeg?'
+tp58
+a(g5
+(g7
+S'\x10\xf4\xdb~Q\x02Y?'
+tRp59
+g5
+(g7
+S'\xf5\xfe#%\xc3|p?'
 tRp60
-g6
-(g8
-S'"\xda{\x9b\nd}?'
-tRp61
-tp62
-a(g6
-(g8
-S'\xa0b5\xbf-\x11k?'
+tp61
+a(g5
+(g7
+S'\xb0\xbd\xcb\x0c%L[?'
+tRp62
+g5
+(g7
+S'\xdd\xfb\xa5\x1e\xbd\xf3r?'
 tRp63
-g6
-(g8
-S'O\x1a\xe2\xc2\xae2\x81?'
-tRp64
-tp65
-a(g6
-(g8
-S'X\xc7!{\x04\x88i?'
+tp64
+a(g5
+(g7
+S'\xf4\x89\r %\xdeT?'
+tRp65
+g5
+(g7
+S'\xc8\r\x86\xbd\x07\xebj?'
 tRp66
-g6
-(g8
-S"\xe8\xf7>\xc9C'\x80?"
-tRp67
-tp68
-a(g6
-(g8
-S'\x90"d:\xef\x90a?'
+tp67
+a(g5
+(g7
+S"\n\xd4'\x1d\xf1\xf7a?"
+tRp68
+g5
+(g7
+S'\xb3\xb2\xd3z\x15.n?'
 tRp69
-g6
-(g8
-S'\xca#\xff\x99\x12\x96x?'
-tRp70
-tp71
-a(g6
-(g8
-S'\x9c\xcej_\x16}f?'
+tp70
+a(g5
+(g7
+S'\xd9C\x91T\xa8\xf4K?'
+tRp71
+g5
+(g7
+S"'\xcbT\x06 ~o?"
 tRp72
-g6
-(g8
-S'f\x96\xd6T\x14*u?'
-tRp73
-tp74
-a(g6
-(g8
-S'\xf4%\xb3|\x90\xbab?'
+tp73
+a(g5
+(g7
+S'\x12\xd7\x12\xcc/\x81^?'
+tRp74
+g5
+(g7
+S'\xf2\xcc\xf5\xe2\x19=r?'
 tRp75
-g6
-(g8
-S'm\xc0\xd4\x94\x1a5r?'
-tRp76
-tp77
-a(g6
-(g8
-S'\xd4\xfa1z\xb1Q_?'
+tp76
+a(g5
+(g7
+S'$\xdeh\x93\xa0rZ?'
+tRp77
+g5
+(g7
+S'\xffBg\xa3\xf5nm?'
 tRp78
-g6
-(g8
-S'=\xf3\x83X@<l?'
-tRp79
-tp80
-a(g6
-(g8
-S'<\x1b\n\x7f\xc7\x08U?'
+tp79
+a(g5
+(g7
+S'\x9cL\x94\x97&]]?'
+tRp80
+g5
+(g7
+S'#\x01k{;$o?'
 tRp81
-g6
-(g8
-S'/\xc1]\xebl\xacu?'
-tRp82
-tp83
-a(g6
-(g8
-S'\x0c1\xee"\xad\xb0R?'
+tp82
+a(g5
+(g7
+S'\xfc,\xb7\n\x8b\xd6_?'
+tRp83
+g5
+(g7
+S'0\xd5\xbe3^\rq?'
 tRp84
-g6
-(g8
-S'\xcc\xb1\x03\xdf\xca\x10z?'
-tRp85
-tp86
-a(g6
-(g8
-S'*\xcak\xf4_YW?'
+tp85
+a(g5
+(g7
+S'6\xa8\x06\xa4D\x90b?'
+tRp86
+g5
+(g7
+S'\xfe\xad\xc6\r\x1a\xbaq?'
 tRp87
-g6
-(g8
-S'\xc3\xa5\x0b\x17m\x9fy?'
-tRp88
-tp89
-a(g6
-(g8
-S'@y\x03v\xea8W?'
+tp88
+a(g5
+(g7
+S',~\xda\x8b<\x94[?'
+tRp89
+g5
+(g7
+S'\xaf/\xe8\x1f\xa0Qj?'
 tRp90
-g6
-(g8
-S'~\x0b\x018\xc9\xcdy?'
-tRp91
-tp92
-a(g6
-(g8
-S'x\x89*\x9fZ\x07S?'
+tp91
+a(g5
+(g7
+S'0\xa4\xe5\xae\xc8 a?'
+tRp92
+g5
+(g7
+S'\xdeK\xa0\xb2<\xfcd?'
 tRp93
-g6
-(g8
-S'\xbew\x88\xafP\xa5t?'
-tRp94
-tp95
-a(g6
-(g8
-S'\xf8\xed\x08\xbee\x00Q?'
+tp94
+a(g5
+(g7
+S'\x88\x04\x849P\xedK?'
+tRp95
+g5
+(g7
+S'\x80\xa2\xaa\x1c\xd1\xcad?'
 tRp96
-g6
-(g8
-S'\x84\\VY\xb1\xd8s?'
-tRp97
-tp98
-a(g6
-(g8
-S'\xc0\x83\xaa\x89YT??'
+tp97
+a(g5
+(g7
+S'p\xbb\xfa\x80\xd6\x1bP?'
+tRp98
+g5
+(g7
+S'3jmI\xe5sf?'
 tRp99
-g6
-(g8
-S'\xb2\x821\x90\xb9?w?'
-tRp100
-tp101
-a(g6
-(g8
-S'\xe0/<\xb6\xc6\x8c)?'
+tp100
+a(g5
+(g7
+S'\xe8w\xc1_q\x83I?'
+tRp101
+g5
+(g7
+S'\xd7\xbfB\xc5\x18\xd4h?'
 tRp102
-g6
-(g8
-S'\xae\xa3Gd1\xbe\x7f?'
-tRp103
-tp104
-a(g6
-(g8
-S'p\xf3\xaa\xa87+E?'
+tp103
+a(g5
+(g7
+S'\x08\xd2\xbd\x14\x13\\C?'
+tRp104
+g5
+(g7
+S'E\xc4\xb1\xc19*e?'
 tRp105
-g6
-(g8
-S'\xf2\x81MM\x13U\x82?'
-tRp106
-tp107
-a(g6
-(g8
-S'\xe0Z\xc4r\xbcCS?'
+tp106
+a(g5
+(g7
+S'p\xcf\n\x91BAG?'
+tRp107
+g5
+(g7
+S'\xb2\xd6\xf26\xef\xa0i?'
 tRp108
-g6
-(g8
-S'"{Tu\x12F\x83?'
-tRp109
-tp110
-a(g6
-(g8
-S'\x84\x83\x19P\x94\x89`?'
+tp109
+a(g5
+(g7
+S'\xc0^4\x1f\x8dJ4?'
+tRp110
+g5
+(g7
+S'.\x8cr\xbe\xb3\xa1r?'
 tRp111
-g6
-(g8
-S'\xb0\x1a\xd4o\xe5\xd1\x85?'
-tRp112
-tp113
-a(g6
-(g8
-S'\x00\xce\xd4\x92\x1e\xa9a?'
+tp112
+a(g5
+(g7
+S"\xa0f\xed\x0f'\x019?"
+tRp113
+g5
+(g7
+S'v\xed\xf5\xcd\x1dtl?'
 tRp114
-g6
-(g8
-S'\xa8\xbfH\t\xbf\x1b\x8d?'
-tRp115
-tp116
-a(g6
-(g8
-S'\xb0\x89\x03\xfeY\x89]?'
+tp115
+a(g5
+(g7
+S'\xd8\x0br\tfM@?'
+tRp116
+g5
+(g7
+S'\x14e\xff~\xcc\xabp?'
 tRp117
-g6
-(g8
-S'Ls;\xd2\x8b\x85\x84?'
-tRp118
-tp119
-a(g6
-(g8
-S'H\xb7\xde\xc7\x1a\xd1\\?'
+tp118
+a(g5
+(g7
+S'\xc1\xec\xce\x0bV@ ?'
+tRp119
+g5
+(g7
+S'\xd6\xbb\xf5\xee\x97\xb5m?'
 tRp120
-g6
-(g8
-S'Z\xeb\xbb\xa6\xf8\x1c\x88?'
-tRp121
-tp122
-a(g6
-(g8
-S"\xf0\xfc\x03\n'\x91O?"
+tp121
+a(g5
+(g7
+S'\x1a\xa1L.(b\x1b?'
+tRp122
+g5
+(g7
+S'\x07uP\xd4\xf4\xffq?'
 tRp123
-g6
-(g8
-S'W\xce\xed\xeb`U\x8c?'
-tRp124
-tp125
-a(g6
-(g8
-S'\xd4\xbfu\xc3\xf5\xc0Q?'
+tp124
+a(g5
+(g7
+S'\x00\xe0R\xf1\x01y\xfa>'
+tRp125
+g5
+(g7
+S'\x1c\x88\xc4Ce\xddl?'
 tRp126
-g6
-(g8
-S'{\xbb\xa1\x8fT9\x90?'
-tRp127
-tp128
-a(g6
-(g8
-S'\x8c/\xb9\xf4\xcbyR?'
+tp127
+a(g5
+(g7
+S'`\xa11\x13\x07\xaf\x00?'
+tRp128
+g5
+(g7
+S'\x1a5\xf4\xbcAPh?'
 tRp129
-g6
-(g8
-S'^\x1b\xce\x03se\x92?'
-tRp130
-tp131
-a(g6
-(g8
-S'\x08Kg]sNN?'
+tp130
+a(g5
+(g7
+S'@\x0c|\x9e\xd7Q\x11?'
+tRp131
+g5
+(g7
+S'l~$\x9e\xb6\x18f?'
 tRp132
-g6
-(g8
-S'\xb86\xabCB\xde\x91?'
-tRp133
-tp134
-a(g6
-(g8
-S'X#\xbf\xafO\xe3C?'
+tp133
+a(g5
+(g7
+S'\x90nd@T\xda ?'
+tRp134
+g5
+(g7
+S'\xdcRJ\xe9%\x0fc?'
 tRp135
-g6
-(g8
-S'C\xe0\\\xfbqR\x87?'
-tRp136
-tp137
-a(g6
-(g8
-S'\x04J\xf4\xcc\xb1\xf6X?'
+tp136
+a(g5
+(g7
+S'\xe4E9\xe2e%??'
+tRp137
+g5
+(g7
+S'P\xb5\xeb\xa2\xb4\x96f?'
 tRp138
-g6
-(g8
-S'\x83v\xa8\x84\xa0\x95\x88?'
-tRp139
-tp140
-a(g6
-(g8
-S'$\xe3\xd7\x1c\xe2\xca^?'
+tp139
+a(g5
+(g7
+S'\x08DE/\x0e\xf4D?'
+tRp140
+g5
+(g7
+S'\t\xb7\x88\xf3\xff\xc3l?'
 tRp141
-g6
-(g8
-S'\xfd"\xabz\xba0\x8c?'
-tRp142
-tp143
-a(g6
-(g8
-S'\xbe\x8e\xb6\xaa\xb7\xacn?'
+tp142
+a(g5
+(g7
+S'\x1c\xf2k\xc2[ A?'
+tRp143
+g5
+(g7
+S'\x08\xa1\xff\x0e\x94\xden?'
 tRp144
-g6
-(g8
-S'\x13T\x07\x9a\xbcP\x91?'
-tRp145
-tp146
-a(g6
-(g8
-S'\x00\xad}\x8d\xe3\xbbw?'
+tp145
+a(g5
+(g7
+S'\xf0al\xf8s\x87I?'
+tRp146
+g5
+(g7
+S'\xab\xf0\xb9Xi\x9ew?'
 tRp147
-g6
-(g8
-S'H\x18x\xed\x11\x92\x93?'
-tRp148
-tp149
-a(g6
-(g8
-S'Xg?E\x91Dz?'
+tp148
+a(g5
+(g7
+S'\xfd\xfb\xd0\xee\xf9\x8cC?'
+tRp149
+g5
+(g7
+S'\x1f\x88\xdd\xb2\x03\xc1s?'
 tRp150
-g6
-(g8
-S'r\x8e\x90V\xea\x00\x90?'
-tRp151
-tp152
-a(g6
-(g8
-S'\x98\x1f\xb0U\xe5\xa8\x7f?'
+tp151
+a(g5
+(g7
+S'\xb4a om\x8c@?'
+tRp152
+g5
+(g7
+S'\x8bx.\xb5]6p?'
 tRp153
-g6
-(g8
-S'(\xb8\x92\xf7\nU\x90?'
-tRp154
-tp155
-a(g6
-(g8
-S',\xb6\xfd\xaf\xb60|?'
+tp154
+a(g5
+(g7
+S'\xe0q\xf6\x9e\xa9\xf20?'
+tRp155
+g5
+(g7
+S'n\xa8\xb2Mw\x9cm?'
 tRp156
-g6
-(g8
-S'\x08"2\xb3\xdfn\x8d?'
-tRp157
-tp158
-a(g6
-(g8
-S'\x80\x0c\\\xc8\xf3\xc6~?'
+tp157
+a(g5
+(g7
+S' (u\xb2\xf3\xedN?'
+tRp158
+g5
+(g7
+S'\xe1\x1d\xa9Bnps?'
 tRp159
-g6
-(g8
-S'Hv\xd4\xc5/\x1f\x8c?'
-tRp160
-tp161
-a(g6
-(g8
-S'>\t\x95\x7f\xa2\xac}?'
+tp160
+a(g5
+(g7
+S't\xb1\xaa\xd1H\xf2Q?'
+tRp161
+g5
+(g7
+S'\x8bog\xe6\xed\xdds?'
 tRp162
-g6
-(g8
-S'j\xbd\xdb\x94\x12\xfb\x89?'
-tRp163
-tp164
-a(g6
-(g8
-S'T\xe7\x9c,\x00\xfd\x80?'
+tp163
+a(g5
+(g7
+S'\x00=\xc3@/\xffV?'
+tRp164
+g5
+(g7
+S':^\xbdk\x0bzu?'
 tRp165
-g6
-(g8
-S"\xca\x03e\x03'\x16\x92?"
-tRp166
-tp167
-a(g6
-(g8
-S'@a\xe4\x187\x0bv?'
+tp166
+a(g5
+(g7
+S'\x05\x95\xeby\xf40V?'
+tRp167
+g5
+(g7
+S"<'\x88\xdd\xb8\x88y?"
 tRp168
-g6
-(g8
-S'}\x12&\x8d\x94\x0c\x91?'
-tRp169
-tp170
-a(g6
-(g8
-S'P\x97\x0c\x97l\x03\x7f?'
+tp169
+a(g5
+(g7
+S'\x01\xc0\xf37I\n\\?'
+tRp170
+g5
+(g7
+S'\xc0\xe0\x13\x94\xa9\x18|?'
 tRp171
-g6
-(g8
-S'\xe8q\x91\x8b\x8d\x84\x95?'
-tRp172
-tp173
-a(g6
-(g8
-S'\xaf\x197\x1e\x804\x82?'
+tp172
+a(g5
+(g7
+S'\xb0\x82\x8dZ\x0e\xe4Z?'
+tRp173
+g5
+(g7
+S'\xe3\xe6\x98x\xfa\x8ay?'
 tRp174
-g6
-(g8
-S'k\xd5\xe5\x84\xd9\x14\x92?'
-tRp175
-tp176
-a(g6
-(g8
-S'\xc8\xc5\x9a\xc6\xbf\xe2\x85?'
+tp175
+a(g5
+(g7
+S'\x04\xcaM\xb3IK_?'
+tRp176
+g5
+(g7
+S'\xd4\xa3\xe7B\xbe\xfe\x7f?'
 tRp177
-g6
-(g8
-S'\xe8\x04\xe4\xb1$\x87\x95?'
-tRp178
-tp179
-a(g6
-(g8
-S'\xbd\xdf\xdb*\x87L\x82?'
+tp178
+a(g5
+(g7
+S'\xe0pL\xec8\xa0X?'
+tRp179
+g5
+(g7
+S'\xc4\xe3\x9b\x05\xe1[\x81?'
 tRp180
-g6
-(g8
-S'\x8c\xbe&\x1a3\xf4\x91?'
-tRp181
-tp182
-a(g6
-(g8
-S'\xfe\xa98~G\r\x80?'
+tp181
+a(g5
+(g7
+S'>=i\x06`zZ?'
+tRp182
+g5
+(g7
+S'@\xd09\x86\x82\xae\x82?'
 tRp183
-g6
-(g8
-S'%>\xad\xcc\xb6\xaf\x92?'
-tRp184
-tp185
-a(g6
-(g8
-S'8=\x10*\xfc\xd2\x81?'
+tp184
+a(g5
+(g7
+S'\xb48^|\x08\xf0_?'
+tRp185
+g5
+(g7
+S'\x9d\xfa\xdb\xb1\x81G\x83?'
 tRp186
-g6
-(g8
-S'\xe2\xb3\xf4\xaa\x92\xfa\x91?'
-tRp187
-tp188
-a(g6
-(g8
-S'\x08\xb3\xc2\x1b\x19\xedw?'
+tp187
+a(g5
+(g7
+S'NR\xa2!\x02:h?'
+tRp188
+g5
+(g7
+S'>\xa3>3\xd0a\x89?'
 tRp189
-g6
-(g8
-S'\x93\x8c\x1da\xf2T\x8f?'
-tRp190
-tp191
-a(g6
-(g8
-S'<\xc0MPL\xb3z?'
+tp190
+a(g5
+(g7
+S'v\x88I\xcdB\x8ci?'
+tRp191
+g5
+(g7
+S'\xba\x89\x16\x99c\xc8\x8b?'
 tRp192
-g6
-(g8
-S'/\x83i\x86\x91\xf8\x8e?'
-tRp193
-tp194
-a(g6
-(g8
-S'4zY\xaf\xc4#|?'
+tp193
+a(g5
+(g7
+S'\xb0\xd3\xb4\xefV\xb8d?'
+tRp194
+g5
+(g7
+S'\x97+\xf8q\x8fo\x89?'
 tRp195
-g6
-(g8
-S'\x8a\xe9\x08m\x7f\xf4\x90?'
-tRp196
-tp197
-a(g6
-(g8
-S'\x98\xac0\xf7U\xd9\x82?'
+tp196
+a(g5
+(g7
+S',\xf9\xe4\xf0&\x8cn?'
+tRp197
+g5
+(g7
+S'u!\x15\xc6\x98T\x87?'
 tRp198
-g6
-(g8
-S'\x86\xdc\xef\xbb&\xb6\x92?'
-tRp199
-tp200
-a(g6
-(g8
-S'x\xe0J\x8b\xd2\xe3\x85?'
+tp199
+a(g5
+(g7
+S'\\=8\x99\xc7\xcag?'
+tRp200
+g5
+(g7
+S'\x19[P7q\x04\x87?'
 tRp201
-g6
-(g8
-S'~_\x87R\xed\xb7\x91?'
-tRp202
-tp203
-a(g6
-(g8
-S'jn?^\xc6\x95\x89?'
+tp202
+a(g5
+(g7
+S"\xe8\xe6\xe7\xd7't\\?"
+tRp203
+g5
+(g7
+S'\x8e\xb6\xd3\xad\xa29\x86?'
 tRp204
-g6
-(g8
-S' \xdap\xa9\xb4\x18\x96?'
-tRp205
-tp206
-a(g6
-(g8
-S'2C\x86\xd8t%\x86?'
+tp205
+a(g5
+(g7
+S'(\xc5\x91>\xb6\x95Z?'
+tRp206
+g5
+(g7
+S'jgc\x8dJa\x88?'
 tRp207
-g6
-(g8
-S'Ju-m{\x87\x92?'
-tRp208
-tp209
-a(g6
-(g8
-S'P \xd1f%\xe7\x80?'
+tp208
+a(g5
+(g7
+S'"\xa1>b\x87\xfbc?'
+tRp209
+g5
+(g7
+S'\xd8\x0f\x1eD\x92\x8c\x88?'
 tRp210
-g6
-(g8
-S'\xf2F&\x0b\xe5/\x8e?'
-tRp211
-tp212
-a(g6
-(g8
-S'\x16\xd5\x00\xa5\x14(\x82?'
+tp211
+a(g5
+(g7
+S'\x88=\xebLEx^?'
+tRp212
+g5
+(g7
+S'\x9cf\x0fE1\xb6\x83?'
 tRp213
-g6
-(g8
-S'|\xd3\x9ckz\xb5\x91?'
-tRp214
-tp215
-a(g6
-(g8
-S'V-Dd\x03\xf6v?'
+tp214
+a(g5
+(g7
+S'p\x0c\x81\xf4i2P?'
+tRp215
+g5
+(g7
+S'\xa8O\xcem\xdb\x1b\x7f?'
 tRp216
-g6
-(g8
-S'\xf0\xa8h6\xa0\x91\x8f?'
-tRp217
-tp218
-a(g6
-(g8
-S'\xb6\x1b\x9b\xbe\xe8>u?'
+tp217
+a(g5
+(g7
+S'\xb6\ry\x84z\x9dJ?'
+tRp218
+g5
+(g7
+S'\x86r\x02\xba\xb0\xf1\x7f?'
 tRp219
-g6
-(g8
-S'\xf4\xbc)\x8c\xa6\x9c\x8d?'
-tRp220
-tp221
-a(g6
-(g8
-S'\x12\n\xab-=7l?'
+tp220
+a(g5
+(g7
+S'p\xbdp\x85\xe3\x07;?'
+tRp221
+g5
+(g7
+S'\xfe\xb6A8\x18\x9b{?'
 tRp222
-g6
-(g8
-S'\xea*\xa1\xabQ\xaf\x88?'
-tRp223
-tp224
-a(g6
-(g8
-S'\xedgU\xd7i\\n?'
+tp223
+a(g5
+(g7
+S'\x88\xe9X\x17%\xdf5?'
+tRp224
+g5
+(g7
+S'\x1f\x86\xf89\x81Sw?'
 tRp225
-g6
-(g8
-S'\xca\xc8\xd7Pd\xe1\x8a?'
-tRp226
-tp227
-a(g6
-(g8
-S'\xaaI\xbdX\xec\xffd?'
+tp226
+a(g5
+(g7
+S'\xa8h8\n\x9c~1?'
+tRp227
+g5
+(g7
+S'\xb6\xd4\x9b\x17\x80\xc5w?'
 tRp228
-g6
-(g8
-S'$6\x87\x80-\x1d\x8b?'
-tRp229
-tp230
-a(g6
-(g8
-S'\xba\x81P\xc0}=c?'
+tp229
+a(g5
+(g7
+S'\x00\xc8@\xd5\xde\xf9;?'
+tRp230
+g5
+(g7
+S'\x7f\x89\xb2T\x113y?'
 tRp231
-g6
-(g8
-S'Q\xb9\xa0\xe3\xf8\xf9\x88?'
-tRp232
-tp233
-a(g6
-(g8
-S'\x86\x16m_7\xc1U?'
+tp232
+a(g5
+(g7
+S'\xc05\x1e\xc5\xb0\x00B?'
+tRp233
+g5
+(g7
+S'\x0b\x98$\xe9\x7fOy?'
 tRp234
-g6
-(g8
-S'j\xc4\x9aK\xd6M\x85?'
-tRp235
-tp236
-a(g6
-(g8
-S'\x1a\xc7\x81\x80\xa4\xe6E?'
+tp235
+a(g5
+(g7
+S'H\x00tS\xec\xc5M?'
+tRp236
+g5
+(g7
+S'\x15\xda\x8f\xe1,\xc6z?'
 tRp237
-g6
-(g8
-S'\xbc3\xe4X!\xdb~?'
-tRp238
-tp239
-a(g6
-(g8
-S'8\xd0Zw\xa8\xcbE?'
+tp238
+a(g5
+(g7
+S'H\xaf{\x98 6P?'
+tRp239
+g5
+(g7
+S'M\x93E\xdf\xab\xf1l?'
 tRp240
-g6
-(g8
-S'|,\xfd)\xb6\xed{?'
-tRp241
-tp242
-a(g6
-(g8
-S'\xa0\x1c\x9e\x94\xe4[1?'
+tp241
+a(g5
+(g7
+S'\xc0\x06\xc9\xb6\xa0\x1bN?'
+tRp242
+g5
+(g7
+S'\xecCO\xf0\xa2:l?'
 tRp243
-g6
-(g8
-S'\x04\xfd\x0c\xf7\x15_\x80?'
-tRp244
-tp245
-a(g6
-(g8
-S'Pc\xac\xbf\x85GD?'
+tp244
+a(g5
+(g7
+S'Ti\x04\xf0IZQ?'
+tRp245
+g5
+(g7
+S'\xc2\x99\xfd\xf9~hj?'
 tRp246
-g6
-(g8
-S'2\xc3\x93|\xb9,\x80?'
-tRp247
-tp248
-a(g6
-(g8
-S'\xe0\xb6a\x94\xf34\\?'
+tp247
+a(g5
+(g7
+S'8\xfa\xbb\x8c\xaf\x94T?'
+tRp248
+g5
+(g7
+S'\xfb/LR\xa54l?'
 tRp249
-g6
-(g8
-S'\xdc\x17"\xf6O\x97\x81?'
-tRp250
-tp251
-a(g6
-(g8
-S'\xec\xb7\xebI\x86\x03V?'
+tp250
+a(g5
+(g7
+S'X\xd2bB\x16\xe3S?'
+tRp251
+g5
+(g7
+S'\xad\x11\x85\xfc\x1d\x07u?'
 tRp252
-g6
-(g8
-S'@\xed\x85\xa8\xe1J\x87?'
-tRp253
-tp254
-a(g6
-(g8
-S'H\xc3jG\xf9\x99^?'
+tp253
+a(g5
+(g7
+S'h\xde\x7f>p\x03_?'
+tRp254
+g5
+(g7
+S'VBH\xab\xc1\x92z?'
 tRp255
-g6
-(g8
-S'&\xa1Y+!\xe7\x81?'
-tRp256
-tp257
-a(g6
-(g8
-S'\xb8H\x15\x7fG\xf7V?'
+tp256
+a(g5
+(g7
+S'x\xc2|\xfbT\x16Z?'
+tRp257
+g5
+(g7
+S'\x96-v\xabn\x97\x81?'
 tRp258
-g6
-(g8
-S'j\x01\x87\xc2\xaf\x1f~?'
-tRp259
-tp260
-a(g6
-(g8
-S'\x08\xcf1\x96k(\\?'
+tp259
+a(g5
+(g7
+S'0\xd9Y\xc6\xb7\t[?'
+tRp260
+g5
+(g7
+S'\x10\xc5\xe4:\xc6\xb5x?'
 tRp261
-g6
-(g8
-S'\x9fH\xeb\xc5u\xfc\x84?'
-tRp262
-tp263
-a(g6
-(g8
-S'pMW\xe6HBY?'
+tp262
+a(g5
+(g7
+S'\x98H\xb9\xde\x97\x1aU?'
+tRp263
+g5
+(g7
+S'jvpYF}r?'
 tRp264
-g6
-(g8
-S'c\x8a\x18Q\x8c)\x88?'
-tRp265
-tp266
-a(g6
-(g8
-S'Xh\x9e\xccZ\xf9P?'
+tp265
+a(g5
+(g7
+S"\x9cI'A,\x9eU?"
+tRp266
+g5
+(g7
+S'K\xe9s\xf8\xc8\xf5v?'
 tRp267
-g6
-(g8
-S'\x05\xfc\xab\xc7\xba\xfa\x82?'
-tRp268
-tp269
-a(g6
-(g8
-S'\xd0n\x03\x0b\x0f\x023?'
+tp268
+a(g5
+(g7
+S'I\xfazyR\xb3T?'
+tRp269
+g5
+(g7
+S'\xb0k\x87\x13n\xe1t?'
 tRp270
-g6
-(g8
-S'4\x11\xc4\x08\xd4\x03\x83?'
-tRp271
-tp272
-a(g6
-(g8
-S',\xf3\xcc\xa6\x04\xabU?'
+tp271
+a(g5
+(g7
+S'>%L4\xf3\xb4T?'
+tRp272
+g5
+(g7
+S'\x9abs\x7f\xd9\xeay?'
 tRp273
-g6
-(g8
-S'\x81z\x15\xea\xbb\x16\x88?'
-tRp274
-tp275
-a(g6
-(g8
-S'4\x0ciQ \xf0S?'
+tp274
+a(g5
+(g7
+S':{8\x08H\x93G?'
+tRp275
+g5
+(g7
+S'\nV\x8b\xc6/cu?'
 tRp276
-g6
-(g8
-S'\xf8x9{Tb\x91?'
-tRp277
-tp278
-a(g6
-(g8
-S'@vh0\xfd\xabd?'
+tp277
+a(g5
+(g7
+S'\xe8\xe5\xc9\x94\xa0_M?'
+tRp278
+g5
+(g7
+S'\x98\x99xX\x9e\xdd|?'
 tRp279
-g6
-(g8
-S'\x12#\x94\x10\xd3\x00\x96?'
-tRp280
-tp281
-a(g6
-(g8
-S'X0\xe4\xde\xc6\x7fa?'
+tp280
+a(g5
+(g7
+S'@\xb7\x1e\xbeG\xbeA?'
+tRp281
+g5
+(g7
+S'Fh\xbd\x99)i|?'
 tRp282
-g6
-(g8
-S'9\x00dZ]\xdb\x96?'
-tRp283
-tp284
-a(g6
-(g8
-S'\xecN\xd8\x1c\xef[d?'
+tp283
+a(g5
+(g7
+S'\x14\x04Sm\xe8\xe4T?'
+tRp284
+g5
+(g7
+S'\xb5\xfd\xf8\x88\xeey\x81?'
 tRp285
-g6
-(g8
-S'\x82w\xd9L\xc2\x99\x95?'
-tRp286
-tp287
-a(g6
-(g8
-S'\x04\xaa\xcd6\xeb>l?'
+tp286
+a(g5
+(g7
+S'\x03\x92\x1b\xfcn\xc6_?'
+tRp287
+g5
+(g7
+S'\x12C)rb\xe7|?'
 tRp288
-g6
-(g8
-S'\xc5\x99\r\x92*\x1a\x98?'
-tRp289
-tp290
-a(g6
-(g8
-S'\xdb \x95\x88\xd6\xe4v?'
+tp289
+a(g5
+(g7
+S'!\x89\xeb+j\xdf`?'
+tRp290
+g5
+(g7
+S'\xd1\xe8\x16\xbc\xd6\x81z?'
 tRp291
-g6
-(g8
-S'~XJ%\xbb\xcf\x9c?'
-tRp292
-tp293
-a(g6
-(g8
-S' {\xcbR>y\x7f?'
+tp292
+a(g5
+(g7
+S'\xa2\xc5z\xe3\xf7\xbaf?'
+tRp293
+g5
+(g7
+S'\xbanav\xfd?\x7f?'
 tRp294
-g6
-(g8
-S'\x16\x98\xd2u^*\x9b?'
-tRp295
-tp296
-a(g6
-(g8
-S'\x1c\x8a\x9a\x99\x94\xe5\x82?'
+tp295
+a(g5
+(g7
+S"\xed\x82'a\x0f\x14b?"
+tRp296
+g5
+(g7
+S'\xa3\x02\xfb\xcbZ`v?'
 tRp297
-g6
-(g8
-S'F\xab\xf5\x99\xa9\xa6\x9b?'
-tRp298
-tp299
-a(g6
-(g8
-S'\xe6\x88\xab\x07\xa2\x93\x81?'
+tp298
+a(g5
+(g7
+S'\xfd\xb2\x99\x84\x0e\xf1k?'
+tRp299
+g5
+(g7
+S'\x0f\x04)\xc7:\x96}?'
 tRp300
-g6
-(g8
-S'\xf3\xd9\xc5;\xe9\x1a\x9f?'
-tRp301
-tp302
-a(g6
-(g8
-S'\xc9\x03\x18\xe4\x7f\x9fv?'
+tp301
+a(g5
+(g7
+S'\xfbU\xa3\x8e\x83\xe5s?'
+tRp302
+g5
+(g7
+S'J\xd9f\xda_ \x82?'
 tRp303
-g6
-(g8
-S'[\xa3\xc0\x08^K\x9c?'
-tRp304
-tp305
-a(g6
-(g8
-S'h\x04+[\x02_q?'
+tp304
+a(g5
+(g7
+S'\xdfP\xb2\x1c\xf3\x8br?'
+tRp305
+g5
+(g7
+S'\xfa\xbc\x86\xbf\x97g\x80?'
 tRp306
-g6
-(g8
-S'v:\xb9\xe7\xd1\x82\x98?'
-tRp307
-tp308
-a(g6
-(g8
-S'\x9c\xbffz\xce5o?'
+tp307
+a(g5
+(g7
+S'j\xd5\x06I=\xdek?'
+tRp308
+g5
+(g7
+S'at\xaf\xe4v7\x80?'
 tRp309
-g6
-(g8
-S'\x08R\x0e\xe6xS\x9b?'
-tRp310
-tp311
-a(g6
-(g8
-S'\xa0)\xe7\xbd\x81\x0bh?'
+tp310
+a(g5
+(g7
+S'\xf8\x07\xf8\xa6\xaf\xbfk?'
+tRp311
+g5
+(g7
+S'\xec\xe0\x08r\xde\xe7\x80?'
 tRp312
-g6
-(g8
-S'\xe8\x02\x83\x1ay\xc3\x97?'
-tRp313
-tp314
-a(g6
-(g8
-S'x\xf8\xaa\x9b\x9cYb?'
+tp313
+a(g5
+(g7
+S'\xbc\xf0y\xca\xd0\xc8o?'
+tRp314
+g5
+(g7
+S'sP\x13\x91\x927\x83?'
 tRp315
-g6
-(g8
-S'6\xce\x91\x98K\xb7\x90?'
-tRp316
-tp317
-a(g6
-(g8
-S'0\x08\x9d\xb1\x16h^?'
+tp316
+a(g5
+(g7
+S'\x9f\xba\x96I\xdd\xaep?'
+tRp317
+g5
+(g7
+S'PiV\xfdp\xe8\x84?'
 tRp318
-g6
-(g8
-S'\xcd\x06\xd4\xa9\xda\xf6\x89?'
-tRp319
-tp320
-a(g6
-(g8
-S'\xc0@\xa3\xf9\xbc5^?'
+tp319
+a(g5
+(g7
+S'\xa1\xfe\x13\x0b\xdf\x81o?'
+tRp320
+g5
+(g7
+S'\xbf\xffR\xb6\xb1\xba\x82?'
 tRp321
-g6
-(g8
-S'\xb8\xe9\xc1\x11\x19\xbe\x84?'
-tRp322
-tp323
-a(g6
-(g8
-S'\xc4>\x12>\x0e\x9dQ?'
+tp322
+a(g5
+(g7
+S'h\xc9(Kr\x83p?'
+tRp323
+g5
+(g7
+S'\x11\xff\x93j\xe9]\x81?'
 tRp324
-g6
-(g8
-S'\xfc\xba\xf8\xf8A3\x8b?'
-tRp325
-tp326
-a(g6
-(g8
-S'\xe0\xbeD\x06n\xf2S?'
+tp325
+a(g5
+(g7
+S'(\xe9\xf4v/\x8bp?'
+tRp326
+g5
+(g7
+S'\x1a\xf4\xa7\xefi\x0b\x80?'
 tRp327
-g6
-(g8
-S'\x0e\x17\x06f\xa2\xef\x87?'
-tRp328
-tp329
-a(g6
-(g8
-S'p\x90\xb2\xe9\xce]X?'
+tp328
+a(g5
+(g7
+S'$H\xe7F5\xf6s?'
+tRp329
+g5
+(g7
+S'\xb4\x96\xdc\xfePI\x7f?'
 tRp330
-g6
-(g8
-S'\x04\xe1s\xbf\xb2\x10\x83?'
-tRp331
-tp332
-a(g6
-(g8
-S'.J\xb2\xe5q\xf5X?'
+tp331
+a(g5
+(g7
+S'#j\x80x0\x05i?'
+tRp332
+g5
+(g7
+S'\x9cD\xf3\x05\xf8\xf9w?'
 tRp333
-g6
-(g8
-S'DI$\xd9\x80\xd1\x80?'
-tRp334
-tp335
-a(g6
-(g8
-S'\x0c\xd9\xf3\xcb\xad#B?'
+tp334
+a(g5
+(g7
+S'\x0c\x929\x81z\xe6h?'
+tRp335
+g5
+(g7
+S'\x0f\x18\xba\xc7\xaa\xa2\x81?'
 tRp336
-g6
-(g8
-S'\xc2;\xeefw\xfd|?'
-tRp337
-tp338
-a(g6
-(g8
-S'\x8b\x9aW\x89:dS?'
+tp337
+a(g5
+(g7
+S'R\t\x03y\xcb`h?'
+tRp338
+g5
+(g7
+S'\xeb\xb4#\xd6]5\x84?'
 tRp339
-g6
-(g8
-S'8EB\x84\x983\x82?'
-tRp340
-tp341
-a(g6
-(g8
-S'\x88t\x02\x9dbPM?'
+tp340
+a(g5
+(g7
+S'\x8eF\xaeW8\xb3e?'
+tRp341
+g5
+(g7
+S'\xce\xb1\xc76\x81Y\x81?'
 tRp342
-g6
-(g8
-S'\xf6z\xbd\xeb\x0f\x9c\x84?'
-tRp343
-tp344
-a(g6
-(g8
-S'\x94\x1b\xe9i\xc3dA?'
+tp343
+a(g5
+(g7
+S'\t\xd2\x8b\x1b\xc2SS?'
+tRp344
+g5
+(g7
+S'\xa4\xae&+Mmx?'
 tRp345
-g6
-(g8
-S'\x19\x17\x8a\\G\x1b\x83?'
-tRp346
-tp347
-a(g6
-(g8
-S'p\x92\xc6\xf3!\x85L?'
+tp346
+a(g5
+(g7
+S'\x13\x8a\x15\x8a\xa1\xf6G?'
+tRp347
+g5
+(g7
+S'#\xd3i[TCo?'
 tRp348
-g6
-(g8
-S'q\xdd]H\x98\x7f\x81?'
-tRp349
-tp350
-a(g6
-(g8
-S'\x96\x81n\xb9@ZG?'
+tp349
+a(g5
+(g7
+S'\xaew\x1co]\x0bI?'
+tRp350
+g5
+(g7
+S'\xf9?\x95\xb0\x19Ei?'
 tRp351
-g6
-(g8
-S'\xbe\x1dm\xe7:\xce~?'
-tRp352
-tp353
-a(g6
-(g8
-S'NQ\x1c\xb6\x024Y?'