diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..3c93ba89 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +*~ +vendor/ +.glide/ diff --git a/.gitignore b/.gitignore index c6debcd1..3c93ba89 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,3 @@ -.Python -*.crt -.cache -vendor *~ -*.pyc -*.idea -.vscode +vendor/ +.glide/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 60a7845a..dfd78ddc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,20 +1,7 @@ -- repo: https://github.com/dnephin/pre-commit-golang - sha: e4693a4c282b4fc878eda172a929f7a6508e7d16 - hooks: - - id: go-fmt - files: \.go$ - - id: go-lint - files: \.go$ - exclude: (.*\/client\/.*\.go|.*\generated\.deepcopy\.go)$ -- repo: https://github.com/PaddlePaddle/mirrors-yapf.git - sha: 0d79c0c469bab64f7229c9aca2b1186ef47f0e37 - hooks: - - id: yapf - files: (.*\.(py|bzl)|BUILD|.*\.BUILD|WORKSPACE)$ -- repo: local - hooks: - - id: copyright_checker - name: copyright_checker - entry: python ./.copyright.hook - language: system - files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx|proto|py)$ +- repo: git://github.com/dnephin/pre-commit-golang + sha: HEAD + hooks: + - id: go-fmt + - id: go-vet + - id: go-lint + diff --git a/.travis.yml b/.travis.yml index 33ac3969..259beed6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ matrix: go: 1.8.x sudo: required install: - - sudo apt-get install -y mercurial - go get -u github.com/golang/lint/golint - curl https://glide.sh/get | bash - sudo pip install pre-commit @@ -12,17 +11,6 @@ matrix: - rm -f .copyright.hook && wget https://raw.githubusercontent.com/PaddlePaddle/Paddle/develop/.copyright.hook - bash -x .tools/check_style.sh - ln -s $GOPATH/src/github.com/PaddlePaddle $GOPATH/src/github.com/paddlepaddle - - mkdir ~/.glide && glide mirror set https://gonum.org/v1/plot https://github.com/gonum/plot - - glide install --strip-vendor && go test $(glide novendor) - - language: python - python: 2.7 - sudo: required - env: - - DJANGO_SETTINGS_MODULE="paddlecloud.travis_settings" - before_script: - - mysql -e 'create database paddlecloud;' - - mkdir $HOME/.kube && cp ./k8s/config $HOME/.kube/ - - pip install -r python/paddlecloud/requirements.txt - - cd python/paddlecloud && python manage.py makemigrations && python manage.py migrate - script: - - python manage.py test + - cd $GOPATH/src/github.com/paddlepaddle/edl + - glide install --strip-vendor + - go test $(glide novendor) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..87926d2f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:1.8 +RUN go get github.com/Masterminds/glide +RUN apt-get update && apt-get install -y git +WORKDIR $GOPATH/src/github.com/paddlepaddle +RUN git clone https://github.com/paddlepaddle/edl.git +WORKDIR $GOPATH/src/github.com/paddlepaddle/edl +RUN glide install --strip-vendor +RUN go build -o /usr/local/bin/edl github.com/paddlepaddle/edl/cmd/edl +CMD ["edl"] diff --git a/LICENSE b/LICENSE index e77bd090..6c499964 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,3 @@ -Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved Apache License Version 2.0, January 2004 diff --git a/README.md b/README.md index a0f8960e..c16512d0 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,34 @@ -# PaddlePaddle Cloud +# PaddlePaddle EDL: Elastic Deep Learning -[![Build Status](https://travis-ci.org/PaddlePaddle/cloud.svg?branch=develop)](https://travis-ci.org/PaddlePaddle/cloud) +While many hardware and software manufacturers are working on +improving the running time of deep learning jobs, EDL optimizes -PaddlePaddle Cloud is a combination of PaddlePaddle and Kubernetes. It -supports fault-recoverable and fault-tolerant large-scaled distributed -deep learning. We can deploy it on public cloud and on-premise -clusters. +1. the global utilization of the cluster, and +1. the waiting time of job submitters. -PaddlePaddle Cloud includes the following components: +For more about the project EDL, please refer to this [invited blog +post](http://blog.kubernetes.io/2017/12/paddle-paddle-fluid-elastic-learning.html) +on the Kubernetes official blog. -- paddlectl: A command-line tool that talks to paddlecloud and - paddle-fs. -- paddlecloud: An HTTP server that exposes Kubernetes as a Web - service. -- paddle-fs: An HTTP server that exposes the CephFS distributed - filesystem as a Web service. -- EDL (elastic deep learning): A Kubernetes controller that supports - elastic scheduling of deep learning jobs and other jobs. -- Fault-tolerant distributed deep learning: This part is in - the [Paddle](https://github.com/PaddlePaddle/paddle) repo. +EDL includes two parts: -## Tutorials +1. a Kubernetes controller for the elastic scheduling of distributed + deep learning jobs, and -- [快速开始](./doc/tutorial_cn.md) -- [中文手册](./doc/usage_cn.md) +1. making PaddlePaddle a fault-tolerable deep learning framework. + This directory contains the Kubernetes controller. For more + information about fault-tolerance, please refer to the + [design](https://github.com/PaddlePaddle/Paddle/tree/develop/doc/design/cluster_train). +We deployed EDL on a real Kubernetes cluster, dlnel.com, opened for +graduate students of Tsinghua University. The performance test report +of EDL on this cluster is +[here](https://github.com/PaddlePaddle/cloud/blob/develop/doc/edl/experiment/README.md). -## How To -- [Build PaddlePaddle Cloud](./doc/howto/build.md) -- [Deploy PaddlePaddle Cloud](./doc/howto/deploy.md) -- [Elastic Deep Learning using EDL](./doc/edl/example/autoscale.md) -- [PaddlePaddle Cloud on Minikube](./doc/howto/run_on_minikube.md) +## Build -## Directory structure - -``` -. -├── demo: distributed version of https://github.com/PaddlePaddle/book programs -├── doc: documents -├── docker: scripts to build Docker image to run PaddlePaddle distributed -├── go -│   ├── cmd -│   │   ├── edl: entry of EDL controller binary -│   │   ├── paddlecloud: the command line client of PaddlePaddle Cloud (will be deprecated) -│   │   ├── paddlectl: the command line client of PaddlePaddle Cloud -│   │   └── pfsserver: entry of PaddleFS binary -│   ├── edl: EDL implementation -│   ├── filemanager: PaddleFS implementation -│   ├── paddlecloud: command line client implement (will be deprecated) -│   ├── paddlectl: command line client implement -│   ├── scripts: scripts for Go code generation -├── k8s: YAML files to create different components of PaddlePaddle Cloud -│   ├── edl: TPR definition and EDL controller for TraningJob resource -│   │   ├── autoscale_job: A sample TrainingJob that can scale -│   │   └── autoscale_load: A sample cluster job demonstrating a common workload -│   ├── minikube: YAML files to deploy on local mini-kube environment -│   └── raw_job: A demo job demonstrates how to run PaddlePaddle jobs in cluster -└── python: PaddlePaddle Cloud REST API server +```bash +glide install --strip-vendor +go build -o path/to/output github.com/paddlepaddle/edl/cmd/edl ``` diff --git a/go/cmd/edl/edl.go b/cmd/edl/edl.go similarity index 93% rename from go/cmd/edl/edl.go rename to cmd/edl/edl.go index db2eed34..197b7016 100644 --- a/go/cmd/edl/edl.go +++ b/cmd/edl/edl.go @@ -9,8 +9,8 @@ import ( "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" - "github.com/PaddlePaddle/cloud/go/edl" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" + "github.com/paddlepaddle/edl/pkg" + edlresource "github.com/paddlepaddle/edl/pkg/resource" ) func main() { diff --git a/demo/fit_a_line/train.py b/demo/fit_a_line/train.py deleted file mode 100644 index eed55abc..00000000 --- a/demo/fit_a_line/train.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle -import paddle.v2.dataset as dataset -import os -import gzip -import sys - -# NOTE: You should full fill your username, for example: -# USERNAME = "paddle@example.com" -# TODO(Yancey1989): fetch username from environment variable. -USERNAME = "YOUR USERNAME" - -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") - -#PaddleCloud cached the dataset on /pfs/${DATACENTER}/home/${USERNAME}/... -dataset.common.DATA_HOME = "/pfs/%s/home/%s" % (DC, USERNAME) -TRAIN_FILES_PATH = os.path.join(dataset.common.DATA_HOME, "uci_housing") - - -def prepare_dataset(): - dataset.common.convert(TRAIN_FILES_PATH, - dataset.uci_housing.train(), 100, "train") - - -TRAINER_ID = int(os.getenv("PADDLE_INIT_TRAINER_ID")) -TRAINER_INSTANCES = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS")) - - -def cluster_reader_recordio(paths, trainer_id, trainer_instances): - """ - Creates a cluster data reader from given RecordIO file paths, - each trainer will read a subset of the whole files set. - - :paths: path of recordio files. - :trainer_id: current trainer ID. - :trainer_instances: total trainer instances count. - :returns data reader of RecordIO files. - """ - - import recordio as rec - import pickle - import glob - - def reader(): - file_list = glob.glob(paths) - file_list.sort() - my_file_list = [] - # collect a subset files according with the trainer_id - for idx, f in enumerate(file_list): - if idx % trainer_instances == trainer_id: - my_file_list.append(f) - for f in my_file_list: - print "processing", f - reader = rec.reader(f) - record_raw = reader.read() - while record_raw: - yield pickle.loads(record_raw) - record_raw = reader.read() - reader.close() - - return reader - - -def main(): - # init - paddle.init() - - # network config - x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13)) - y_predict = paddle.layer.fc(input=x, - size=1, - act=paddle.activation.Linear()) - y = paddle.layer.data(name='y', type=paddle.data_type.dense_vector(1)) - cost = paddle.layer.square_error_cost(input=y_predict, label=y) - - # create parameters - parameters = paddle.parameters.create(cost) - - # create optimizer - optimizer = paddle.optimizer.Momentum(momentum=0) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer, - is_local=False) - - feeding = {'x': 0, 'y': 1} - - # event_handler to print training and testing info - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f" % ( - event.pass_id, event.batch_id, event.cost) - - if isinstance(event, paddle.event.EndPass): - result = trainer.test( - reader=paddle.batch( - dataset.uci_housing.test(), batch_size=2), - feeding=feeding) - print "Test %d, Cost %f" % (event.pass_id, result.cost) - if TRAINER_ID == 0: - with gzip.open("fit-a-line_pass_%05d.tar.gz" % event.pass_id, - "w") as f: - parameters.to_tar(f) - - # training - trainer.train( - reader=paddle.batch( - paddle.reader.shuffle( - cluster_reader_recordio( - os.path.join(TRAIN_FILES_PATH, "train-*"), TRAINER_ID, - TRAINER_INSTANCES), - buf_size=500), - batch_size=2), - feeding=feeding, - event_handler=event_handler, - num_passes=30) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if TRAINER_ID == -1 or TRAINER_INSTANCES == -1: - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "prepare": - prepare_dataset() - elif sys.argv[1] == "train": - main() diff --git a/demo/fit_a_line/train_ft.py b/demo/fit_a_line/train_ft.py deleted file mode 100644 index ed5e53ae..00000000 --- a/demo/fit_a_line/train_ft.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle -import os -import gzip -from paddle.v2.reader.creator import cloud_reader -import paddle.v2.dataset.uci_housing as uci_housing - -etcd_ip = os.getenv("ETCD_IP") -etcd_endpoint = "http://" + etcd_ip + ":" + "2379" -trainer_id = int(os.getenv("PADDLE_INIT_TRAINER_ID")) - - -def main(): - # init - paddle.init() - - # network config - x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13)) - y_predict = paddle.layer.fc( - input=x, - size=1, - act=paddle.activation.Linear(), - param_attr=paddle.attr.Param(learning_rate=1e-3)) - y = paddle.layer.data(name='y', type=paddle.data_type.dense_vector(1)) - cost = paddle.layer.square_error_cost(input=y_predict, label=y) - - # create parameters - parameters = paddle.parameters.create(cost) - - # create optimizer - optimizer = paddle.optimizer.Momentum(momentum=0) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - - feeding = {'x': 0, 'y': 1} - - # event_handler to print training and testing info - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f" % ( - event.pass_id, event.batch_id, event.cost) - - if isinstance(event, paddle.event.EndPass): - result = trainer.test( - reader=paddle.batch( - uci_housing.test(), batch_size=2), - feeding=feeding) - print "Test %d, Cost %f" % (event.pass_id, result.cost) - if trainer_id == "0": - with gzip.open("fit-a-line_pass_%05d.tar.gz" % event.pass_id, - "w") as f: - parameters.to_tar(f) - - # training - trainer.train( - reader=paddle.batch( - paddle.reader.shuffle( - cloud_reader([ - "/pfs/dlnel/public/dataset/uci_housing/uci_housing_train-*" - ], etcd_endpoint), - buf_size=500), - batch_size=2), - feeding=feeding, - event_handler=event_handler, - num_passes=30) - - -if __name__ == '__main__': - main() diff --git a/demo/image_classification/image/dog.png b/demo/image_classification/image/dog.png deleted file mode 100644 index ca8f858a..00000000 Binary files a/demo/image_classification/image/dog.png and /dev/null differ diff --git a/demo/image_classification/resnet.py b/demo/image_classification/resnet.py deleted file mode 100644 index c60d19fc..00000000 --- a/demo/image_classification/resnet.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle - -__all__ = ['resnet_cifar10'] - - -def conv_bn_layer(input, - ch_out, - filter_size, - stride, - padding, - active_type=paddle.activation.Relu(), - ch_in=None): - tmp = paddle.layer.img_conv( - input=input, - filter_size=filter_size, - num_channels=ch_in, - num_filters=ch_out, - stride=stride, - padding=padding, - act=paddle.activation.Linear(), - bias_attr=False) - return paddle.layer.batch_norm(input=tmp, act=active_type) - - -def shortcut(ipt, ch_in, ch_out, stride): - if ch_in != ch_out: - return conv_bn_layer(ipt, ch_out, 1, stride, 0, - paddle.activation.Linear()) - else: - return ipt - - -def basicblock(ipt, ch_in, ch_out, stride): - tmp = conv_bn_layer(ipt, ch_out, 3, stride, 1) - tmp = conv_bn_layer(tmp, ch_out, 3, 1, 1, paddle.activation.Linear()) - short = shortcut(ipt, ch_in, ch_out, stride) - return paddle.layer.addto(input=[tmp, short], act=paddle.activation.Relu()) - - -def layer_warp(block_func, ipt, ch_in, ch_out, count, stride): - tmp = block_func(ipt, ch_in, ch_out, stride) - for i in range(1, count): - tmp = block_func(tmp, ch_out, ch_out, 1) - return tmp - - -def resnet_cifar10(ipt, depth=32): - # depth should be one of 20, 32, 44, 56, 110, 1202 - assert (depth - 2) % 6 == 0 - n = (depth - 2) / 6 - nStages = {16, 64, 128} - conv1 = conv_bn_layer( - ipt, ch_in=3, ch_out=16, filter_size=3, stride=1, padding=1) - res1 = layer_warp(basicblock, conv1, 16, 16, n, 1) - res2 = layer_warp(basicblock, res1, 16, 32, n, 2) - res3 = layer_warp(basicblock, res2, 32, 64, n, 2) - pool = paddle.layer.img_pool( - input=res3, pool_size=8, stride=1, pool_type=paddle.pooling.Avg()) - return pool diff --git a/demo/image_classification/train.py b/demo/image_classification/train.py deleted file mode 100644 index a26874b3..00000000 --- a/demo/image_classification/train.py +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License - -import sys, os - -import paddle.v2 as paddle - -from vgg import vgg_bn_drop -from resnet import resnet_cifar10 - -with_gpu = os.getenv('WITH_GPU', '0') != '0' - - -def main(): - datadim = 3 * 32 * 32 - classdim = 10 - - # PaddlePaddle init - paddle.init(use_gpu=with_gpu, trainer_count=1) - - image = paddle.layer.data( - name="image", type=paddle.data_type.dense_vector(datadim)) - - # Add neural network config - # option 1. resnet - # net = resnet_cifar10(image, depth=32) - # option 2. vgg - net = vgg_bn_drop(image) - - out = paddle.layer.fc(input=net, - size=classdim, - act=paddle.activation.Softmax()) - - lbl = paddle.layer.data( - name="label", type=paddle.data_type.integer_value(classdim)) - cost = paddle.layer.classification_cost(input=out, label=lbl) - - # Create parameters - parameters = paddle.parameters.create(cost) - - # Create optimizer - momentum_optimizer = paddle.optimizer.Momentum( - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0002 * 128), - learning_rate=0.1 / 128.0, - learning_rate_decay_a=0.1, - learning_rate_decay_b=50000 * 100, - learning_rate_schedule='discexp') - - # End batch and end pass event handler - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "\nPass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - else: - sys.stdout.write('.') - sys.stdout.flush() - if isinstance(event, paddle.event.EndPass): - # save parameters - with open('params_pass_%d.tar' % event.pass_id, 'w') as f: - parameters.to_tar(f) - - result = trainer.test( - reader=paddle.batch( - paddle.dataset.cifar.test10(), batch_size=128), - feeding={'image': 0, - 'label': 1}) - print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) - - # Create trainer - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=momentum_optimizer) - - # Save the inference topology to protobuf. - inference_topology = paddle.topology.Topology(layers=out) - with open("inference_topology.pkl", 'wb') as f: - inference_topology.serialize_for_inference(f) - - trainer.train( - reader=paddle.batch( - paddle.reader.shuffle( - paddle.dataset.cifar.train10(), buf_size=50000), - batch_size=128), - num_passes=200, - event_handler=event_handler, - feeding={'image': 0, - 'label': 1}) - - # inference - from PIL import Image - import numpy as np - import os - - def load_image(file): - im = Image.open(file) - im = im.resize((32, 32), Image.ANTIALIAS) - im = np.array(im).astype(np.float32) - # The storage order of the loaded image is W(widht), - # H(height), C(channel). PaddlePaddle requires - # the CHW order, so transpose them. - im = im.transpose((2, 0, 1)) # CHW - # In the training phase, the channel order of CIFAR - # image is B(Blue), G(green), R(Red). But PIL open - # image in RGB mode. It must swap the channel order. - im = im[(2, 1, 0), :, :] # BGR - im = im.flatten() - im = im / 255.0 - return im - - test_data = [] - cur_dir = os.path.dirname(os.path.realpath(__file__)) - test_data.append((load_image(cur_dir + '/image/dog.png'), )) - - # users can remove the comments and change the model name - # with open('params_pass_50.tar', 'r') as f: - # parameters = paddle.parameters.Parameters.from_tar(f) - - probs = paddle.infer( - output_layer=out, parameters=parameters, input=test_data) - lab = np.argsort(-probs) # probs and lab are the results of one batch data - print "Label of image/dog.png is: %d" % lab[0][0] - - -if __name__ == '__main__': - main() diff --git a/demo/image_classification/train_ft.py b/demo/image_classification/train_ft.py deleted file mode 100644 index a69beddd..00000000 --- a/demo/image_classification/train_ft.py +++ /dev/null @@ -1,150 +0,0 @@ -# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License - -import sys, os - -import paddle.v2 as paddle - -from vgg import vgg_bn_drop -from resnet import resnet_cifar10 -from paddle.v2.reader.creator import cloud_reader - -with_gpu = os.getenv('WITH_GPU', '0') != '0' -etcd_ip = os.getenv("ETCD_IP") -etcd_endpoint = "http://" + etcd_ip + ":" + "2379" -testing_image_path = "/workspace/data/cifar/image/dog.png" -cifar_train10_path = "/workspace/data/cifar/cifar_train10-*" - - -def main(): - datadim = 3 * 32 * 32 - classdim = 10 - - # PaddlePaddle init - paddle.init(use_gpu=with_gpu, trainer_count=1) - - image = paddle.layer.data( - name="image", type=paddle.data_type.dense_vector(datadim)) - - # Add neural network config - # option 1. resnet - # net = resnet_cifar10(image, depth=32) - # option 2. vgg - net = vgg_bn_drop(image) - - out = paddle.layer.fc(input=net, - size=classdim, - act=paddle.activation.Softmax()) - - lbl = paddle.layer.data( - name="label", type=paddle.data_type.integer_value(classdim)) - cost = paddle.layer.classification_cost(input=out, label=lbl) - - # Create parameters - parameters = paddle.parameters.create(cost) - - # Create optimizer - momentum_optimizer = paddle.optimizer.Momentum( - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0002 * 128), - learning_rate=0.1 / 128.0, - learning_rate_decay_a=0.1, - learning_rate_decay_b=50000 * 100, - learning_rate_schedule='discexp') - - feeding = {'image': 0, 'label': 1} - - train_reader = paddle.batch( - paddle.reader.shuffle( - cloud_reader([cifar_train10_path], etcd_endpoint), buf_size=50000), - batch_size=128) - - # End batch and end pass event handler - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "\nPass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - else: - sys.stdout.write('.') - sys.stdout.flush() - - if isinstance(event, paddle.event.EndPass): - # save parameters - with open('params_pass_%d.tar' % event.pass_id, 'w') as f: - parameters.to_tar(f) - result = trainer.test( - reader=paddle.batch( - paddle.dataset.cifar.test10(), batch_size=128), - feeding=feeding) - print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) - - # Create trainer - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=momentum_optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - - # Save the inference topology to protobuf. - inference_topology = paddle.topology.Topology(layers=out) - with open("inference_topology.pkl", 'wb') as f: - inference_topology.serialize_for_inference(f) - - trainer.train( - reader=train_reader, - num_passes=1, - event_handler=event_handler, - feeding=feeding) - - # inference - from PIL import Image - import numpy as np - import os - - def load_image(file): - im = Image.open(file) - im = im.resize((32, 32), Image.ANTIALIAS) - im = np.array(im).astype(np.float32) - # The storage order of the loaded image is W(widht), - # H(height), C(channel). PaddlePaddle requires - # the CHW order, so transpose them. - im = im.transpose((2, 0, 1)) # CHW - # In the training phase, the channel order of CIFAR - # image is B(Blue), G(green), R(Red). But PIL open - # image in RGB mode. It must swap the channel order. - im = im[(2, 1, 0), :, :] # BGR - im = im.flatten() - im = im / 255.0 - return im - - test_data = [] - test_data.append((load_image(testing_image_path), )) - - # users can remove the comments and change the model name - # with open('params_pass_50.tar', 'r') as f: - # parameters = paddle.parameters.Parameters.from_tar(f) - - probs = paddle.infer( - output_layer=out, - parameters=parameters, - input=test_data, - feeding=feeding) - lab = np.argsort(-probs) # probs and lab are the results of one batch data - print "Label of image/dog.png is: %d" % lab[0][0] - - -if __name__ == '__main__': - main() diff --git a/demo/image_classification/vgg.py b/demo/image_classification/vgg.py deleted file mode 100644 index 1e0e6b93..00000000 --- a/demo/image_classification/vgg.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle - -__all__ = ['vgg_bn_drop'] - - -def vgg_bn_drop(input): - def conv_block(ipt, num_filter, groups, dropouts, num_channels=None): - return paddle.networks.img_conv_group( - input=ipt, - num_channels=num_channels, - pool_size=2, - pool_stride=2, - conv_num_filter=[num_filter] * groups, - conv_filter_size=3, - conv_act=paddle.activation.Relu(), - conv_with_batchnorm=True, - conv_batchnorm_drop_rate=dropouts, - pool_type=paddle.pooling.Max()) - - conv1 = conv_block(input, 64, 2, [0.3, 0], 3) - conv2 = conv_block(conv1, 128, 2, [0.4, 0]) - conv3 = conv_block(conv2, 256, 3, [0.4, 0.4, 0]) - conv4 = conv_block(conv3, 512, 3, [0.4, 0.4, 0]) - conv5 = conv_block(conv4, 512, 3, [0.4, 0.4, 0]) - - drop = paddle.layer.dropout(input=conv5, dropout_rate=0.5) - fc1 = paddle.layer.fc(input=drop, size=512, act=paddle.activation.Linear()) - bn = paddle.layer.batch_norm( - input=fc1, - act=paddle.activation.Relu(), - layer_attr=paddle.attr.Extra(drop_rate=0.5)) - fc2 = paddle.layer.fc(input=bn, size=512, act=paddle.activation.Linear()) - return fc2 diff --git a/demo/label_semantic_roles/train.py b/demo/label_semantic_roles/train.py deleted file mode 100644 index ffaf8c25..00000000 --- a/demo/label_semantic_roles/train.py +++ /dev/null @@ -1,272 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import math -import numpy as np -import paddle.v2 as paddle -import paddle.v2.dataset.conll05 as conll05 -import paddle.v2.evaluator as evaluator - -word_dict, verb_dict, label_dict = conll05.get_dict() -word_dict_len = len(word_dict) -label_dict_len = len(label_dict) -pred_len = len(verb_dict) - -mark_dict_len = 2 -word_dim = 32 -mark_dim = 5 -hidden_dim = 512 -depth = 8 -default_std = 1 / math.sqrt(hidden_dim) / 3.0 -mix_hidden_lr = 1e-3 - - -# TODO(helin): remove this once paddle.v2.reader.creator.recordio is -# fixed. -def recordio(paths, buf_size=100): - """ - Creates a data reader from given RecordIO file paths separated by ",", - glob pattern is supported. - :path: path of recordio files. - :returns: data reader of recordio files. - """ - - import recordio as rec - import paddle.v2.reader.decorator as dec - import cPickle as pickle - - def reader(): - f = rec.reader(paths) - while True: - r = f.read() - if r is None: - break - yield pickle.loads(r) - f.close() - - return dec.buffered(reader, buf_size) - - -def d_type(size): - return paddle.data_type.integer_value_sequence(size) - - -def db_lstm(): - #8 features - word = paddle.layer.data(name='word_data', type=d_type(word_dict_len)) - predicate = paddle.layer.data(name='verb_data', type=d_type(pred_len)) - - ctx_n2 = paddle.layer.data(name='ctx_n2_data', type=d_type(word_dict_len)) - ctx_n1 = paddle.layer.data(name='ctx_n1_data', type=d_type(word_dict_len)) - ctx_0 = paddle.layer.data(name='ctx_0_data', type=d_type(word_dict_len)) - ctx_p1 = paddle.layer.data(name='ctx_p1_data', type=d_type(word_dict_len)) - ctx_p2 = paddle.layer.data(name='ctx_p2_data', type=d_type(word_dict_len)) - mark = paddle.layer.data(name='mark_data', type=d_type(mark_dict_len)) - - emb_para = paddle.attr.Param(name='emb', initial_std=0., is_static=True) - std_0 = paddle.attr.Param(initial_std=0.) - std_default = paddle.attr.Param(initial_std=default_std) - - predicate_embedding = paddle.layer.embedding( - size=word_dim, - input=predicate, - param_attr=paddle.attr.Param( - name='vemb', initial_std=default_std)) - mark_embedding = paddle.layer.embedding( - size=mark_dim, input=mark, param_attr=std_0) - - word_input = [word, ctx_n2, ctx_n1, ctx_0, ctx_p1, ctx_p2] - emb_layers = [ - paddle.layer.embedding( - size=word_dim, input=x, param_attr=emb_para) for x in word_input - ] - emb_layers.append(predicate_embedding) - emb_layers.append(mark_embedding) - - hidden_0 = paddle.layer.mixed( - size=hidden_dim, - bias_attr=std_default, - input=[ - paddle.layer.full_matrix_projection( - input=emb, param_attr=std_default) for emb in emb_layers - ]) - - lstm_para_attr = paddle.attr.Param(initial_std=0.0, learning_rate=1.0) - hidden_para_attr = paddle.attr.Param( - initial_std=default_std, learning_rate=mix_hidden_lr) - - lstm_0 = paddle.layer.lstmemory( - input=hidden_0, - act=paddle.activation.Relu(), - gate_act=paddle.activation.Sigmoid(), - state_act=paddle.activation.Sigmoid(), - bias_attr=std_0, - param_attr=lstm_para_attr) - - #stack L-LSTM and R-LSTM with direct edges - input_tmp = [hidden_0, lstm_0] - - for i in range(1, depth): - mix_hidden = paddle.layer.mixed( - size=hidden_dim, - bias_attr=std_default, - input=[ - paddle.layer.full_matrix_projection( - input=input_tmp[0], param_attr=hidden_para_attr), - paddle.layer.full_matrix_projection( - input=input_tmp[1], param_attr=lstm_para_attr) - ]) - - lstm = paddle.layer.lstmemory( - input=mix_hidden, - act=paddle.activation.Relu(), - gate_act=paddle.activation.Sigmoid(), - state_act=paddle.activation.Sigmoid(), - reverse=((i % 2) == 1), - bias_attr=std_0, - param_attr=lstm_para_attr) - - input_tmp = [mix_hidden, lstm] - - feature_out = paddle.layer.mixed( - size=label_dict_len, - bias_attr=std_default, - input=[ - paddle.layer.full_matrix_projection( - input=input_tmp[0], param_attr=hidden_para_attr), - paddle.layer.full_matrix_projection( - input=input_tmp[1], param_attr=lstm_para_attr) - ], ) - - return feature_out - - -def load_parameter(file_name, h, w): - with open(file_name, 'rb') as f: - f.read(16) # skip header. - return np.fromfile(f, dtype=np.float32).reshape(h, w) - - -def main(): - paddle.init() - - # define network topology - feature_out = db_lstm() - target = paddle.layer.data(name='target', type=d_type(label_dict_len)) - crf_cost = paddle.layer.crf(size=label_dict_len, - input=feature_out, - label=target, - param_attr=paddle.attr.Param( - name='crfw', - initial_std=default_std, - learning_rate=mix_hidden_lr)) - - crf_dec = paddle.layer.crf_decoding( - size=label_dict_len, - input=feature_out, - label=target, - param_attr=paddle.attr.Param(name='crfw')) - evaluator.sum(input=crf_dec) - - # create parameters - parameters = paddle.parameters.create(crf_cost) - parameters.set('emb', load_parameter(conll05.get_embedding(), 44068, 32)) - - # create optimizer - optimizer = paddle.optimizer.Momentum( - momentum=0, - learning_rate=2e-2, - regularization=paddle.optimizer.L2Regularization(rate=8e-4), - model_average=paddle.optimizer.ModelAverage( - average_window=0.5, max_average_window=10000), ) - - trainer = paddle.trainer.SGD(cost=crf_cost, - parameters=parameters, - update_equation=optimizer, - extra_layers=crf_dec) - - reader = paddle.batch( - paddle.reader.shuffle( - recordio("/pfs/dlnel/public/dataset/conll05/conl105_train-*"), - buf_size=8192), - batch_size=10) - reader_test = paddle.batch( - paddle.reader.shuffle( - recordio("/pfs/dlnel/public/dataset/conll05/conl105_test-*"), - buf_size=50), - batch_size=10) - - feeding = { - 'word_data': 0, - 'ctx_n2_data': 1, - 'ctx_n1_data': 2, - 'ctx_0_data': 3, - 'ctx_p1_data': 4, - 'ctx_p2_data': 5, - 'verb_data': 6, - 'mark_data': 7, - 'target': 8 - } - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if event.batch_id % 1000 == 0: - result = trainer.test(reader=reader, feeding=feeding) - print "\nTest with Pass %d, Batch %d, %s" % ( - event.pass_id, event.batch_id, result.metrics) - - if isinstance(event, paddle.event.EndPass): - # save parameters - with open('params_pass_%d.tar' % event.pass_id, 'w') as f: - parameters.to_tar(f) - - result = trainer.test(reader=reader_test, feeding=feeding) - print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) - - trainer.train( - reader=reader, - event_handler=event_handler, - num_passes=1, - feeding=feeding) - - test_creator = paddle.dataset.conll05.test() - test_data = [] - for item in test_creator(): - test_data.append(item[0:8]) - if len(test_data) == 1: - break - - predict = paddle.layer.crf_decoding( - size=label_dict_len, - input=feature_out, - param_attr=paddle.attr.Param(name='crfw')) - probs = paddle.infer( - output_layer=predict, - parameters=parameters, - input=test_data, - field='id') - assert len(probs) == len(test_data[0][0]) - labels_reverse = {} - for (k, v) in label_dict.items(): - labels_reverse[v] = k - pre_lab = [labels_reverse[i] for i in probs] - print pre_lab - - -if __name__ == '__main__': - main() diff --git a/demo/label_semantic_roles/train_ft.py b/demo/label_semantic_roles/train_ft.py deleted file mode 100644 index a3818e98..00000000 --- a/demo/label_semantic_roles/train_ft.py +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import math -import numpy as np -import paddle.v2 as paddle -import paddle.v2.dataset.conll05 as conll05 -import paddle.v2.evaluator as evaluator -from paddle.v2.reader.creator import cloud_reader - -etcd_ip = os.getenv("ETCD_IP") -etcd_endpoint = "http://" + etcd_ip + ":" + "2379" - -word_dict, verb_dict, label_dict = conll05.get_dict() -word_dict_len = len(word_dict) -label_dict_len = len(label_dict) -pred_len = len(verb_dict) - -mark_dict_len = 2 -word_dim = 32 -mark_dim = 5 -hidden_dim = 512 -depth = 8 -default_std = 1 / math.sqrt(hidden_dim) / 3.0 -mix_hidden_lr = 1e-3 - - -def d_type(size): - return paddle.data_type.integer_value_sequence(size) - - -def db_lstm(): - #8 features - word = paddle.layer.data(name='word_data', type=d_type(word_dict_len)) - predicate = paddle.layer.data(name='verb_data', type=d_type(pred_len)) - - ctx_n2 = paddle.layer.data(name='ctx_n2_data', type=d_type(word_dict_len)) - ctx_n1 = paddle.layer.data(name='ctx_n1_data', type=d_type(word_dict_len)) - ctx_0 = paddle.layer.data(name='ctx_0_data', type=d_type(word_dict_len)) - ctx_p1 = paddle.layer.data(name='ctx_p1_data', type=d_type(word_dict_len)) - ctx_p2 = paddle.layer.data(name='ctx_p2_data', type=d_type(word_dict_len)) - mark = paddle.layer.data(name='mark_data', type=d_type(mark_dict_len)) - - emb_para = paddle.attr.Param(name='emb', initial_std=0., is_static=True) - std_0 = paddle.attr.Param(initial_std=0.) - std_default = paddle.attr.Param(initial_std=default_std) - - predicate_embedding = paddle.layer.embedding( - size=word_dim, - input=predicate, - param_attr=paddle.attr.Param( - name='vemb', initial_std=default_std)) - mark_embedding = paddle.layer.embedding( - size=mark_dim, input=mark, param_attr=std_0) - - word_input = [word, ctx_n2, ctx_n1, ctx_0, ctx_p1, ctx_p2] - emb_layers = [ - paddle.layer.embedding( - size=word_dim, input=x, param_attr=emb_para) for x in word_input - ] - emb_layers.append(predicate_embedding) - emb_layers.append(mark_embedding) - - hidden_0 = paddle.layer.mixed( - size=hidden_dim, - bias_attr=std_default, - input=[ - paddle.layer.full_matrix_projection( - input=emb, param_attr=std_default) for emb in emb_layers - ]) - - lstm_para_attr = paddle.attr.Param(initial_std=0.0, learning_rate=1.0) - hidden_para_attr = paddle.attr.Param( - initial_std=default_std, learning_rate=mix_hidden_lr) - - lstm_0 = paddle.layer.lstmemory( - input=hidden_0, - act=paddle.activation.Relu(), - gate_act=paddle.activation.Sigmoid(), - state_act=paddle.activation.Sigmoid(), - bias_attr=std_0, - param_attr=lstm_para_attr) - - #stack L-LSTM and R-LSTM with direct edges - input_tmp = [hidden_0, lstm_0] - - for i in range(1, depth): - mix_hidden = paddle.layer.mixed( - size=hidden_dim, - bias_attr=std_default, - input=[ - paddle.layer.full_matrix_projection( - input=input_tmp[0], param_attr=hidden_para_attr), - paddle.layer.full_matrix_projection( - input=input_tmp[1], param_attr=lstm_para_attr) - ]) - - lstm = paddle.layer.lstmemory( - input=mix_hidden, - act=paddle.activation.Relu(), - gate_act=paddle.activation.Sigmoid(), - state_act=paddle.activation.Sigmoid(), - reverse=((i % 2) == 1), - bias_attr=std_0, - param_attr=lstm_para_attr) - - input_tmp = [mix_hidden, lstm] - - feature_out = paddle.layer.mixed( - size=label_dict_len, - bias_attr=std_default, - input=[ - paddle.layer.full_matrix_projection( - input=input_tmp[0], param_attr=hidden_para_attr), - paddle.layer.full_matrix_projection( - input=input_tmp[1], param_attr=lstm_para_attr) - ], ) - - return feature_out - - -def load_parameter(file_name, h, w): - with open(file_name, 'rb') as f: - f.read(16) # skip header. - return np.fromfile(f, dtype=np.float32).reshape(h, w) - - -def main(): - paddle.init() - - # define network topology - feature_out = db_lstm() - target = paddle.layer.data(name='target', type=d_type(label_dict_len)) - crf_cost = paddle.layer.crf(size=label_dict_len, - input=feature_out, - label=target, - param_attr=paddle.attr.Param( - name='crfw', - initial_std=default_std, - learning_rate=mix_hidden_lr)) - - crf_dec = paddle.layer.crf_decoding( - size=label_dict_len, - input=feature_out, - label=target, - param_attr=paddle.attr.Param(name='crfw')) - evaluator.sum(input=crf_dec) - - # create parameters - parameters = paddle.parameters.create(crf_cost) - parameters.set('emb', load_parameter(conll05.get_embedding(), 44068, 32)) - - # create optimizer - optimizer = paddle.optimizer.Momentum( - momentum=0, - learning_rate=2e-2, - regularization=paddle.optimizer.L2Regularization(rate=8e-4), - model_average=paddle.optimizer.ModelAverage( - average_window=0.5, max_average_window=10000), ) - - trainer = paddle.trainer.SGD(cost=crf_cost, - parameters=parameters, - update_equation=optimizer, - extra_layers=crf_dec) - - reader = paddle.batch( - paddle.reader.shuffle( - cloud_reader( - ["/pfs/dlnel/public/dataset/conll05/conl105_train-*"], - etcd_endpoint), - buf_size=8192), - batch_size=10) - - feeding = { - 'word_data': 0, - 'ctx_n2_data': 1, - 'ctx_n1_data': 2, - 'ctx_0_data': 3, - 'ctx_p1_data': 4, - 'ctx_p2_data': 5, - 'verb_data': 6, - 'mark_data': 7, - 'target': 8 - } - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if event.batch_id % 1000 == 0: - result = trainer.test(reader=reader, feeding=feeding) - print "\nTest with Pass %d, Batch %d, %s" % ( - event.pass_id, event.batch_id, result.metrics) - - if isinstance(event, paddle.event.EndPass): - # save parameters - with open('params_pass_%d.tar' % event.pass_id, 'w') as f: - parameters.to_tar(f) - - result = trainer.test( - reader=paddle.batch(conll05.test(), 10), feeding=feeding) - print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) - - trainer.train( - reader=reader, - event_handler=event_handler, - num_passes=1, - feeding=feeding) - - test_creator = paddle.dataset.conll05.test() - test_data = [] - for item in test_creator(): - test_data.append(item[0:8]) - if len(test_data) == 1: - break - - predict = paddle.layer.crf_decoding( - size=label_dict_len, - input=feature_out, - param_attr=paddle.attr.Param(name='crfw')) - probs = paddle.infer( - output_layer=predict, - parameters=parameters, - input=test_data, - feeding=feeding, - field='id') - assert len(probs) == len(test_data[0][0]) - labels_reverse = {} - for (k, v) in label_dict.items(): - labels_reverse[v] = k - pre_lab = [labels_reverse[i] for i in probs] - print pre_lab - - -if __name__ == '__main__': - main() diff --git a/demo/machine_translation/train.py b/demo/machine_translation/train.py deleted file mode 100644 index 8b96743b..00000000 --- a/demo/machine_translation/train.py +++ /dev/null @@ -1,275 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import sys -import numpy as np - -import paddle.v2 as paddle - - -# TODO(helin): remove this once paddle.v2.reader.creator.recordio is -# fixed. -def recordio(paths, buf_size=100): - """ - Creates a data reader from given RecordIO file paths separated by ",", - glob pattern is supported. - :path: path of recordio files. - :returns: data reader of recordio files. - """ - - import recordio as rec - import paddle.v2.reader.decorator as dec - import cPickle as pickle - - def reader(): - f = rec.reader(paths) - while True: - r = f.read() - if r is None: - break - yield pickle.loads(r) - f.close() - - return dec.buffered(reader, buf_size) - - -def save_model(parameters, save_path): - with open(save_path, 'w') as f: - parameters.to_tar(f) - - -def seq_to_seq_net(source_dict_dim, - target_dict_dim, - is_generating, - beam_size=3, - max_length=250): - ### Network Architecture - word_vector_dim = 512 # dimension of word vector - decoder_size = 512 # dimension of hidden unit of GRU decoder - encoder_size = 512 # dimension of hidden unit of GRU encoder - - #### Encoder - src_word_id = paddle.layer.data( - name='source_language_word', - type=paddle.data_type.integer_value_sequence(source_dict_dim)) - src_embedding = paddle.layer.embedding( - input=src_word_id, size=word_vector_dim) - src_forward = paddle.networks.simple_gru( - input=src_embedding, size=encoder_size) - src_backward = paddle.networks.simple_gru( - input=src_embedding, size=encoder_size, reverse=True) - encoded_vector = paddle.layer.concat(input=[src_forward, src_backward]) - - #### Decoder - encoded_proj = paddle.layer.fc(act=paddle.activation.Linear(), - size=decoder_size, - bias_attr=False, - input=encoded_vector) - - backward_first = paddle.layer.first_seq(input=src_backward) - - decoder_boot = paddle.layer.fc(size=decoder_size, - act=paddle.activation.Tanh(), - bias_attr=False, - input=backward_first) - - def gru_decoder_with_attention(enc_vec, enc_proj, current_word): - - decoder_mem = paddle.layer.memory( - name='gru_decoder', size=decoder_size, boot_layer=decoder_boot) - - context = paddle.networks.simple_attention( - encoded_sequence=enc_vec, - encoded_proj=enc_proj, - decoder_state=decoder_mem) - - decoder_inputs = paddle.layer.fc( - act=paddle.activation.Linear(), - size=decoder_size * 3, - bias_attr=False, - input=[context, current_word], - layer_attr=paddle.attr.ExtraLayerAttribute( - error_clipping_threshold=100.0)) - - gru_step = paddle.layer.gru_step( - name='gru_decoder', - input=decoder_inputs, - output_mem=decoder_mem, - size=decoder_size) - - out = paddle.layer.fc(size=target_dict_dim, - bias_attr=True, - act=paddle.activation.Softmax(), - input=gru_step) - return out - - decoder_group_name = 'decoder_group' - group_input1 = paddle.layer.StaticInput(input=encoded_vector) - group_input2 = paddle.layer.StaticInput(input=encoded_proj) - group_inputs = [group_input1, group_input2] - - if not is_generating: - trg_embedding = paddle.layer.embedding( - input=paddle.layer.data( - name='target_language_word', - type=paddle.data_type.integer_value_sequence(target_dict_dim)), - size=word_vector_dim, - param_attr=paddle.attr.ParamAttr( - name='_target_language_embedding')) - group_inputs.append(trg_embedding) - - # For decoder equipped with attention mechanism, in training, - # target embeding (the groudtruth) is the data input, - # while encoded source sequence is accessed to as an unbounded memory. - # Here, the StaticInput defines a read-only memory - # for the recurrent_group. - decoder = paddle.layer.recurrent_group( - name=decoder_group_name, - step=gru_decoder_with_attention, - input=group_inputs) - - lbl = paddle.layer.data( - name='target_language_next_word', - type=paddle.data_type.integer_value_sequence(target_dict_dim)) - cost = paddle.layer.classification_cost(input=decoder, label=lbl) - - return cost - else: - # In generation, the decoder predicts a next target word based on - # the encoded source sequence and the previous generated target word. - - # The encoded source sequence (encoder's output) must be specified by - # StaticInput, which is a read-only memory. - # Embedding of the previous generated word is automatically retrieved - # by GeneratedInputs initialized by a start mark . - - trg_embedding = paddle.layer.GeneratedInput( - size=target_dict_dim, - embedding_name='_target_language_embedding', - embedding_size=word_vector_dim) - group_inputs.append(trg_embedding) - - beam_gen = paddle.layer.beam_search( - name=decoder_group_name, - step=gru_decoder_with_attention, - input=group_inputs, - bos_id=0, - eos_id=1, - beam_size=beam_size, - max_length=max_length) - - return beam_gen - - -def main(): - paddle.init() - is_generating = False - - # source and target dict dim. - dict_size = 30000 - source_dict_dim = target_dict_dim = dict_size - - # train the network - if not is_generating: - # define optimize method and trainer - optimizer = paddle.optimizer.Adam( - learning_rate=5e-5, - regularization=paddle.optimizer.L2Regularization(rate=8e-4)) - - cost = seq_to_seq_net(source_dict_dim, target_dict_dim, is_generating) - parameters = paddle.parameters.create(cost) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer) - # define data reader - wmt14_reader = paddle.batch( - paddle.reader.shuffle( - recordio("/pfs/dlnel/public/dataset/wmt14/wmt14_train-*"), - buf_size=8192), - batch_size=4) - - # define event_handler callback - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 10 == 0: - print("\nPass %d, Batch %d, Cost %f, %s" % - (event.pass_id, event.batch_id, event.cost, - event.metrics)) - else: - sys.stdout.write('.') - sys.stdout.flush() - - if not event.batch_id % 10: - save_path = 'params_pass_%05d_batch_%05d.tar' % ( - event.pass_id, event.batch_id) - save_model(parameters, save_path) - - if isinstance(event, paddle.event.EndPass): - # save parameters - save_path = 'params_pass_%05d.tar' % (event.pass_id) - save_model(parameters, save_path) - - # start to train - trainer.train( - reader=wmt14_reader, event_handler=event_handler, num_passes=2) - - # generate a english sequence to french - else: - # use the first 3 samples for generation - gen_data = [] - gen_num = 3 - for item in paddle.dataset.wmt14.gen(dict_size)(): - gen_data.append([item[0]]) - if len(gen_data) == gen_num: - break - - beam_size = 3 - beam_gen = seq_to_seq_net(source_dict_dim, target_dict_dim, - is_generating, beam_size) - - # get the trained model, whose bleu = 26.92 - parameters = paddle.dataset.wmt14.model() - - # prob is the prediction probabilities, and id is the prediction word. - beam_result = paddle.infer( - output_layer=beam_gen, - parameters=parameters, - input=gen_data, - field=['prob', 'id']) - - # load the dictionary - src_dict, trg_dict = paddle.dataset.wmt14.get_dict(dict_size) - - gen_sen_idx = np.where(beam_result[1] == -1)[0] - assert len(gen_sen_idx) == len(gen_data) * beam_size - - # -1 is the delimiter of generated sequences. - # the first element of each generated sequence its length. - start_pos, end_pos = 1, 0 - for i, sample in enumerate(gen_data): - print( - " ".join([src_dict[w] for w in sample[0][1:-1]]) - ) # skip the start and ending mark when printing the source sentence - for j in xrange(beam_size): - end_pos = gen_sen_idx[i * beam_size + j] - print("%.4f\t%s" % (beam_result[0][i][j], " ".join( - trg_dict[w] for w in beam_result[1][start_pos:end_pos]))) - start_pos = end_pos + 2 - print("\n") - - -if __name__ == '__main__': - main() diff --git a/demo/machine_translation/train_ft.py b/demo/machine_translation/train_ft.py deleted file mode 100644 index 4b84a154..00000000 --- a/demo/machine_translation/train_ft.py +++ /dev/null @@ -1,255 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import sys -import numpy as np - -import paddle.v2 as paddle -from paddle.v2.reader.creator import cloud_reader - -etcd_ip = os.getenv("ETCD_IP") -etcd_endpoint = "http://" + etcd_ip + ":" + "2379" - - -def save_model(parameters, save_path): - with open(save_path, 'w') as f: - parameters.to_tar(f) - - -def seq_to_seq_net(source_dict_dim, - target_dict_dim, - is_generating, - beam_size=3, - max_length=250): - ### Network Architecture - word_vector_dim = 512 # dimension of word vector - decoder_size = 512 # dimension of hidden unit of GRU decoder - encoder_size = 512 # dimension of hidden unit of GRU encoder - - #### Encoder - src_word_id = paddle.layer.data( - name='source_language_word', - type=paddle.data_type.integer_value_sequence(source_dict_dim)) - src_embedding = paddle.layer.embedding( - input=src_word_id, size=word_vector_dim) - src_forward = paddle.networks.simple_gru( - input=src_embedding, size=encoder_size) - src_backward = paddle.networks.simple_gru( - input=src_embedding, size=encoder_size, reverse=True) - encoded_vector = paddle.layer.concat(input=[src_forward, src_backward]) - - #### Decoder - encoded_proj = paddle.layer.fc(act=paddle.activation.Linear(), - size=decoder_size, - bias_attr=False, - input=encoded_vector) - - backward_first = paddle.layer.first_seq(input=src_backward) - - decoder_boot = paddle.layer.fc(size=decoder_size, - act=paddle.activation.Tanh(), - bias_attr=False, - input=backward_first) - - def gru_decoder_with_attention(enc_vec, enc_proj, current_word): - - decoder_mem = paddle.layer.memory( - name='gru_decoder', size=decoder_size, boot_layer=decoder_boot) - - context = paddle.networks.simple_attention( - encoded_sequence=enc_vec, - encoded_proj=enc_proj, - decoder_state=decoder_mem) - - decoder_inputs = paddle.layer.fc( - act=paddle.activation.Linear(), - size=decoder_size * 3, - bias_attr=False, - input=[context, current_word], - layer_attr=paddle.attr.ExtraLayerAttribute( - error_clipping_threshold=100.0)) - - gru_step = paddle.layer.gru_step( - name='gru_decoder', - input=decoder_inputs, - output_mem=decoder_mem, - size=decoder_size) - - out = paddle.layer.fc(size=target_dict_dim, - bias_attr=True, - act=paddle.activation.Softmax(), - input=gru_step) - return out - - decoder_group_name = 'decoder_group' - group_input1 = paddle.layer.StaticInput(input=encoded_vector) - group_input2 = paddle.layer.StaticInput(input=encoded_proj) - group_inputs = [group_input1, group_input2] - - if not is_generating: - trg_embedding = paddle.layer.embedding( - input=paddle.layer.data( - name='target_language_word', - type=paddle.data_type.integer_value_sequence(target_dict_dim)), - size=word_vector_dim, - param_attr=paddle.attr.ParamAttr( - name='_target_language_embedding')) - group_inputs.append(trg_embedding) - - # For decoder equipped with attention mechanism, in training, - # target embeding (the groudtruth) is the data input, - # while encoded source sequence is accessed to as an unbounded memory. - # Here, the StaticInput defines a read-only memory - # for the recurrent_group. - decoder = paddle.layer.recurrent_group( - name=decoder_group_name, - step=gru_decoder_with_attention, - input=group_inputs) - - lbl = paddle.layer.data( - name='target_language_next_word', - type=paddle.data_type.integer_value_sequence(target_dict_dim)) - cost = paddle.layer.classification_cost(input=decoder, label=lbl) - - return cost - else: - # In generation, the decoder predicts a next target word based on - # the encoded source sequence and the previous generated target word. - - # The encoded source sequence (encoder's output) must be specified by - # StaticInput, which is a read-only memory. - # Embedding of the previous generated word is automatically retrieved - # by GeneratedInputs initialized by a start mark . - - trg_embedding = paddle.layer.GeneratedInput( - size=target_dict_dim, - embedding_name='_target_language_embedding', - embedding_size=word_vector_dim) - group_inputs.append(trg_embedding) - - beam_gen = paddle.layer.beam_search( - name=decoder_group_name, - step=gru_decoder_with_attention, - input=group_inputs, - bos_id=0, - eos_id=1, - beam_size=beam_size, - max_length=max_length) - - return beam_gen - - -def main(): - paddle.init() - is_generating = False - - # source and target dict dim. - dict_size = 30000 - source_dict_dim = target_dict_dim = dict_size - - # train the network - if not is_generating: - # define optimize method and trainer - optimizer = paddle.optimizer.Adam( - learning_rate=5e-5, - regularization=paddle.optimizer.L2Regularization(rate=8e-4)) - - cost = seq_to_seq_net(source_dict_dim, target_dict_dim, is_generating) - parameters = paddle.parameters.create(cost) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer) - # define data reader - wmt14_reader = paddle.batch( - paddle.reader.shuffle( - cloud_reader( - ["/pfs/dlnel/public/dataset/wmt14/wmt14_train-*"], - etcd_endpoint), - buf_size=8192), - batch_size=4) - - # define event_handler callback - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 10 == 0: - print("\nPass %d, Batch %d, Cost %f, %s" % - (event.pass_id, event.batch_id, event.cost, - event.metrics)) - else: - sys.stdout.write('.') - sys.stdout.flush() - - if not event.batch_id % 10: - save_path = 'params_pass_%05d_batch_%05d.tar' % ( - event.pass_id, event.batch_id) - save_model(parameters, save_path) - - if isinstance(event, paddle.event.EndPass): - # save parameters - save_path = 'params_pass_%05d.tar' % (event.pass_id) - save_model(parameters, save_path) - - # start to train - trainer.train( - reader=wmt14_reader, event_handler=event_handler, num_passes=2) - - # generate a english sequence to french - else: - # use the first 3 samples for generation - gen_data = [] - gen_num = 3 - for item in paddle.dataset.wmt14.gen(dict_size)(): - gen_data.append([item[0]]) - if len(gen_data) == gen_num: - break - - beam_size = 3 - beam_gen = seq_to_seq_net(source_dict_dim, target_dict_dim, - is_generating, beam_size) - - # get the trained model, whose bleu = 26.92 - parameters = paddle.dataset.wmt14.model() - - # prob is the prediction probabilities, and id is the prediction word. - beam_result = paddle.infer( - output_layer=beam_gen, - parameters=parameters, - input=gen_data, - field=['prob', 'id']) - - # load the dictionary - src_dict, trg_dict = paddle.dataset.wmt14.get_dict(dict_size) - - gen_sen_idx = np.where(beam_result[1] == -1)[0] - assert len(gen_sen_idx) == len(gen_data) * beam_size - - # -1 is the delimiter of generated sequences. - # the first element of each generated sequence its length. - start_pos, end_pos = 1, 0 - for i, sample in enumerate(gen_data): - print( - " ".join([src_dict[w] for w in sample[0][1:-1]]) - ) # skip the start and ending mark when printing the source sentence - for j in xrange(beam_size): - end_pos = gen_sen_idx[i * beam_size + j] - print("%.4f\t%s" % (beam_result[0][i][j], " ".join( - trg_dict[w] for w in beam_result[1][start_pos:end_pos]))) - start_pos = end_pos + 2 - print("\n") - - -if __name__ == '__main__': - main() diff --git a/demo/recognize_digits/train.py b/demo/recognize_digits/train.py deleted file mode 100644 index 68d13549..00000000 --- a/demo/recognize_digits/train.py +++ /dev/null @@ -1,182 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from PIL import Image -import numpy as np -import paddle.v2 as paddle -import paddle.v2.dataset.common as common -import os -import sys -import glob -import pickle - -# NOTE: must change this to your own username on paddlecloud. -USERNAME = "wanghaoshuang@baidu.com" -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") -common.DATA_HOME = "/pfs/%s/home/%s" % (DC, USERNAME) -TRAIN_FILES_PATH = os.path.join(common.DATA_HOME, "mnist") -TEST_FILES_PATH = os.path.join(common.DATA_HOME, "mnist") - -TRAINER_ID = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) -TRAINER_COUNT = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "-1")) - - -def prepare_dataset(): - # convert will also split the dataset by line-count - common.convert(TRAIN_FILES_PATH, - paddle.dataset.mnist.train(), 8192, "train") - common.convert(TEST_FILES_PATH, paddle.dataset.mnist.test(), 1, "test") - - -def cluster_reader_recordio(trainer_id, trainer_count, flag): - ''' - read from cloud dataset which is stored as recordio format - each trainer will read a subset of files of the whole dataset. - ''' - import recordio - - def reader(): - PATTERN_STR = "%s-*" % flag - FILES_PATTERN = os.path.join(TRAIN_FILES_PATH, PATTERN_STR) - file_list = glob.glob(FILES_PATTERN) - file_list.sort() - my_file_list = [] - # read files for current trainer_id - for idx, f in enumerate(file_list): - if idx % trainer_count == trainer_id: - my_file_list.append(f) - for f in my_file_list: - print "processing ", f - reader = recordio.reader(f) - record_raw = reader.read() - while record_raw: - yield pickle.loads(record_raw) - record_raw = reader.read() - reader.close() - - return reader - - -def softmax_regression(img): - predict = paddle.layer.fc(input=img, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def multilayer_perceptron(img): - # The first fully-connected layer - hidden1 = paddle.layer.fc(input=img, - size=128, - act=paddle.activation.Relu()) - # The second fully-connected layer and the according activation function - hidden2 = paddle.layer.fc(input=hidden1, - size=64, - act=paddle.activation.Relu()) - # The thrid fully-connected layer, note that the hidden size should be 10, - # which is the number of unique digits - predict = paddle.layer.fc(input=hidden2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def convolutional_neural_network(img): - # first conv layer - conv_pool_1 = paddle.networks.simple_img_conv_pool( - input=img, - filter_size=5, - num_filters=20, - num_channel=1, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # second conv layer - conv_pool_2 = paddle.networks.simple_img_conv_pool( - input=conv_pool_1, - filter_size=5, - num_filters=50, - num_channel=20, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # fully-connected layer - predict = paddle.layer.fc(input=conv_pool_2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def main(): - paddle.init() - - # define network topology - images = paddle.layer.data( - name='pixel', type=paddle.data_type.dense_vector(784)) - label = paddle.layer.data( - name='label', type=paddle.data_type.integer_value(10)) - - # Here we can build the prediction network in different ways. Please - # choose one by uncomment corresponding line. - # predict = softmax_regression(images) - # predict = multilayer_perceptron(images) - predict = convolutional_neural_network(images) - - cost = paddle.layer.classification_cost(input=predict, label=label) - - parameters = paddle.parameters.create(cost) - - optimizer = paddle.optimizer.Momentum( - learning_rate=0.1 / 128.0, - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer) - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if isinstance(event, paddle.event.EndPass): - result = trainer.test(reader=paddle.batch( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "test"), - batch_size=2)) - print "Test with Pass %d, Cost %f, %s\n" % ( - event.pass_id, result.cost, result.metrics) - - trainer.train( - reader=paddle.batch( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "train"), - batch_size=128), - event_handler=event_handler, - num_passes=5) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if TRAINER_ID == -1 or TRAINER_COUNT == -1: - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "prepare": - prepare_dataset() - elif sys.argv[1] == "train": - main() diff --git a/demo/recognize_digits/train_ft.py b/demo/recognize_digits/train_ft.py deleted file mode 100644 index 07b325d2..00000000 --- a/demo/recognize_digits/train_ft.py +++ /dev/null @@ -1,187 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from PIL import Image -import numpy as np -import paddle.v2 as paddle -import paddle.v2.dataset.common as common -import os -import sys -import glob -import pickle - -# NOTE: must change this to your own username on paddlecloud. -USERNAME = "demo" -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") -common.DATA_HOME = "/pfs/%s/home/%s" % (DC, USERNAME) -TRAIN_FILES_PATH = os.path.join(common.DATA_HOME, "mnist") -TEST_FILES_PATH = os.path.join(common.DATA_HOME, "mnist") - -TRAINER_ID = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) -TRAINER_COUNT = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "-1")) - - -def prepare_dataset(): - # convert will also split the dataset by line-count - common.convert(TRAIN_FILES_PATH, - paddle.dataset.mnist.train(), 8192, "train") - common.convert(TEST_FILES_PATH, paddle.dataset.mnist.test(), 512, "test") - - -def cluster_reader_recordio(trainer_id, trainer_count, flag): - ''' - read from cloud dataset which is stored as recordio format - each trainer will read a subset of files of the whole dataset. - ''' - import recordio - - def reader(): - PATTERN_STR = "%s-*" % flag - FILES_PATTERN = os.path.join(TRAIN_FILES_PATH, PATTERN_STR) - file_list = glob.glob(FILES_PATTERN) - file_list.sort() - my_file_list = [] - # read files for current trainer_id - for idx, f in enumerate(file_list): - if idx % trainer_count == trainer_id: - my_file_list.append(f) - for f in my_file_list: - print "processing ", f - reader = recordio.reader(f) - record_raw = reader.read() - while record_raw: - yield pickle.loads(record_raw) - record_raw = reader.read() - reader.close() - - return reader - - -def softmax_regression(img): - predict = paddle.layer.fc(input=img, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def multilayer_perceptron(img): - # The first fully-connected layer - hidden1 = paddle.layer.fc(input=img, - size=128, - act=paddle.activation.Relu()) - # The second fully-connected layer and the according activation function - hidden2 = paddle.layer.fc(input=hidden1, - size=64, - act=paddle.activation.Relu()) - # The thrid fully-connected layer, note that the hidden size should be 10, - # which is the number of unique digits - predict = paddle.layer.fc(input=hidden2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def convolutional_neural_network(img): - # first conv layer - conv_pool_1 = paddle.networks.simple_img_conv_pool( - input=img, - filter_size=5, - num_filters=20, - num_channel=1, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # second conv layer - conv_pool_2 = paddle.networks.simple_img_conv_pool( - input=conv_pool_1, - filter_size=5, - num_filters=50, - num_channel=20, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # fully-connected layer - predict = paddle.layer.fc(input=conv_pool_2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def main(): - etcd_ip = os.getenv("ETCD_IP") - etcd_endpoint = "http://" + etcd_ip + ":" + "2379" - paddle.init() - - # define network topology - images = paddle.layer.data( - name='pixel', type=paddle.data_type.dense_vector(784)) - label = paddle.layer.data( - name='label', type=paddle.data_type.integer_value(10)) - - # Here we can build the prediction network in different ways. Please - # choose one by uncomment corresponding line. - # predict = softmax_regression(images) - # predict = multilayer_perceptron(images) - predict = convolutional_neural_network(images) - - cost = paddle.layer.classification_cost(input=predict, label=label) - - parameters = paddle.parameters.create(cost) - - optimizer = paddle.optimizer.Momentum( - learning_rate=0.1 / 128.0, - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if isinstance(event, paddle.event.EndPass): - result = trainer.test(reader=paddle.batch( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "test"), - batch_size=2)) - print "Test with Pass %d, Cost %f, %s\n" % ( - event.pass_id, result.cost, result.metrics) - - trainer.train( - reader=paddle.batch( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "train"), - batch_size=128), - event_handler=event_handler, - num_passes=5) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if TRAINER_ID == -1 or TRAINER_COUNT == -1: - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "prepare": - prepare_dataset() - elif sys.argv[1] == "train": - main() diff --git a/demo/recommender_system/train.py b/demo/recommender_system/train.py deleted file mode 100644 index a7ac8425..00000000 --- a/demo/recommender_system/train.py +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import copy - -import paddle.v2 as paddle - - -# TODO(helin): remove this once paddle.v2.reader.creator.recordio is -# fixed. -def recordio(paths, buf_size=100): - """ - Creates a data reader from given RecordIO file paths separated by ",", - glob pattern is supported. - :path: path of recordio files. - :returns: data reader of recordio files. - """ - - import recordio as rec - import paddle.v2.reader.decorator as dec - import cPickle as pickle - - def reader(): - f = rec.reader(paths) - while True: - r = f.read() - if r is None: - break - yield pickle.loads(r) - f.close() - - return dec.buffered(reader, buf_size) - - -def get_usr_combined_features(): - uid = paddle.layer.data( - name='user_id', - type=paddle.data_type.integer_value( - paddle.dataset.movielens.max_user_id() + 1)) - usr_emb = paddle.layer.embedding(input=uid, size=32) - usr_fc = paddle.layer.fc(input=usr_emb, size=32) - - usr_gender_id = paddle.layer.data( - name='gender_id', type=paddle.data_type.integer_value(2)) - usr_gender_emb = paddle.layer.embedding(input=usr_gender_id, size=16) - usr_gender_fc = paddle.layer.fc(input=usr_gender_emb, size=16) - - usr_age_id = paddle.layer.data( - name='age_id', - type=paddle.data_type.integer_value( - len(paddle.dataset.movielens.age_table))) - usr_age_emb = paddle.layer.embedding(input=usr_age_id, size=16) - usr_age_fc = paddle.layer.fc(input=usr_age_emb, size=16) - - usr_job_id = paddle.layer.data( - name='job_id', - type=paddle.data_type.integer_value( - paddle.dataset.movielens.max_job_id() + 1)) - usr_job_emb = paddle.layer.embedding(input=usr_job_id, size=16) - usr_job_fc = paddle.layer.fc(input=usr_job_emb, size=16) - - usr_combined_features = paddle.layer.fc( - input=[usr_fc, usr_gender_fc, usr_age_fc, usr_job_fc], - size=200, - act=paddle.activation.Tanh()) - return usr_combined_features - - -def get_mov_combined_features(): - movie_title_dict = paddle.dataset.movielens.get_movie_title_dict() - mov_id = paddle.layer.data( - name='movie_id', - type=paddle.data_type.integer_value( - paddle.dataset.movielens.max_movie_id() + 1)) - mov_emb = paddle.layer.embedding(input=mov_id, size=32) - mov_fc = paddle.layer.fc(input=mov_emb, size=32) - - mov_categories = paddle.layer.data( - name='category_id', - type=paddle.data_type.sparse_binary_vector( - len(paddle.dataset.movielens.movie_categories()))) - mov_categories_hidden = paddle.layer.fc(input=mov_categories, size=32) - - mov_title_id = paddle.layer.data( - name='movie_title', - type=paddle.data_type.integer_value_sequence(len(movie_title_dict))) - mov_title_emb = paddle.layer.embedding(input=mov_title_id, size=32) - mov_title_conv = paddle.networks.sequence_conv_pool( - input=mov_title_emb, hidden_size=32, context_len=3) - - mov_combined_features = paddle.layer.fc( - input=[mov_fc, mov_categories_hidden, mov_title_conv], - size=200, - act=paddle.activation.Tanh()) - return mov_combined_features - - -def main(): - paddle.init() - usr_combined_features = get_usr_combined_features() - mov_combined_features = get_mov_combined_features() - inference = paddle.layer.cos_sim( - a=usr_combined_features, b=mov_combined_features, size=1, scale=5) - cost = paddle.layer.square_error_cost( - input=inference, - label=paddle.layer.data( - name='score', type=paddle.data_type.dense_vector(1))) - - parameters = paddle.parameters.create(cost) - - trainer = paddle.trainer.SGD( - cost=cost, - parameters=parameters, - update_equation=paddle.optimizer.Adam(learning_rate=1e-4)) - feeding = { - 'user_id': 0, - 'gender_id': 1, - 'age_id': 2, - 'job_id': 3, - 'movie_id': 4, - 'category_id': 5, - 'movie_title': 6, - 'score': 7 - } - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d Batch %d Cost %.2f" % ( - event.pass_id, event.batch_id, event.cost) - - trainer.train( - reader=paddle.batch( - paddle.reader.shuffle( - recordio( - "/pfs/dlnel/public/dataset/movielens/movielens_train-*"), - buf_size=8192), - batch_size=256), - event_handler=event_handler, - feeding=feeding, - num_passes=1) - - user_id = 234 - movie_id = 345 - - user = paddle.dataset.movielens.user_info()[user_id] - movie = paddle.dataset.movielens.movie_info()[movie_id] - - feature = user.value() + movie.value() - - infer_dict = copy.copy(feeding) - del infer_dict['score'] - - prediction = paddle.infer( - output_layer=inference, - parameters=parameters, - input=[feature], - feeding=infer_dict) - print(prediction + 5) / 2 - - -if __name__ == '__main__': - main() diff --git a/demo/recommender_system/train_ft.py b/demo/recommender_system/train_ft.py deleted file mode 100644 index c3dcbc45..00000000 --- a/demo/recommender_system/train_ft.py +++ /dev/null @@ -1,154 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import copy - -import paddle.v2 as paddle -from paddle.v2.reader.creator import cloud_reader - -master_ip = os.getenv("MASTER_IP") -etcd_endpoint = "http://" + master_ip + ":" + "2379" - - -def get_usr_combined_features(): - uid = paddle.layer.data( - name='user_id', - type=paddle.data_type.integer_value( - paddle.dataset.movielens.max_user_id() + 1)) - usr_emb = paddle.layer.embedding(input=uid, size=32) - usr_fc = paddle.layer.fc(input=usr_emb, size=32) - - usr_gender_id = paddle.layer.data( - name='gender_id', type=paddle.data_type.integer_value(2)) - usr_gender_emb = paddle.layer.embedding(input=usr_gender_id, size=16) - usr_gender_fc = paddle.layer.fc(input=usr_gender_emb, size=16) - - usr_age_id = paddle.layer.data( - name='age_id', - type=paddle.data_type.integer_value( - len(paddle.dataset.movielens.age_table))) - usr_age_emb = paddle.layer.embedding(input=usr_age_id, size=16) - usr_age_fc = paddle.layer.fc(input=usr_age_emb, size=16) - - usr_job_id = paddle.layer.data( - name='job_id', - type=paddle.data_type.integer_value( - paddle.dataset.movielens.max_job_id() + 1)) - usr_job_emb = paddle.layer.embedding(input=usr_job_id, size=16) - usr_job_fc = paddle.layer.fc(input=usr_job_emb, size=16) - - usr_combined_features = paddle.layer.fc( - input=[usr_fc, usr_gender_fc, usr_age_fc, usr_job_fc], - size=200, - act=paddle.activation.Tanh()) - return usr_combined_features - - -def get_mov_combined_features(): - movie_title_dict = paddle.dataset.movielens.get_movie_title_dict() - mov_id = paddle.layer.data( - name='movie_id', - type=paddle.data_type.integer_value( - paddle.dataset.movielens.max_movie_id() + 1)) - mov_emb = paddle.layer.embedding(input=mov_id, size=32) - mov_fc = paddle.layer.fc(input=mov_emb, size=32) - - mov_categories = paddle.layer.data( - name='category_id', - type=paddle.data_type.sparse_binary_vector( - len(paddle.dataset.movielens.movie_categories()))) - mov_categories_hidden = paddle.layer.fc(input=mov_categories, size=32) - - mov_title_id = paddle.layer.data( - name='movie_title', - type=paddle.data_type.integer_value_sequence(len(movie_title_dict))) - mov_title_emb = paddle.layer.embedding(input=mov_title_id, size=32) - mov_title_conv = paddle.networks.sequence_conv_pool( - input=mov_title_emb, hidden_size=32, context_len=3) - - mov_combined_features = paddle.layer.fc( - input=[mov_fc, mov_categories_hidden, mov_title_conv], - size=200, - act=paddle.activation.Tanh()) - return mov_combined_features - - -def main(): - paddle.init() - usr_combined_features = get_usr_combined_features() - mov_combined_features = get_mov_combined_features() - inference = paddle.layer.cos_sim( - a=usr_combined_features, b=mov_combined_features, size=1, scale=5) - cost = paddle.layer.square_error_cost( - input=inference, - label=paddle.layer.data( - name='score', type=paddle.data_type.dense_vector(1))) - - parameters = paddle.parameters.create(cost) - - trainer = paddle.trainer.SGD( - cost=cost, - parameters=parameters, - update_equation=paddle.optimizer.Adam(learning_rate=1e-4)) - feeding = { - 'user_id': 0, - 'gender_id': 1, - 'age_id': 2, - 'job_id': 3, - 'movie_id': 4, - 'category_id': 5, - 'movie_title': 6, - 'score': 7 - } - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d Batch %d Cost %.2f" % ( - event.pass_id, event.batch_id, event.cost) - - trainer.train( - reader=paddle.batch( - paddle.reader.shuffle( - cloud_reader( - ["/pfs/dlnel/public/dataset/movielens/movielens_train-*"], - etcd_endpoint), - buf_size=8192), - batch_size=256), - event_handler=event_handler, - feeding=feeding, - num_passes=1) - - user_id = 234 - movie_id = 345 - - user = paddle.dataset.movielens.user_info()[user_id] - movie = paddle.dataset.movielens.movie_info()[movie_id] - - feature = user.value() + movie.value() - - infer_dict = copy.copy(feeding) - del infer_dict['score'] - - prediction = paddle.infer( - output_layer=inference, - parameters=parameters, - input=[feature], - feeding=infer_dict) - print(prediction + 5) / 2 - - -if __name__ == '__main__': - main() diff --git a/demo/understand_sentiment/train.py b/demo/understand_sentiment/train.py deleted file mode 100644 index 4b2d12bf..00000000 --- a/demo/understand_sentiment/train.py +++ /dev/null @@ -1,228 +0,0 @@ -# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle -import paddle.v2.dataset.common as common -import os -import sys -import glob -import pickle - -# NOTE: must change this to your own username on paddlecloud. -USERNAME = "demo" -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") -common.DATA_HOME = "/pfs/%s/home/%s" % (DC, USERNAME) -TRAIN_FILES_PATH = os.path.join(common.DATA_HOME, "imdb") -TEST_FILES_PATH = os.path.join(common.DATA_HOME, "imdb") - -TRAINER_ID = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) -TRAINER_COUNT = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "-1")) - - -def prepare_dataset(): - word_dict = paddle.dataset.imdb.word_dict() - # convert will also split the dataset by line-count - common.convert(TRAIN_FILES_PATH, - lambda: paddle.dataset.imdb.train(word_dict), 1000, "train") - common.convert(TEST_FILES_PATH, - lambda: paddle.dataset.imdb.test(word_dict), 1000, "test") - - -def cluster_reader_recordio(trainer_id, trainer_count, flag): - ''' - read from cloud dataset which is stored as recordio format - each trainer will read a subset of files of the whole dataset. - ''' - import recordio - - def reader(): - PATTERN_STR = "%s-*" % flag - FILES_PATTERN = os.path.join(TRAIN_FILES_PATH, PATTERN_STR) - file_list = glob.glob(FILES_PATTERN) - file_list.sort() - my_file_list = [] - # read files for current trainer_id - for idx, f in enumerate(file_list): - if idx % trainer_count == trainer_id: - my_file_list.append(f) - for f in my_file_list: - print "processing ", f - reader = recordio.reader(f) - record_raw = reader.read() - while record_raw: - yield pickle.loads(record_raw) - record_raw = reader.read() - reader.close() - - return reader - - -def convolution_net(input_dim, class_dim=2, emb_dim=128, hid_dim=128): - data = paddle.layer.data( - "word", paddle.data_type.integer_value_sequence(input_dim)) - emb = paddle.layer.embedding(input=data, size=emb_dim) - conv_3 = paddle.networks.sequence_conv_pool( - input=emb, context_len=3, hidden_size=hid_dim) - conv_4 = paddle.networks.sequence_conv_pool( - input=emb, context_len=4, hidden_size=hid_dim) - output = paddle.layer.fc(input=[conv_3, conv_4], - size=class_dim, - act=paddle.activation.Softmax()) - lbl = paddle.layer.data("label", paddle.data_type.integer_value(2)) - cost = paddle.layer.classification_cost(input=output, label=lbl) - return cost - - -def stacked_lstm_net(input_dim, - class_dim=2, - emb_dim=128, - hid_dim=512, - stacked_num=3): - """ - A Wrapper for sentiment classification task. - This network uses bi-directional recurrent network, - consisting three LSTM layers. This configure is referred to - the paper as following url, but use fewer layrs. - http://www.aclweb.org/anthology/P15-1109 - - input_dim: here is word dictionary dimension. - class_dim: number of categories. - emb_dim: dimension of word embedding. - hid_dim: dimension of hidden layer. - stacked_num: number of stacked lstm-hidden layer. - """ - assert stacked_num % 2 == 1 - - layer_attr = paddle.attr.Extra(drop_rate=0.5) - fc_para_attr = paddle.attr.Param(learning_rate=1e-3) - lstm_para_attr = paddle.attr.Param(initial_std=0., learning_rate=1.) - para_attr = [fc_para_attr, lstm_para_attr] - bias_attr = paddle.attr.Param(initial_std=0., l2_rate=0.) - relu = paddle.activation.Relu() - linear = paddle.activation.Linear() - - data = paddle.layer.data( - "word", paddle.data_type.integer_value_sequence(input_dim)) - emb = paddle.layer.embedding(input=data, size=emb_dim) - - fc1 = paddle.layer.fc(input=emb, - size=hid_dim, - act=linear, - bias_attr=bias_attr) - lstm1 = paddle.layer.lstmemory( - input=fc1, act=relu, bias_attr=bias_attr, layer_attr=layer_attr) - - inputs = [fc1, lstm1] - for i in range(2, stacked_num + 1): - fc = paddle.layer.fc(input=inputs, - size=hid_dim, - act=linear, - param_attr=para_attr, - bias_attr=bias_attr) - lstm = paddle.layer.lstmemory( - input=fc, - reverse=(i % 2) == 0, - act=relu, - bias_attr=bias_attr, - layer_attr=layer_attr) - inputs = [fc, lstm] - - fc_last = paddle.layer.pooling( - input=inputs[0], pooling_type=paddle.pooling.Max()) - lstm_last = paddle.layer.pooling( - input=inputs[1], pooling_type=paddle.pooling.Max()) - output = paddle.layer.fc(input=[fc_last, lstm_last], - size=class_dim, - act=paddle.activation.Softmax(), - bias_attr=bias_attr, - param_attr=para_attr) - - lbl = paddle.layer.data("label", paddle.data_type.integer_value(2)) - cost = paddle.layer.classification_cost(input=output, label=lbl) - return cost - - -def main(): - # init - paddle.init() - #data - print 'load dictionary...' - word_dict = paddle.dataset.imdb.word_dict() - dict_dim = len(word_dict) - class_dim = 2 - train_reader = paddle.batch( - paddle.reader.shuffle( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "train"), - buf_size=1000), - batch_size=100) - test_reader = paddle.batch( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "test"), - batch_size=100) - - feeding = {'word': 0, 'label': 1} - - # network config - # Please choose the way to build the network - # by uncommenting the corresponding line. - cost = convolution_net(dict_dim, class_dim=class_dim) - # cost = stacked_lstm_net(dict_dim, class_dim=class_dim, stacked_num=3) - - # create parameters - parameters = paddle.parameters.create(cost) - - # create optimizer - adam_optimizer = paddle.optimizer.Adam( - learning_rate=2e-3, - regularization=paddle.optimizer.L2Regularization(rate=8e-4), - model_average=paddle.optimizer.ModelAverage(average_window=0.5)) - - # End batch and end pass event handler - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "\nPass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - else: - sys.stdout.write('.') - sys.stdout.flush() - if isinstance(event, paddle.event.EndPass): - result = trainer.test(reader=test_reader, feeding=feeding) - print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) - - # create trainer - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=adam_optimizer) - - trainer.train( - reader=train_reader, - event_handler=event_handler, - feeding=feeding, - num_passes=2) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if TRAINER_ID == -1 or TRAINER_COUNT == -1: - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "prepare": - prepare_dataset() - elif sys.argv[1] == "train": - main() diff --git a/demo/understand_sentiment/train_ft.py b/demo/understand_sentiment/train_ft.py deleted file mode 100644 index 87f1f2c9..00000000 --- a/demo/understand_sentiment/train_ft.py +++ /dev/null @@ -1,233 +0,0 @@ -# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle -import paddle.v2.dataset.common as common -import os -import sys -import glob -import pickle - -# NOTE: must change this to your own username on paddlecloud. -USERNAME = "demo" -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") -common.DATA_HOME = "/pfs/%s/home/%s" % (DC, USERNAME) -TRAIN_FILES_PATH = os.path.join(common.DATA_HOME, "imdb") -TEST_FILES_PATH = os.path.join(common.DATA_HOME, "imdb") - -TRAINER_ID = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) -TRAINER_COUNT = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "-1")) - - -def prepare_dataset(): - word_dict = paddle.dataset.imdb.word_dict() - # convert will also split the dataset by line-count - common.convert(TRAIN_FILES_PATH, - lambda: paddle.dataset.imdb.train(word_dict), 1000, "train") - common.convert(TEST_FILES_PATH, - lambda: paddle.dataset.imdb.test(word_dict), 1000, "test") - - -def cluster_reader_recordio(trainer_id, trainer_count, flag): - ''' - read from cloud dataset which is stored as recordio format - each trainer will read a subset of files of the whole dataset. - ''' - import recordio - - def reader(): - PATTERN_STR = "%s-*" % flag - FILES_PATTERN = os.path.join(TRAIN_FILES_PATH, PATTERN_STR) - file_list = glob.glob(FILES_PATTERN) - file_list.sort() - my_file_list = [] - # read files for current trainer_id - for idx, f in enumerate(file_list): - if idx % trainer_count == trainer_id: - my_file_list.append(f) - for f in my_file_list: - print "processing ", f - reader = recordio.reader(f) - record_raw = reader.read() - while record_raw: - yield pickle.loads(record_raw) - record_raw = reader.read() - reader.close() - - return reader - - -def convolution_net(input_dim, class_dim=2, emb_dim=128, hid_dim=128): - data = paddle.layer.data( - "word", paddle.data_type.integer_value_sequence(input_dim)) - emb = paddle.layer.embedding(input=data, size=emb_dim) - conv_3 = paddle.networks.sequence_conv_pool( - input=emb, context_len=3, hidden_size=hid_dim) - conv_4 = paddle.networks.sequence_conv_pool( - input=emb, context_len=4, hidden_size=hid_dim) - output = paddle.layer.fc(input=[conv_3, conv_4], - size=class_dim, - act=paddle.activation.Softmax()) - lbl = paddle.layer.data("label", paddle.data_type.integer_value(2)) - cost = paddle.layer.classification_cost(input=output, label=lbl) - return cost - - -def stacked_lstm_net(input_dim, - class_dim=2, - emb_dim=128, - hid_dim=512, - stacked_num=3): - """ - A Wrapper for sentiment classification task. - This network uses bi-directional recurrent network, - consisting three LSTM layers. This configure is referred to - the paper as following url, but use fewer layrs. - http://www.aclweb.org/anthology/P15-1109 - - input_dim: here is word dictionary dimension. - class_dim: number of categories. - emb_dim: dimension of word embedding. - hid_dim: dimension of hidden layer. - stacked_num: number of stacked lstm-hidden layer. - """ - assert stacked_num % 2 == 1 - - layer_attr = paddle.attr.Extra(drop_rate=0.5) - fc_para_attr = paddle.attr.Param(learning_rate=1e-3) - lstm_para_attr = paddle.attr.Param(initial_std=0., learning_rate=1.) - para_attr = [fc_para_attr, lstm_para_attr] - bias_attr = paddle.attr.Param(initial_std=0., l2_rate=0.) - relu = paddle.activation.Relu() - linear = paddle.activation.Linear() - - data = paddle.layer.data( - "word", paddle.data_type.integer_value_sequence(input_dim)) - emb = paddle.layer.embedding(input=data, size=emb_dim) - - fc1 = paddle.layer.fc(input=emb, - size=hid_dim, - act=linear, - bias_attr=bias_attr) - lstm1 = paddle.layer.lstmemory( - input=fc1, act=relu, bias_attr=bias_attr, layer_attr=layer_attr) - - inputs = [fc1, lstm1] - for i in range(2, stacked_num + 1): - fc = paddle.layer.fc(input=inputs, - size=hid_dim, - act=linear, - param_attr=para_attr, - bias_attr=bias_attr) - lstm = paddle.layer.lstmemory( - input=fc, - reverse=(i % 2) == 0, - act=relu, - bias_attr=bias_attr, - layer_attr=layer_attr) - inputs = [fc, lstm] - - fc_last = paddle.layer.pooling( - input=inputs[0], pooling_type=paddle.pooling.Max()) - lstm_last = paddle.layer.pooling( - input=inputs[1], pooling_type=paddle.pooling.Max()) - output = paddle.layer.fc(input=[fc_last, lstm_last], - size=class_dim, - act=paddle.activation.Softmax(), - bias_attr=bias_attr, - param_attr=para_attr) - - lbl = paddle.layer.data("label", paddle.data_type.integer_value(2)) - cost = paddle.layer.classification_cost(input=output, label=lbl) - return cost - - -def main(): - # init - paddle.init() - etcd_ip = os.getenv("ETCD_IP") - etcd_endpoint = "http://" + etcd_ip + ":" + "2379" - #data - print 'load dictionary...' - word_dict = paddle.dataset.imdb.word_dict() - dict_dim = len(word_dict) - class_dim = 2 - train_reader = paddle.batch( - paddle.reader.shuffle( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "train"), - buf_size=1000), - batch_size=100) - test_reader = paddle.batch( - cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT, "test"), - batch_size=100) - - feeding = {'word': 0, 'label': 1} - - # network config - # Please choose the way to build the network - # by uncommenting the corresponding line. - cost = convolution_net(dict_dim, class_dim=class_dim) - # cost = stacked_lstm_net(dict_dim, class_dim=class_dim, stacked_num=3) - - # create parameters - parameters = paddle.parameters.create(cost) - - # create optimizer - adam_optimizer = paddle.optimizer.Adam( - learning_rate=2e-3, - regularization=paddle.optimizer.L2Regularization(rate=8e-4), - model_average=paddle.optimizer.ModelAverage(average_window=0.5)) - - # End batch and end pass event handler - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "\nPass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - else: - sys.stdout.write('.') - sys.stdout.flush() - if isinstance(event, paddle.event.EndPass): - result = trainer.test(reader=test_reader, feeding=feeding) - print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) - - # create trainer - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=adam_optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - - trainer.train( - reader=train_reader, - event_handler=event_handler, - feeding=feeding, - num_passes=2) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if TRAINER_ID == -1 or TRAINER_COUNT == -1: - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "prepare": - prepare_dataset() - elif sys.argv[1] == "train": - main() diff --git a/demo/word2vec/train.py b/demo/word2vec/train.py deleted file mode 100644 index eddd90ca..00000000 --- a/demo/word2vec/train.py +++ /dev/null @@ -1,163 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import math -import pickle -import glob -import os -import sys -import paddle.v2 as paddle -import paddle.v2.dataset.common as common - -embsize = 32 -hiddensize = 256 -N = 5 - -# NOTE: You need to generate and split dataset then put it under your cloud storage. -# then you can use different size of embedding. - -# NOTE: must change this to your own username on paddlecloud. -USERNAME = "your-username" -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") -common.DATA_HOME = "/pfs/%s/home/%s" % (DC, USERNAME) -TRAIN_FILES_PATH = os.path.join(common.DATA_HOME, "imikolov", - "imikolov_train-*") -WORD_DICT_PATH = os.path.join(common.DATA_HOME, "imikolov/word_dict.pickle") - -TRAINER_ID = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) -TRAINER_COUNT = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "-1")) - - -def prepare_dataset(): - word_dict = paddle.dataset.imikolov.build_dict() - with open(WORD_DICT_PATH, "w") as fn: - pickle.dump(word_dict, fn) - # NOTE: convert should be done by other job. - - -def cluster_reader_recordio(trainer_id, trainer_count): - ''' - read from cloud dataset which is stored as recordio format - each trainer will read a subset of files of the whole dataset. - ''' - import recordio - - def reader(): - file_list = glob.glob(TRAIN_FILES_PATH) - file_list.sort() - my_file_list = [] - # read files for current trainer_id - for idx, f in enumerate(file_list): - if idx % trainer_count == trainer_id: - my_file_list.append(f) - for f in my_file_list: - print "processing ", f - reader = recordio.reader(f) - record_raw = reader.read() - while record_raw: - yield pickle.loads(record_raw) - record_raw = reader.read() - reader.close() - - return reader - - -def wordemb(inlayer): - wordemb = paddle.layer.table_projection( - input=inlayer, - size=embsize, - param_attr=paddle.attr.Param( - name="_proj", - initial_std=0.001, - learning_rate=1, - l2_rate=0, )) - return wordemb - - -def main(): - paddle.init(use_gpu=False, trainer_count=1) - # load dict from cloud file - with open(WORD_DICT_PATH) as fn: - word_dict = pickle.load(fn) - dict_size = len(word_dict) - firstword = paddle.layer.data( - name="firstw", type=paddle.data_type.integer_value(dict_size)) - secondword = paddle.layer.data( - name="secondw", type=paddle.data_type.integer_value(dict_size)) - thirdword = paddle.layer.data( - name="thirdw", type=paddle.data_type.integer_value(dict_size)) - fourthword = paddle.layer.data( - name="fourthw", type=paddle.data_type.integer_value(dict_size)) - nextword = paddle.layer.data( - name="fifthw", type=paddle.data_type.integer_value(dict_size)) - - Efirst = wordemb(firstword) - Esecond = wordemb(secondword) - Ethird = wordemb(thirdword) - Efourth = wordemb(fourthword) - - contextemb = paddle.layer.concat(input=[Efirst, Esecond, Ethird, Efourth]) - hidden1 = paddle.layer.fc(input=contextemb, - size=hiddensize, - act=paddle.activation.Sigmoid(), - layer_attr=paddle.attr.Extra(drop_rate=0.5), - bias_attr=paddle.attr.Param(learning_rate=2), - param_attr=paddle.attr.Param( - initial_std=1. / math.sqrt(embsize * 8), - learning_rate=1)) - predictword = paddle.layer.fc(input=hidden1, - size=dict_size, - bias_attr=paddle.attr.Param(learning_rate=2), - act=paddle.activation.Softmax()) - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - result = trainer.test( - paddle.batch( - # NOTE: if you're going to use cluster test files, - # prepare them on the storage first - paddle.dataset.imikolov.test(word_dict, N), - 32)) - print "Pass %d, Batch %d, Cost %f, %s, Testing metrics %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics, - result.metrics) - - cost = paddle.layer.classification_cost(input=predictword, label=nextword) - parameters = paddle.parameters.create(cost) - adam_optimizer = paddle.optimizer.Adam( - learning_rate=3e-3, - regularization=paddle.optimizer.L2Regularization(8e-4)) - trainer = paddle.trainer.SGD(cost, parameters, adam_optimizer) - - trainer.train( - paddle.batch(cluster_reader_recordio(TRAINER_ID, TRAINER_COUNT), 32), - num_passes=30, - event_handler=event_handler) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if TRAINER_ID == -1 or TRAINER_COUNT == -1: - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "prepare": - prepare_dataset() - elif sys.argv[1] == "train": - main() diff --git a/demo/word2vec/train_ft.py b/demo/word2vec/train_ft.py deleted file mode 100644 index 04d54490..00000000 --- a/demo/word2vec/train_ft.py +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import math -import pickle -import glob -import os -import sys -import paddle.v2 as paddle -import paddle.v2.dataset.common as common -from paddle.reader.creator import cloud_reader - -embsize = 32 -hiddensize = 256 -N = 5 - -# NOTE: You need to generate and split dataset then put it under your cloud storage. -# then you can use different size of embedding. - -# NOTE: must change this to your own username on paddlecloud. -USERNAME = "your-username" -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") -common.DATA_HOME = "/pfs/%s/home/%s" % (DC, USERNAME) -TRAIN_FILES_PATH = os.path.join(common.DATA_HOME, "imikolov", - "imikolov_train-*") -WORD_DICT_PATH = os.path.join(common.DATA_HOME, "imikolov/word_dict.pickle") - -TRAINER_ID = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) -TRAINER_COUNT = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "-1")) - -etcd_ip = os.getenv("ETCD_IP") -etcd_endpoint = "http://" + etcd_ip + ":" + "2379" -trainer_id = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) - - -def prepare_dataset(): - word_dict = paddle.dataset.imikolov.build_dict() - with open(WORD_DICT_PATH, "w") as fn: - pickle.dump(word_dict, fn) - # NOTE: convert should be done by other job. - - -def wordemb(inlayer): - wordemb = paddle.layer.table_projection( - input=inlayer, - size=embsize, - param_attr=paddle.attr.Param( - name="_proj", - initial_std=0.001, - learning_rate=1, - l2_rate=0, )) - return wordemb - - -def main(): - paddle.init(use_gpu=False, trainer_count=1) - # load dict from cloud file - with open(WORD_DICT_PATH) as fn: - word_dict = pickle.load(fn) - dict_size = len(word_dict) - firstword = paddle.layer.data( - name="firstw", type=paddle.data_type.integer_value(dict_size)) - secondword = paddle.layer.data( - name="secondw", type=paddle.data_type.integer_value(dict_size)) - thirdword = paddle.layer.data( - name="thirdw", type=paddle.data_type.integer_value(dict_size)) - fourthword = paddle.layer.data( - name="fourthw", type=paddle.data_type.integer_value(dict_size)) - nextword = paddle.layer.data( - name="fifthw", type=paddle.data_type.integer_value(dict_size)) - - Efirst = wordemb(firstword) - Esecond = wordemb(secondword) - Ethird = wordemb(thirdword) - Efourth = wordemb(fourthword) - - contextemb = paddle.layer.concat(input=[Efirst, Esecond, Ethird, Efourth]) - hidden1 = paddle.layer.fc(input=contextemb, - size=hiddensize, - act=paddle.activation.Sigmoid(), - layer_attr=paddle.attr.Extra(drop_rate=0.5), - bias_attr=paddle.attr.Param(learning_rate=2), - param_attr=paddle.attr.Param( - initial_std=1. / math.sqrt(embsize * 8), - learning_rate=1)) - predictword = paddle.layer.fc(input=hidden1, - size=dict_size, - bias_attr=paddle.attr.Param(learning_rate=2), - act=paddle.activation.Softmax()) - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - result = trainer.test( - paddle.batch( - # NOTE: if you're going to use cluster test files, - # prepare them on the storage first - paddle.dataset.imikolov.test(word_dict, N), - 32)) - print "Pass %d, Batch %d, Cost %f, %s, Testing metrics %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics, - result.metrics) - - cost = paddle.layer.classification_cost(input=predictword, label=nextword) - parameters = paddle.parameters.create(cost) - adam_optimizer = paddle.optimizer.Adam( - learning_rate=3e-3, - regularization=paddle.optimizer.L2Regularization(8e-4)) - trainer = paddle.trainer.SGD(cost, - parameters, - adam_optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - trainer.train( - paddle.batch(cloud_reader([TRAIN_FILES_PATH], etcd_endpoint), 32), - num_passes=30, - event_handler=event_handler) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if TRAINER_ID == -1 or TRAINER_COUNT == -1: - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "prepare": - prepare_dataset() - elif sys.argv[1] == "train": - main() diff --git a/doc/design/client_design.md b/doc/design/client_design.md deleted file mode 100644 index 08b2f7d9..00000000 --- a/doc/design/client_design.md +++ /dev/null @@ -1,260 +0,0 @@ -# Design Doc: PaddleCloud Client - -A Command Line Interface for PaddlePaddle Cloud - ---- - -# Goals: - -Developers using PaddlePadle Cloud can use this command-line client for the convenience of managing cloud Deep-Learning jobs, including: - -- Submitting a PaddlePaddle cluster training job -- List jobs that are currently running. -- List all job history that has been submitted. -- Fetch logs of the jobs. -- Download output(model data) of the completed job. -- View user's quota usages in their spaces. - -PaddleCloud Client is written in Go, which simplifies building for different platforms like MacOS/Linux/Windows. The client is a binary program named "paddlecloud". - -# Client Configurations - -Client configurations stores in a file: `~/.paddle/config` in the below `yaml` form: -```yaml -datacenters: -- name: datacenter1 - username: user1 - password: secret - usercert: /path/to/user.pem - userkey: /path/to/user-key.pem - endpoint: http://cloud.paddlepaddle.org -- name: datacenter2 - username: user1 - password: secret - endpoint: http://cloud2.paddlepaddle.org -current-datacenter: datacenter1 -``` - -***NOTICE:*** The ***first*** "active" configuration part will be used. - -# Client commands - -## PaddleCloud Server command-line design -You can use the following syntax to run `pcloud` command-line interface tool from your terminal window: -`pcloud [sub-command] [name] [flags]` - -- Sub-Command - - `submit `: submit a PaddleCloud Job with the specify job name. - - `jobs [-v ]`: list all jobs for the current user, `-v` show the - specify job information with verbose output. - - `pods [-v ]`: list all pods for the current user, `-v` show the - specity worker information with verbose output. - - `quota`: the quota info for the current user. - - `kill `: kill a job with the specify job name. - - `logs `: output logs for the specify pod name . - -## PaddleCloud File System command-line design -PaddleCloud File System(PFS) command-line interface allows user to operate the file system on PaddleCloud, the syntax is as following: -`pcloud pfs [ls|put|get|rm...] [path1|path2...]` - -- `ls `: list all folders and files under the cloud path. -- `put [src1|src2...] `: upload the specify local folders or files to the cloud path. -- `get [src1|src2...] `: download the specify folers or files from the cloud path. -- `rm [dest1|dest2...]`: remove the specify folders or files on cloud, we can remove multiple folders or files in one line. -- `mv `: move the specify folder or a file from `` -to ``, `` and `` should be a cloud path. - -## Reference -- `paddlecloud submit [options] `: submit job to PaddlePaddle Cloud - - ``: ***Required*** Job package to submit. Including user training program and it's dependencies. - - `-parallelism`: Number of parallel trainers. Defaults to 1. - - `-cpu`: CPU resource each trainer will use. Defaults to 1. - - `-gpu`: GPU resource each trainer will use. Defaults to 0. - - `-memory`: Memory resource each trainer will use. Defaults to 1Gi. Memory ammounts consists a plain integer using one of these suffixes: Ei, Pi, Ti, Gi, Mi, Ki - - `-pservers`: Number of parameter servers. Defaults equal to `-p` - - `-pscpu`: Parameter server CPU resource. Defaults to 1. - - `-psmemory`: Parameter server memory resource. Defaults to 1Gi. - - `-entry`: Command of starting trainer process. Defaults to `paddle train` - - `-topology`: ***Will Be Deprecated*** `.py` file contains paddle v1 job configs -- `paddlecloud kill [-rm] `: Stop the job. `-rm` will remove the job from history. -- `paddlecloud get [options] `: Print resources - - `jobs`: List jobs. List only running jobs if no `-a` specified. - - `workers`: List detailed job worker nodes. - - `quota`: Print quota usages - - `-a`: List all resources. -- `paddlecloud logs [-n lines] `: Print logs of the job. -- `paddlecloud pfs ...`: PaddlePaddle Cloud data management. - `` is the path on the cloud. The form must be like `/pfs/$DATACENTER/home/$USER`. `$DATACENTER` is the from configuration where you setup at `~/.paddle/config` - - `paddlecloud pfs cp [ ... ] `: Upload a file - - `paddlecloud pfs cp [ ... ] `: Download a file - - `paddlecloud pfs ls `: List files under ``. - - `paddlecloud pfs rm ...`: Delete remote files - -## Examples - -A Sample job package may contain files like below: - -``` -job_word_emb/ - |-- train.py - |-- dict1.pickle - |-- dict2.pickle - |-- my_topo.py -data/ - |-- train/ - | |-- train.txt-00000 - | |-- train.txt-00001 - | ... - `-- test/ - |-- test.txt-00000 - |-- test.txt-00001 - ... -``` - -Run the following command to submit the job to the cloud: - -```bash -# upload training data to cloud, which may be very large -$ paddlecloud pfs cp -r ./job_word_emb/data /pfs/datacenter1/home/user1/job_word_emb -# submit a v1 paddle training job -$ paddlecloud submit ./job_word_emb -p 4 -c 2 -m 10Gi -t modules/train.py -Collecting package ... Done -Uploading package ... Done -Starting kuberntes job ... Done -# list running jobs -$ paddlecloud jobs -NAMESPACE NAME DESIRED SUCCESSFUL AGE -user1-gmail-com paddle-job-trainer-x63f 3 0 15s -# get job logs -$ paddlecloud logs -running pod list: [('Running', '10.1.9.3'), ('Running', '10.1.32.9'), ('Running', '10.1.18.7')] -I0515 05:44:19.106667 21 Util.cpp:166] commandline: --ports_num_for_sparse=1 --use_gpu=False --trainer_id=0 --pservers=10.1.9.3,10.1.32.9,10.1.18.7 --trainer_count=1 --num_gradient_servers=1 --ports_num=1 --port=7164 -[INFO 2017-05-15 05:44:19,123 networks.py:1482] The input order is [firstw, secondw, thirdw, fourthw, fifthw] -[INFO 2017-05-15 05:44:19,123 networks.py:1488] The output order is [__classification_cost_0__] -[INFO 2017-05-15 05:44:19,126 networks.py:1482] The input order is [firstw, secondw, thirdw, fourthw, fifthw] -[INFO 2017-05-15 05:44:19,126 networks.py:1488] The output order is [__classification_cost_0__] -I0515 05:44:19.131026 21 GradientMachine.cpp:85] Initing parameters.. -I0515 05:44:19.161273 21 GradientMachine.cpp:92] Init parameters done. -I0515 05:44:19.161551 41 ParameterClient2.cpp:114] pserver 0 10.1.9.3:7165 -I0515 05:44:19.161573 21 ParameterClient2.cpp:114] pserver 0 10.1.9.3:7164 -I0515 05:44:19.161813 21 ParameterClient2.cpp:114] pserver 1 10.1.32.9:7164 -I0515 05:44:19.161854 41 ParameterClient2.cpp:114] pserver 1 10.1.32.9:7165 -I0515 05:44:19.162405 21 ParameterClient2.cpp:114] pserver 2 10.1.18.7:7164 -I0515 05:44:19.162410 41 ParameterClient2.cpp:114] pserver 2 10.1.18.7:7165 -I0515 05:44:21.187485 48 ParameterClient2.cpp:114] pserver 0 10.1.9.3:7165 -I0515 05:44:21.187595 48 ParameterClient2.cpp:114] pserver 1 10.1.32.9:7165 -I0515 05:44:21.189729 48 ParameterClient2.cpp:114] pserver 2 10.1.18.7:7165 -I0515 05:44:21.242624 49 ParameterClient2.cpp:114] pserver 0 10.1.9.3:7164 -I0515 05:44:21.242717 49 ParameterClient2.cpp:114] pserver 1 10.1.32.9:7164 -I0515 05:44:21.243191 49 ParameterClient2.cpp:114] pserver 2 10.1.18.7:7164 -$ paddlecloud pfs cp /pfs/datacenter1/home/user1/job_word_emb/output ./output -Downloading /pfs/datacenter1/home/user1/job_word_emb/output ... Done -``` - -# API Definition - -PaddleCloud Client calls a remote "RESTful server" to accomplish the goals. This "RESTful server" is deployed in the cloud and serves all client calls for all users. - -We have multiple API versions, currently, it is "v1" and "v2". "v1" stands for submitting a paddle job which is written with paddle v1 API. All endpoints start with the version path, like "/v1/submit" - -We define the APIs below: - -| Endpoint | method | arguments | -| -------- | ------ | --------- | -| /api/v1/jobs | POST | see [Submit Job](#submit-job) | -| /api/v1/jobs | GET | see [Get Jobs](#get-jobs) | -| /api/v1/jobs | DELETE | see [Delete Jobs](#delete-job) -| /api/v1/quota | GET | see [above](#client-commands) | -| /api/v1/pfs/* | - | see [here](https://github.com/gongweibao/Paddle/blob/filemanager2/doc/design/file_manager/README.md#pfsserver) | - -## Submit Job -- HTTP Request - -`POST /api/v1/jobs` - -- Body Parameters -```json -{ - "name": "paddle-job", - "jobPackage": "/pfs/datacenter1/home/user1/job_word_emb", - "parallelism": 3, - "cpu": 1, - "gpu": 1, - "memory": "1Gi", - "pservers": 3, - "pscpu": 1, - "psmemory": "1Gi", - "topology": "train.py", - "datacenter": "datacenter1" -} -``` - -- HTTP Response -```json -{ - "code":200, - "msg":"OK" -} -``` - -## Get Jobs -- HTTP Request - -`GET /api/v1/jobs` - -- HTTP Response - -```json -"code":200, -"msg":[ - { - "name": "paddle-job-b82x", - "jobPackage": "/pfs/datacenter1/home/user1/job_word_emb", - "parallelism": 3, - "cpu": 1, - "gpu": 1, - "memory": "1Gi", - "pservers": 3, - "pscpu": 1, - "psmemory": "1Gi", - "topology": "train.py", - "status": { - "active": 0, - "completionTime": "2017-05-15 13:33:23", - "succeeded": 3, - "startTime": "2017-05-15 12:33:53" - } - }, - { - "name": "paddle-yx-02c2", - "jobPackage": "/pfs/datacenter1/home/user2/job_word_emb", - "parallelism": 3, - "cpu": 1, - "gpu": 1, - "memory": "1Gi", - "pservers": 3, - "pscpu": 1, - "psmemory": "1Gi", - "topology": "train.py", - "status": { - "active":1, - "failed": 1, - "startTime": "2017-05-15 18:30:02" - } - } -] -``` - -## Delete Job -- HTTP Request - -`DELETE /api/v1/jobs/{name}` - -- HTTP Response - -```json -{ - "code":200, - "msg":"OK" -} -``` \ No newline at end of file diff --git a/doc/design/paddlecloud.graffle b/doc/design/paddlecloud.graffle deleted file mode 100644 index b6d70cd4..00000000 Binary files a/doc/design/paddlecloud.graffle and /dev/null differ diff --git a/doc/design/paddlecloud.png b/doc/design/paddlecloud.png deleted file mode 100644 index 310ed30c..00000000 Binary files a/doc/design/paddlecloud.png and /dev/null differ diff --git a/doc/design/scheduler.md b/doc/design/scheduler.md deleted file mode 100644 index 5a1285e5..00000000 --- a/doc/design/scheduler.md +++ /dev/null @@ -1,177 +0,0 @@ -# Scheduler for TrainingJob - -## Background - -We are going to define PaddlePaddle cluster job as a Kubernetes -[TPR](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-third-party-resource/) or -[CRD](https://kubernetes.io/docs/concepts/api-extension/custom-resources/). -Each job is described using a `yaml` representation called -[TrainingJob](../autoscale/README.md). When a `TrainingJob` resource is -submitted to Kubernetes cluster, our customized `controller` program will -receive an event informing the resource creation/deletion. - -The `controller` program should contain the following core functions: - -- Parser to parse `TrainingJob` resource to corresponding job components, - including: - - `ReplicaSet` of master process - - `ReplicaSet` or `StatefulSet` for etcd cluster - - `ReplicaSet` of `pserver` process - - `Job` of `trainer` process -- Queue to sort `TrainingJob` resource for schedule -- Scheduler to determine which job to run or to scale by: - - Job static priority - - Job resource request (GPU > CPU > Memory) - - Job total running time of every pod - - Cluster free resource -- Autoscaler to dynamically tunning job resources. - -Cases that need to be considered during the implementation: - -1. GPU is much more expensive than CPUs, jobs require GPU resource should -have higher priority to run on GPU machines than CPU only jobs. Also a -`TrainingJob` requires GPU must require enough CPU resource for it so that -CPU used for launch CUDA kernels and memory copies is not blocking the -performance of GPU accelerated training jobs. -1. Jobs have priorities. Some offline jobs have the higher priority that can be -able to acquire enough resource so that the job can complete at the desired time, -then job result can be updated to the production service. Other jobs like an experiment and one-shot jobs have lower priority, they can be scaled up when the cluster is free and can be scaled down when the cluster is busy. -1. Otherwise, jobs should share the cluster resource fairly, which means, if -a job is waiting enough long, it can finally be scheduled to the cluster, no -matter it may have very low priority (except that the cluster is full of -production service). -1. A cluster may run both online service and offline batch jobs. The online -services have high priority and are not interruptible. But `TrainingJobs` can -re-use the cluster resource when the online service came to the certain time of -day that is not that active. -1. About quota, users quota should be considered so that scheduled job is not -exceeding it. - -## Scheduler design - -Here we define the core scheduler interfaces and algorithms. - -### Interface - -Scheduler deals with atomic scheduling unit named `Unit`. The `TraniningJob` -resource is the member of `Unit`, we can get it by calling `unit.Obj()`. - -```go -type PrioLevel int - -const ( - Experiement PrioLevel = 10 - Offline = 100 - Normal = 1000 - Production = 10000 -) - -type Unit interface { - // GetPrio returns the current priority level. - GetPrio() PrioLevel - // SetPrio set the unit priority level directly. - SetPrio(prio PrioLevel) - - // MaxInstances returns the desired max parallelism of the job. - MaxInstances() int - // MinInstances returns the minimal parallelism the job can be running. - MinInstances() int - // ResourceScore returns resource score of a single pod. It's - // caculated by sum(weight*ResourceValue). - ResourceScore() int64 - - // Expected returns expected parallelism (how much pods) to run for - // current scheduling step. - ExpectedCount() int64 - // Running returns the current parrallelism of the unit. - // If Running == 0 means the job is waiting for resources. - RunningCount() int64 - - // Obj returns inner scheduling unit. - Obj() interface{} -} -``` - -Currently, we only support 4 levels of priority. Note that the priority is not -continuous, so that we can extend more levels later. - -Then we define the scheduler interface: - -```go -type GpuPriorityCFS interface { - // AddUnit insert a new Unit object to the scheduler. - AddUnit(unit *Unit) error - // DelUnit remove the completed unit from scheduler. - DelUnit(unit *Unit) error - // GetLeftMost return the smallest valued unit in the scheduler's tree. - GetLeftMost() *Unit - // GetRightMost return the maximum valued unit in the scheduler's tree. - GetRightMost() *Unit - // Len return number of units in the scheduler. - Len() int - - // Traverse go thought every unit in the scheduler. - Tranverse(callback ...func(*Unit)) error -} -``` - -### Scheduling algorithm - -We use an implementation similar to -[CFS](https://en.wikipedia.org/wiki/Completely_Fair_Scheduler) as the -default scheduler for `TrainingJobs`. Other jobs or services submitted using -`kubectl` will not be controlled by this scheduler, but the resource -consumption will be considered. - -Scheduler stores all units in a red-black tree, sorted by score -`GetPrio() * ResourceScore() * sum(RunningCount() * pod.RunningTime())` -(weighted total running time). In order to make the jobs -"fair", `Unit`'s `ExpectedCount()` is calculated traversing every unit by order, -and increase/decrease one by one in each "dry run", try to make the score -even across cluster: - -1. The left most child is selected. This is the job that spent least running -time on the cluster. -2. If the job is not running yet (newly submitted job), try to increase job -parallelism to the initial parallelism value. If the resource is sufficient, -parse the `TrainingJob` and create the job instance, if the resource is not -sufficient, go to step 1. -3. If the job is already running try to scale it up by 1 to use more free -resources. -4. If the job has completed, stop the pserver and master, then remove it from -the tree. -5. Go to step 1 to run another step until all the units are traversed. -6. Accumulate the diff for each unit. -7. If above steps get no diff for every job, then use the same strategy to scale -down some jobs to achieve fairness, call `GetRightMost()` to get right most -unit, and try scale down jobs if the score is far away from even. - -- NOTE: we should make scale up/down operations less frequently, because -cluster job is not like processes, frequent interruptting may cause significant -job performance issue. - -### Queues - -We **don't** put jobs into several queues, like "RUNNING", "TODO", "DONE". Only -**one** queue is used for indexing jobs. Jobs that have not started, consumes -no resource. - -### Scheduling Intervals And Freezing Window - -Scheduling operations are triggered: - -- Every 5 seconds -- Or by controller event: adding, updating, deleting Of `TrainingJob` - -Speaking of "fair", if we do scaling operations very fast, every jobs' trainer -the count will be constantly in flux, and that's what we don't want. We introduce -configurable `FreezingWindow` for every `TrainingJob`, in that time window, -the job should not take any scaling operations to minimize the cost introduced -by scaling the job. - -## References - -- https://en.wikipedia.org/wiki/Completely_Fair_Scheduler -- https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-third-party-resource/#what-is-thirdpartyresource -- https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/ -- https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ \ No newline at end of file diff --git a/doc/edl/README.md b/doc/edl/README.md deleted file mode 100644 index 6d33f51b..00000000 --- a/doc/edl/README.md +++ /dev/null @@ -1,385 +0,0 @@ -# Design Doc: Elastic Deep Learning - -## Background - -A PaddlePaddle training job contains several trainer instances, -several parameter server instances, and one master instance. -We would like to manage the lifecycle (create, delete and update) of each PaddlePaddle training job in the cluster and atomically scale them to fully utilize the cluster's -computation resources. We call this Elastic Deep Learning (or EDL for short). - -[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) is -an autoscaling solution provided by Kubernetes, but it's not suitable -for the training job autoscaling for the following reasons: - -- HPA dosn't manage heterogeneous set of Pods lifecycle and status - change, we need a controller for this. -- The goal of autoscaling is to fairly distribute the computation - resources to different training jobs in a way that optimizes the - computation resource utilization of the **entire** cluster. The HPA - is trying to improve the quality of service of a **single** - service. The training job autoscaling requires the controller to - have a global view of all the available computation resources and - all the training jobs, but HPA does not have the global view. -- HPA is designed to automatically scale a homogeneous set of Pods, - but we need to scale a heterogeneous set of Pods (the trainer Pods - and the parameter server Pods): because the required number of - parameter servers is correlated to the required number of trainers, - we need to scale them together. - -We need to develop our own solution for autoscaling. - -Kubrenetes provide [CustomResourceDefinition (CRD)](https://kubernetes.io/docs/concepts/api-extension/custom-resources/#custom-resources)and [custom controller](https://kubernetes.io/docs/concepts/api-extension/custom-resources/#custom-controllers) -we can use these feature to develop EDL controller, so it can flexibly run in our -cluster and does not require modifying the Kubernetes source code. - -## Solution - -1. Defination of PaddlePaddle `TrainingJob` using CRD, it should contain: - 1. One `ReplicaSet` of a single master process - 1. One `ReplicaSet` of several parameter server process - 1. One `Job` of several trainer process -1. A controller that manages the `TrainingJob`'s: - 1. Creation, deletion and update - 1. Keep `TrainingJob` status synchronized with it's components - 1. Periodically scale job resources in cluster - -### TrainingJob CRD - -Just like -[Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) is -a resource that describes a deployment. We will have a training -job -[Custom Resource](https://kubernetes.io/docs/concepts/api-extension/custom-resources/) that -describes the training job. - -A pseudo resource declaration (`training_job.yaml`) is as follows: - -```yaml -apiVersion: paddlepaddle.org/v1 -kind: TrainingJob -metadata: - name: paddlejob - namespace: testspace -spec: - image: "paddlepaddle/paddlecloud-job" - port: 7164 - ports_num: 1 - ports_num_for_sparse: 1 - fault_tolerant: false - mountPath: "/home/work/namespace/" - master: - resources: - limits: - cpu: "800m" - memory: "1Gi" - requests: - cpu: "500m" - memory: "600Mi" - pserver: - resources: - limits: - cpu: "800m" - memory: "1Gi" - requests: - cpu: "500m" - memory: "600Mi" - trainer: - entrypoint: "python train.py" - workspace: "/home/job-1/" - passes: 10 - min-instance: 2 - max-instance: 6 - resources: - limits: - cpu: "200m" - memory: "200Mi" - requests: - cpu: "200m" - memory: "200Mi" -``` - -In the above example, EDL will create a PaddlePaddle cluster job with one master, -2 pservers, 2 trainers, and keep the status synchronized. Then the controller will -try to scale up/down `TraningJobs` in cluster if needed to maximize the cluster -utility. You can create the `TrainingJob` using `kubectl create -f training_job.yaml`. - -Currently, we will only support trainer autoscaling. Parameter server autoscaling -will be supported in the near future. This design doc considers both of them. - -NOTE: You can omit the master spec if you want to start a non-scalable job. - -### TrainingJobUpdater - -To keep the `TrainingJob` status synchronized with actual Kubernetes `ReplicaSet`s -and `Job`s, We need an object named `TrainingJobUpdater` to manage each -`TrainingJob`. - -Each `TrainingJobUpdater` need to be informed by events generated by Kubernetes -`ReplicaSet`, `Job` and `Pod`. For example, when the `TrainingJob` is scaling up, -some of the Pods may in status `Restarting`, so we should update the `TrainingJob` -status to "Scaling up". - -```go -type trainingJobEventType string - -const ( - trainingJobEventDelete trainingJobEventType = "Delete" - trainingJobEventModify trainingJobEventType = "Modify" -) - -type trainingJobEvent struct { - pet trainingJobEventType - job *v1.TrainingJob -} - -type TrainingJobUpdater struct { - job *v1.TrainingJob - kubeCli kubernetes.Interface - trainingJobClient trainingJobClient.Interface - status v1.TrainingJobStatus - eventCh chan *trainingJobEvent -} -``` - -When user submit a TrainingJob, the controller will start a TrainingJobUpdater to manage the TrainingJob. - - Parse `TrainingJob` to corresponding pserver, master `ReplicaSet` - and trainer `Job`. - - Create pserver, master and trainer. - - Keep the status synchronized. - - Stop master and pserver processes when job is finished or failed. - -### Controller - -The controller manages PaddlePaddle `TrainingJob`s by creating a series of -`TrainingJobUpdater` instances. The controller defination follows: - -```go -type Controller struct { - KubeCli kubernetes.Interface - ApiCli apiextensionsclient.Interface - PaddleCli paddleclientset.Interface - trainingjobLister paddlelisters.TrainingJobLister - trainingjobSynced cache.InformerSynced - jobtracker map[string]*updater.TrainingJobUpdater - - workqueue workqueue.RateLimitingInterface - recorder record.EventRecorder -} -``` - -- Register `TrainingJob` CRD if it's not registered yet. -- Create a `TrainingJobUpdater` instance for each `TrainingJob`. - -The controller will runs as a Pod. It has the global view of -the computation resources. It watches the training job resources and -schedules and scales the training jobs using the Kuberenetes API. - -The pseudo controller declaration (`autoscale_controller.yaml`) is -as follows: - -```yaml -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: autoscale-controller -spec: - replicas: 1 - template: - metadata: - labels: - name: autoscale-controller - spec: - containers: - - name: autoscale-controller - image: paddlepaddle/training-job-controller -``` - -The training job controller can be started by the cluster -administrator with command: `kubectl create -f autoscale_controller.yaml` - -You can use `go/cmd/autoscaler/Dockerfile` to build a new controller image -or download an existing one. - -Currently, `Autoscaler` is not a k8s controller actually, we will merge it to controller in a near feature. - -## Implementation - -### TrainingJob CRD - -The training job resource is a custom resource. There are two ways of implementing custom resources: - -- [Custom Resource Definition (CRD)](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/), since Kubernetes v1.7. -- [Third Party Resource (TPR)](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-third-party-resource/), since Kubernetes v1.2, fully deprecated in v1.8, will be removed in v1.9. - -We will support TPR first, because some of our clusters is using Kubernetes v1.6. - -In the near feature, we will use CRD to replace TPR to define our training job resource, -then the resource defined under `go/edl/resource` will be deprecated. -If you want to use TPR in Kubernetes with version <= 1.7, -please checkout the `unreleased-tpr` tag. - -Currently, implementation using CRD is still under development, -you can use the following command to verify and generate dependent codes: -``` -# check freshness of generated codes -$ scripts/verify-codegen.sh - -# update dependent codes -$ scripts/update-codegen.sh -``` -For more details, please refer to [article](https://blog.openshift.com/kubernetes-deep-dive-code-generation-customresources/). -When the definition of resource is stable, we will commit generated dependent codes. -Just skip `go/apis` when running `go test` during your development. - -By the way, if you want to generate these codes by yourself, due to this [issue](https://github.com/kubernetes/code-generator/issues/20), -you have to deal with the import problem. - -### Controller -#### Lifecycle Overall - -The whole lifecycle of `TrainingJob` is managed by controller and `TrainingJobUpdater`: - -![](pictures/lifecycle_overall.jpg) - -When the job is submitted, `Controller` will create a `TrainingJobUpdater` -and start to handle Kubernetes events. `TrainingJobUpdater` will start -a goroutine sync the state of the `Trainingjob`. When the state is changed -to `failed` or `succeeded`, resources of pservers and master will -be released. When the job is killed by user, resources of pservers and master -will also be released. - -#### State Machine - -The struct of `TrainingJob` Status as follows. - -```go -type TrainingJobStatus struct { - // Phase is phase of TrainingJob - Phase TrainingJobPhase `json:"phase"` - // Reason is the reason of job phase failed - Reason string `json:"reason"` - // ScaleStatus is autoscale status of trainer jobs - ScaleStatus TrainerJobScaleStatus `json:"scale_status"` - // ReplicaStatuses is detail status of resources - ReplicaStatuses []*TrainingResourceStatus `json:"replica_statuses"` -} -``` - -We define the following `TrainingJob` phases: - -- TrainingJobPhaseNone: `""` -- TrainingJobPhaseCreating: `creating` -- TrainingJobPhaseRunning: `running` -- TrainingJobPhaseScaling: `scaling` -- TrainingJobPhaseSucceeded: `succeeded` -- TrainingJobPhaseFailed: `failed` - -The state change follows the below graph: - -![](pictures/state_machine.jpg) - -When the job is submitted, controller will start a Updater and the state of the -job is set to `none`. When the job config is valid and through parser, the state will -be set to `creating`. When all the resources are submitted successfully, -the state will be set to `running`. When all trainer are finished -the state be set to `succeeded`. Otherwise, the state will be set to `failed`. - -### Autoscaler - -Currently, we will run a single training job controller instance and -assume that there is no training job controller running concurrently -(the assumption could be false -when -[split-brain](https://en.wikipedia.org/wiki/Split-brain_(computing)) -happens). In the future, we will run multiple instances and use leader -election to choose a leader. - -The pseudo-logic is as follows: - -```go -registerThirdPartyResource() -for { - quota := getTotalComputationResourceQuota() - current := getCurrentJobStates() - desired := getDesiredJobStates() - dynamicScaling(quota, current, desired) -} -``` - -#### Scaling Algorithm - -##### Elastic Job - -A job is elastic only when it's trainer and pserver's `min-instance` -equals to the `max-instance` respectively. We will only scale elastic -jobs. - -Currently, we will not scale the parameter server instances. - -##### Fulfillment Score - -When there are available computation resources, the algorithm needs to -decide which jobs to assign the resources to. When there are no more -available computation resources but the newly submitted job needs it, -the algorithm needs to decide which job to take the resource away -from. We will introduce the *fulfillment score* to answer these -questions: - -```go -func (j Job) Score() float64 { - minInstance := j.spec.trainer.minInstance - maxInstance := j.spec.trainer.maxInstance - curInstance := j.trainer.currentInstance() - return float64(curInstance - minInstance) / float64(maxInstance - minInstance) -} -``` - -##### Scaling GPU Jobs - -The controller knows the total number of available GPUs in a cluster -and will try to assign all of them to the training jobs. - -All elastic GPU jobs will be sorted according to their fulfillment -score. The number of GPU per instance, CPU requests value, Mem -requests value will be used as tiebreakers in decreasing importance. - -An available GPU resource will be assigned to the least fulfilled job -unless that job is already fulfilled (with a fulfillment score of -`1.0`). A GPU resource will be taken away from the most fulfilled job -when there is another GPU job's `min-instance` is not satisfied -(unless the most fulfilled job's `cur-instance` equals to -`min-instance`). When the most fulfilled job's `cur-instance` equals -to `min-instance`, no training job will be scaled down, the new job -cannot be scheduled and will wait for more resources. - - -##### Scaling CPU Jobs - -The controller knows the total CPU capacity, Mem capacity of the -cluster, and the total CPU limits, Mem limits of all training jobs. We -define the available CPU and Mem as the difference of the capacity and -the -[limits](https://kubernetes.io/docs/concepts/policy/resource-quotas/#requests-vs-limits) (not -the -[requests](https://kubernetes.io/docs/concepts/policy/resource-quotas/#requests-vs-limits)) -respectively. - -All elastic CPU jobs will be sorted according to their fulfillment -score. The CPU requests value, Mem requests value will be used as -tiebreakers in decreasing importance. - -The available CPU and Mem resource will be assigned to the least -fulfilled job unless that job is already fulfilled (with a fulfillment -score of `1.0`). The CPU and Mem resource will be taken away from the -most fulfilled job when there is another job's `min-instance` is not -satisfied (unless the most fulfilled job's `cur-instance` equals to -`min-instance`). When the most fulfilled job's `cur-instance` equals -to `min-instance`, no training job will be scaled down, but the job -will still be scheduled optimistically. - -## References - -- [Writing a custom controller: Extending the functionality of your cluster](https://resources.coreos.com/youtube-coreos-fest-2017/writing-a-custom-controller-extending-the-functionality-of-your-cluster) -- [Introducing Operators: Putting Operational Knowledge into Software](https://coreos.com/blog/introducing-operators.html) -- [TPR Is Dead! Kubernetes 1.7 Turns to CRD](https://coreos.com/blog/custom-resource-kubernetes-v17) -- [Writing Controllers](https://github.com/kubernetes/community/blob/master/contributors/devel/controllers.md) diff --git a/doc/edl/example/autoscale.md b/doc/edl/example/autoscale.md deleted file mode 100644 index 6ac8e90a..00000000 --- a/doc/edl/example/autoscale.md +++ /dev/null @@ -1,53 +0,0 @@ -# Run Autoscaling job on your local machine - -This documentation shows an example to run two jobs on a local kubernetes cluster and see the job scaling status. - -## Prerequisites - -- [install minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) -- [install kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) - -## Run local Autoscaling job - -1. Start a local minikube cluster. - - ```bash - minikube start --kubernetes-version v1.6.4 - ``` - -1. Run the following commands to create sample training workspace and -data. - - ```bash - mkdir /path/to/workspace - cp $REPO_PATH/doc/autoscale_example/*.py /path/to/workspace - mkdir -p /path/to/workspace/data/ - cp -r $REPO_PATH/doc/autoscale_example/uci_housing/ /path/to/workspace/data/ - ``` - -1. Mount the workspace folder into Minikube: - - ```bash - minikube mount /path/to/workspace:/workspace - ``` - - The `minikube mount` command will block, so start a new terminal to - continue the tutorial. - -1. Start controller and a example job: - - ```bash - cd $REPO_PATH/k8s/controller - kubectl create -f controller.yaml - kubectl create -f trainingjob_resource.yaml - kubectl create -f autoscale_job/ - kubectl get pods - ``` - -1. Start another job simulating cluster load, then you can observe the -scale process using `kubectl get pods`: - - ```bash - kubectl create -f autoscale_load/ - kubectl get pods - ``` diff --git a/doc/edl/example/convert.py b/doc/edl/example/convert.py deleted file mode 100644 index fa41341d..00000000 --- a/doc/edl/example/convert.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys -import os -import errno -import recordio -import paddle.v2.dataset as ds - - -def mkdir_p(path): - try: - os.makedirs(path) - except OSError as exc: - if exc.errno == errno.EEXIST and os.path.isdir(path): - pass - else: - raise - - -def convert(output_path, name): - mod = __import__("paddle.v2.dataset." + name, fromlist=['']) - - path = os.path.join(output_path, name) - mkdir_p(path) - - mod.convert(path) - - -if __name__ == '__main__': - a = ['uci_housing'] - for m in a: - convert("./data", m) diff --git a/doc/edl/example/train_ft.py b/doc/edl/example/train_ft.py deleted file mode 100644 index c39edfa2..00000000 --- a/doc/edl/example/train_ft.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle -import os -import gzip -from paddle.v2.reader.creator import cloud_reader -import paddle.v2.dataset.uci_housing as uci_housing - -etcd_ip = os.getenv("ETCD_IP") -etcd_endpoint = "http://" + etcd_ip + ":" + "2379" -trainer_id = int(os.getenv("PADDLE_INIT_TRAINER_ID")) - - -def main(): - # init - paddle.init() - - # network config - x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13)) - y_predict = paddle.layer.fc(input=x, - param_attr=paddle.attr.Param( - name='w', learning_rate=1e-3), - size=1, - act=paddle.activation.Linear(), - bias_attr=paddle.attr.Param( - name='b', learning_rate=1e-3)) - y = paddle.layer.data(name='y', type=paddle.data_type.dense_vector(1)) - cost = paddle.layer.square_error_cost(input=y_predict, label=y) - - # create parameters - parameters = paddle.parameters.create(cost) - - # create optimizer - optimizer = paddle.optimizer.Momentum(momentum=0, learning_rate=2e-4) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - - feeding = {'x': 0, 'y': 1} - - # event_handler to print training and testing info - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f" % ( - event.pass_id, event.batch_id, event.cost) - - if isinstance(event, paddle.event.EndPass): - result = trainer.test( - reader=paddle.batch( - uci_housing.test(), batch_size=2), - feeding=feeding) - print "Test %d, Cost %f" % (event.pass_id, result.cost) - if trainer_id == "0": - with gzip.open("fit-a-line_pass_%05d.tar.gz" % event.pass_id, - "w") as f: - parameters.to_tar(f) - - # training - trainer.train( - reader=paddle.batch( - paddle.reader.shuffle( - cloud_reader( - ["/workspace/data/uci_housing/uci_housing_train-*"], - etcd_endpoint), - buf_size=500), - batch_size=2), - feeding=feeding, - event_handler=event_handler, - num_passes=30) - - -if __name__ == '__main__': - main() diff --git a/doc/edl/example/train_mnist_ft.py b/doc/edl/example/train_mnist_ft.py deleted file mode 100644 index 11ee2d93..00000000 --- a/doc/edl/example/train_mnist_ft.py +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from PIL import Image -import numpy as np -import paddle.v2 as paddle -import paddle.v2.dataset.common as common -import paddle.v2.dataset.mnist as mnist -from paddle.v2.reader.creator import cloud_reader -import os -import sys -import glob -import pickle - -# NOTE: must change this to your own username on paddlecloud. -TRAIN_FILES_PATH = "/workspace/data/mnist/minist_train-*" -TEST_FILES_PATH = "/workspace/data/mnist/minist_test-*" - -etcd_ip = os.getenv("ETCD_IP") -etcd_endpoint = "http://" + etcd_ip + ":" + "2379" -trainer_id = int(os.getenv("PADDLE_INIT_TRAINER_ID", "-1")) - - -def softmax_regression(img): - predict = paddle.layer.fc(input=img, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def multilayer_perceptron(img): - # The first fully-connected layer - hidden1 = paddle.layer.fc(input=img, - size=128, - act=paddle.activation.Relu()) - # The second fully-connected layer and the according activation function - hidden2 = paddle.layer.fc(input=hidden1, - size=64, - act=paddle.activation.Relu()) - # The thrid fully-connected layer, note that the hidden size should be 10, - # which is the number of unique digits - predict = paddle.layer.fc(input=hidden2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def convolutional_neural_network(img): - # first conv layer - conv_pool_1 = paddle.networks.simple_img_conv_pool( - input=img, - filter_size=5, - num_filters=20, - num_channel=1, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # second conv layer - conv_pool_2 = paddle.networks.simple_img_conv_pool( - input=conv_pool_1, - filter_size=5, - num_filters=50, - num_channel=20, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # fully-connected layer - predict = paddle.layer.fc(input=conv_pool_2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def main(): - paddle.init() - - # define network topology - images = paddle.layer.data( - name='pixel', type=paddle.data_type.dense_vector(784)) - label = paddle.layer.data( - name='label', type=paddle.data_type.integer_value(10)) - - # Here we can build the prediction network in different ways. Please - # choose one by uncomment corresponding line. - # predict = softmax_regression(images) - # predict = multilayer_perceptron(images) - predict = convolutional_neural_network(images) - - cost = paddle.layer.classification_cost(input=predict, label=label) - - parameters = paddle.parameters.create(cost) - - optimizer = paddle.optimizer.Momentum( - learning_rate=0.1 / 128.0, - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if isinstance(event, paddle.event.EndPass): - result = trainer.test(reader=paddle.batch( - mnist.test(), batch_size=2)) - print "Test with Pass %d, Cost %f, %s\n" % ( - event.pass_id, result.cost, result.metrics) - - trainer.train( - reader=paddle.batch( - cloud_reader([TRAIN_FILES_PATH], etcd_endpoint), batch_size=128), - event_handler=event_handler, - num_passes=30) - - -if __name__ == '__main__': - usage = "python train.py [prepare|train]" - if len(sys.argv) != 2: - print usage - exit(1) - - if trainer_id == -1 or etcd_ip == "": - print "no cloud environ found, must run on cloud" - exit(1) - - if sys.argv[1] == "train": - main() diff --git a/doc/edl/experiment/.gitignore b/doc/edl/experiment/.gitignore deleted file mode 100644 index 8d4bfcfd..00000000 --- a/doc/edl/experiment/.gitignore +++ /dev/null @@ -1 +0,0 @@ -nohup.out diff --git a/doc/edl/experiment/README.md b/doc/edl/experiment/README.md deleted file mode 100644 index c9613a2b..00000000 --- a/doc/edl/experiment/README.md +++ /dev/null @@ -1,338 +0,0 @@ -# Auto-scaling Experiment - -## Purpose - -To verify the value of PaddlePaddle's auto-scaling mechanism. - -## Metrics - -1. Cluster computational resource utilization. - - Expecting higher resource utilization. - - Higher utilization means lesser resources are idle. Autoscaling is - intended to maximize the overall cluster resource(CPU, GPU, - memory) usage by ensuring resources for production level - jobs/services, followed by fair scaling of jobs that are scalable to use - the resources left in the cluster. - - In this experiment, we are focusing on CPU utilization. -1. Average pending time for training jobs. - - Expecting lesser pending time. - - Long pending time is a common pain point for researchers with the internal - cluster. - - The lesser the pending time, the earlier developers and researchers can - start seeing the training cost graphs, and the better they can - verify the effectiveness of the training algorithm. - - In this experiment, we will verify if the auto-scaler will kill existing -PaddlePaddle training processes to make room for newly submitted jobs. -1. Quality of service of online services. - - When PaddlePaddle jobs are deployed along with online services, we check whether -PaddlePaddle training jobs will yield resources to more important online services - when the load gets intensive. - -## Our setup - -- Kubernetes cluster with v1.6.2 installed, with 133 physical - nodes. -- PaddleCloud with the latest develop branch installed. -- A medium sized neural networks model is used in the experiment. - -## Test Cases - -### Autoscaling on the Special Purpose Cluster - -All the jobs in the cluster will be training jobs (hence the name, -special purpose cluster). This case is a very typical scenario for -research labs. - -#### Variable - -- Autoscaling ON/OFF. - -#### Invariant - -- The number of jobs. -- The configurations for each job are the same, except: - 1. each autoscaling job asks for 2 - 60 trainers, and - 1. each non-autoscaling job asks for 60 trainers. -- The submission time of each job. - - -#### Experiment Steps - - -1. With autoscaling turned on, submit the training jobs with 10 - seconds delay between each job, 20 jobs in total. Repeat the experiment for 10 passes. -1. With autoscaling turned off, submit the training jobs with 10 - seconds delay between each job, 20 jobs in total. Repeat the experiment for 10 passes. - - -#### Experiment Results - -##### Graphs - - - -In the above graph, the solid line is for non-autoscaling experiment -passes, the dashed line is for autoscaling experiment passes. - -We can see that the pending job counts for the autoscaling jobs are -significantly lower than the non-autoscaling jobs while still maintaining high CPU utilization. - -The pending job count for non-autoscaling increases after 100 seconds of the experiment and plateaus at 14 until the end. This means that the cluster's resource have exhausted when 6 jobs are running, hence newly submitted jobs have to wait. Meanwhile in autoscaling experiment, even when resources are exhausted, a newly submitted job can still start, because autoscaler scales existing job down to make room for the new jobs. - -The reason we see ridges in the graph is because jobs are not deployed in one shot, -there is a 10s delay between job submissions. Hence, it will take some time for the job to be actually created. The time in non-autoscaling experiment is simply Kubernetes' job launching time; while the time in autoscaling experiment case is auto-scaler killing other PaddlePaddle pods and Kubernetes job launching time. - -Also in the above graph, we can see that after the utilization stabilizes, the -cluster utilization of autoscaling jobs is slightly lower than the -non-autoscaling jobs. We think this is because of two reasons: - -1. Computation resources are wasted when autoscaler is trying to -free up resources for new incoming jobs. - -1. Autoscaling and non-autoscaling jobs have different distributions - of the numbers of trainer, pserver and master pods. The computation - resources for each node are fragmented differently, leading to a - utilization around 88% for non-autoscaling jobs vs around 86% for - autoscaling jobs when stabilized. - -##### Metrics - -- Autoscaling ON - - PASS|AVG PENDING TIME|CLUSTER CPU UTILS - ---|---|--- - 0|24| 75.5646 - 1|59| 75.9876 - 2|31| 75.0465 - 3|63| 76.0976 - 4|32| 76.6245 - 5|85| 76.1902 - 6|67| 76.3599 - 7|45| 77.8456 - 8|38| 76.8869 - 9|28| 76.7175 - AVG|42.9091| 76.3321 - - -- Autoscaling OFF - - PASS|AVG PENDING TIME|CLUSTER CPU UTILS - ---|---|--- - 0|319| 76.2028 - 1|305| 75.8829 - 2|295| 79.8287 - 3|309| 75.0948 - 4|315| 75.5644 - 5|319| 75.2832 - 6|298| 75.3558 - 7|311| 75.578 - 8|316| 76.9651 - 9|298| 75.8706 - AVG|280.455| 76.1626 - -### Autoscaling on the General Purpose Cluster - -Hybrid deployment with online serving and offline training job (hence -the name, general purpose cluster). We will deploy PaddlePaddle -training jobs and [Nginx](https://www.nginx.com/resources/wiki/) web -serving together. This case is a very typical scenario for large -enterprises and internet companies. - -#### Variable - -- The number of Nginx instances, changing over time, simulating the - real world traffic load distribution over time. -- Autoscaling ON/OFF. - -#### Invariant - -- The number of training jobs. -- The configurations for each training job are the same, except: - 1. each autoscaling job asks for 2 - 60 trainers, and - 1. each non-autoscaling job asks for 60 trainers. -- The submission time for each training job. -- The configuration of each Nginx job. - -#### Experiment Steps - -1. With autoscaling turned on, start 400 Nginx instances to simulate - the number of Nginx instances required for the peak time load. - -1. Start the training jobs. - -1. Decrease the Nginx instance count of 400 to 100 over time. This - simulates Nginx load decreases, requiring fewer Nginx instances. - -1. Increase the Nginx instances count of 100 to 400 over time. This - simulates the full Nginx load cycle. - -1. Repeat the experiment for 10 passes. - -1. Repeat the above steps with autoscaling turned off. - -#### Experiment Result - -##### Graphs - - - -The solid line is for non-autoscaling experiment passes and the dashed line is for -autoscaling experiment passes. - -The above graph shows the number of Nginx instances changing over -time, simulating a typical online cluster usage. Meanwhile, when auto-scaling is enabled, the PaddlePaddle job trainer pods count is changing along in the opposite trend. - -Also when autoscaling is turned on, the cluster -utilization is kept high even though the online Nginx service is -scaled down. - -We notice that Nginx pods count curve with autoscaling-on is not as sharp as the one with autoscaling-off, especially when Nginx is trying to increase its pods. This is where we still need to improve the performance of the auto-scaler. - - -##### Metrics - -- Autoscaling ON - - PASS|AVG PENDING TIME|CLUSTER CPU UTILS - --- | --- | --- - 0|33|83.7926 - 1|38|83.0557 - 2|29|82.8201 - 3|22|84.3083 - 4|62|82.8449 - 5|21|83.2045 - 6|70|83.0649 - 7|69|83.8079 - 8|101|83.5989 - 9|70|83.7494 - AVG|53.55|83.4247 - - Off-peak (300s - 370s) average cluster utilization: - 79.3505 - -- Autoscaling OFF - - PASS|AVG PENDING TIME|CLUSTER CPU UTILS - --- | --- | --- - 0|1|62.3651 - 1|0|61.7813 - 2|1|61.6985 - 3|0|61.4403 - 4|2|61.8323 - 5|3|61.7459 - 6|2|61.5679 - 7|2|62.1981 - 8|3|61.9676 - 9|1|62.0316 - AVG|1.5|61.8629 - - Off-peak (300s - 370s) average cluster utilization: - 44.9134 - -We also notice the increase in average pending time. The reason -behind this is the mechanism of gradual deployment of tasks to -minimize the impact to online services. - -##### Data Log - -Every number and plot in the report is calculated from raw -data. You can find the calculation programs and raw -data -[here](https://github.com/PaddlePaddle/cloud/tree/develop/doc/autoscale/experiment/result) - -## Conclusions - -### Resource utilization - -As shown in Case 2 in a general purpose cluster, the CPU utilization -increased by 34.8% (`(83.4247-61.8629)/61.8629`) on average; During -the off-peak time, the CPU utilization even surged by 76.7% -(`(79.3505-44.9134)/44.9134`). - -Clearly, now PaddlePaddle machine learning jobs are running in the computing resource reservoir prepared for the rainy day. When the situation is getting -tough, machine learning tasks will size down themselves without fault and -give resources back automatically. - -### Average Pending time - -As shown in case 1 in a special purpose cluster, the average pending -time reduced by 84.7% (`(280.455-42.9091)/280.455`) on average. - -### Improvement of service quality with general purpose cluster - -As shown in test case 2, PaddlePaddle yields resource to more -important online services when the load is getting intensive. - -## Reproducing the Experiment - -### Preparation - -1. Configure kubectl and paddlectl on your host. -1. Submit the TrainingJob controller with the YAML file. - -```bash -> git clone https://github.com/PaddlePaddle/cloud.git && cd cloud -> kubectl create -f k8s/controller/trainingjob_resource.yaml -> kubectl create -f k8s/controller/controller.yaml -``` - -### Run the Test Case - -Run the TestCase1 or TestCase2 for serval passes with the bash script -`./run.sh`: - -For example, run TestCase1 for 10 passes and 10 jobs: -```bash -> cd cloud/doc/autoscale/experiment -> TAG=round_1 AUTO_SCALING=OFF PASSES=1 JOB_COUNT=20 ./run.sh start case1 -``` - -Or submit an auto-scaling training job - -```bash -> cd cloud/doc/autoscale/experiment -> TAG=round_1 AUTO_SCALING=ON PASSES=1 JOB_COUNT=20 ./run.sh start case1 -``` - -Or run the TestCase2 with 5 jobs: -```bash -> TAG=round_1 AUTO_SCALING=ON JOB_COUNT=6 ./run.sh start case2 -``` - -Note: the test output will be written to different folders (the -folder name is generated based on the test configuration), so it's ok -to run the tests in a loop to get multiple round of data: - -``` -> for i in `seq 1 2`; do echo pass $i; TAG=round_$i JOB_COUNT=6 ./run.sh start case2; done -pass 1 -outputing output to folder: ./out/mnist-OFF-6-1-ON-400-case_case2-round_1 -``` - - -### Plot Data and Generate Report - -Please refer to the [README](./result/README.md). - -#### Raw Data Format - -The time series data will be appended to the file -`./out/*/mnist-case[1|2]-pass[0-9].log`, the content of `*` depends on -the test case config and will be printed in the beginning. - -as the following format: - -``` -0,2.11,0,3,0,0,0,0,0|0|0,0.00|0.00|0.00 -2,2.11,0,3,0,0,0,0,0|0|0,0.00|0.00|0.00 -4,2.11,0,3,0,0,0,0,0|0|0,0.00|0.00|0.00 -5,2.11,0,2,1,0,0,0,0|0|0,0.00|0.00|0.00 -7,5.30,7,2,0,1,0,0,7|0|0,3.19|0.00|0.00 -9,7.90,19,2,0,1,0,0,19|0|0,5.79|0.00|0.00 -10,8.11,20,2,0,1,0,0,20|0|0,6.01|0.00|0.00 -``` - -The meaning of each column is: - -timestamp|total cpu util|# of running trainer|# of not exist jobs|# of pending jobs|# of running jobs|# of done jobs|# of Nginx pods|running trainers for each job |cpu utils for each job ---|--|--|--|--|--|--|--|--|-- diff --git a/doc/edl/experiment/case1.sh b/doc/edl/experiment/case1.sh deleted file mode 100755 index 68efa214..00000000 --- a/doc/edl/experiment/case1.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -function start() { - for ((pass=0; pass<$PASSES; pass++)) - do - echo "Run pass "$pass - PASSE_NUM=$pass AUTO_SCALING=$AUTO_SCALING JOB_COUNT=$JOB_COUNT JOB_NAME=$JOB_NAME \ - stdbuf -oL nohup python python/main.py run_case1 &> $OUTDIR/${JOB_NAME}-case1-pass$pass.log & - sleep 5 - for ((j=0; j<$JOB_COUNT; j++)) - do - if [ "$AUTO_SCALING" == "ON" ] - then - submit_ft_job $JOB_NAME$j 2 - cat k8s/trainingjob.yaml.tmpl | sed "s//$JOB_NAME$j/g" | kubectl create -f - - else - submit_ft_job $JOB_NAME$j 60 - fi - sleep 10 - done - - sleep 300 - - # waiting for all jobs finished - #python python/main.py wait_for_finished - # stop all jobs - stop - # waiting for all jobs have been cleaned - python python/main.py wait_for_cleaned - # waiting for the data collector exit - while true - do - FILE=$OUTDIR/${JOB_NAME}-case1-pass$pass.csv - if [ ! -f $FILE ]; then - echo "waiting for collector exit, generated file " $FILE - sleep 5 - fi - break - done - # waiting for all jobs have been cleaned - python python/main.py wait_for_cleaned - - done - python python/main.py merge_case1_reports -} - -function stop() { - for ((i=0; i<$JOB_COUNT; i++)) - do - echo "kill" $JOB_NAME$i - if [ "$AUTO_SCALING" == "ON" ] - then - cat k8s/trainingjob.yaml.tmpl | sed "s//$JOB_NAME$i/g" | kubectl delete -f - - fi - paddlecloud kill $JOB_NAME$i - done - kubectl delete pod `kubectl get pods | grep -v Terminating| awk '{print $1}'` -} diff --git a/doc/edl/experiment/case2.sh b/doc/edl/experiment/case2.sh deleted file mode 100755 index f2e7b9c8..00000000 --- a/doc/edl/experiment/case2.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -function usage() { - echo "usage: control_case1.sh " - echo " action[required]: str[start|stop], will start or stop all the jobs." - echo "env var:" - echo " JOB_COUNT[optional]: int, The number of submiting jobs, defualt is 1." - echo " PASSES[optional]: int, The times of the experiment." - echo " DETAILS[optional]: str[ON|OFF], print detail monitor information." - echo " NGINX_REPLICAS[optional]: int, The number of Nginx pods, default is 10." -} - -function start() { - # submit Nginx deployment - cat k8s/nginx_deployment.yaml.tmpl | sed "s//$NGINX_REPLICAS/g" | kubectl create -f - - sleep 5 - kubectl scale deployment/nginx --replicas=400 - - # wait for 400 nginx replicas to stabilize - sleep 30 - - PASSE_NUM=0 AUTO_SCALING=$AUTO_SCALING JOB_COUNT=$JOB_COUNT JOB_NAME=$JOB_NAME\ - stdbuf -oL nohup python python/main.py run_case2 &> $OUTDIR/${JOB_NAME}-case2.log & - - # submit the auto-scaling training jobs - for ((j=0; j<$JOB_COUNT; j++)) - do - if [ "$AUTO_SCALING" == "ON" ] - then - submit_ft_job $JOB_NAME$j 15 - cat k8s/trainingjob.yaml.tmpl | sed "s//$JOB_NAME$j/g" | kubectl create -f - - else - submit_ft_job $JOB_NAME$j 15 - fi - sleep 5 - done - - # wait for jobs to stabilize - sleep 60 - - kubectl scale deployment/nginx --replicas=300 - sleep 90 - - kubectl scale deployment/nginx --replicas=200 - sleep 90 - - kubectl scale deployment/nginx --replicas=100 - sleep 90 - - kubectl scale deployment/nginx --replicas=200 - sleep 90 - - kubectl scale deployment/nginx --replicas=300 - sleep 90 - - kubectl scale deployment/nginx --replicas=400 - sleep 120 - - # no need to wait for all training jobs to finish, since training - # jobs could go on for a while. - - # stop all jobs - stop - - # waiting for the data collector exit - while true - do - FILE=$OUTDIR/$JOB_NAME-case1-pass0.csv - if [ ! -f $FILE ]; then - echo "waiting for collector exit, generated file " $FILE - sleep 5 - continue - fi - break - done - python python/main.py merge_case1_reports - - # waiting for all jobs have been cleaned - python python/main.py wait_for_cleaned -} - -function stop() { - for ((i=0; i<$JOB_COUNT; i++)) - do - echo "kill" $JOB_NAME$i - if [ "$AUTO_SCALING" == "ON" ] - then - cat k8s/trainingjob.yaml.tmpl | sed "s//$JOB_NAME$i/g" | kubectl delete -f - - fi - paddlecloud kill $JOB_NAME$i - kubectl delete pod `kubectl get pods | awk '{print $1}'` - done - cat k8s/nginx_deployment.yaml.tmpl | sed "s//$NGINX_REPLICAS/g" | kubectl delete -f - - kubectl delete pod `kubectl get pods | grep -v Terminating| awk '{print $1}'` -} - diff --git a/doc/edl/experiment/k8s/nginx_deployment.yaml.tmpl b/doc/edl/experiment/k8s/nginx_deployment.yaml.tmpl deleted file mode 100644 index e1919c4f..00000000 --- a/doc/edl/experiment/k8s/nginx_deployment.yaml.tmpl +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: apps/v1beta1 -kind: Deployment -metadata: - name: nginx -spec: - replicas: - template: - metadata: - labels: - app: nginx - spec: - containers: - - name: nginx - image: registry.baidu.com/paddlepaddle/nginx:1.7.9 - ports: - - containerPort: 80 - resources: - limits: - cpu: "3" - memory: "3Gi" - requests: - cpu: "3" - memory: "3Gi" - imagePullSecrets: - - name: job-registry-secret diff --git a/doc/edl/experiment/k8s/trainingjob.yaml.tmpl b/doc/edl/experiment/k8s/trainingjob.yaml.tmpl deleted file mode 100644 index 707f9308..00000000 --- a/doc/edl/experiment/k8s/trainingjob.yaml.tmpl +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: paddlepaddle.org/v1 -kind: TrainingJob -metadata: - name: -spec: - image: "paddlepaddle/paddlecloud-job" - port: 7164 - ports_num: 1 - ports_num_for_sparse: 1 - fault_tolerant: true - trainer: - entrypoint: "python train.py" - workspace: "/home/job-1/" - passes: 10 - min-instance: 2 - max-instance: 60 - resources: - limits: - cpu: "5" - memory: "8Gi" - requests: - cpu: "5" - memory: "8Gi" - pserver: - min-instance: 2 - max-instance: 2 - resources: - limits: - cpu: "4" - memory: "5Gi" - requests: - cpu: "4" - memory: "5Gi" diff --git a/doc/edl/experiment/mnist/Dockerfile b/doc/edl/experiment/mnist/Dockerfile deleted file mode 100644 index ebc6572d..00000000 --- a/doc/edl/experiment/mnist/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM docker.paddlepaddle.org/paddle -RUN mkdir -p /data/mnist && \ - python -c "import paddle.v2.dataset as dataset; dataset.mnist.train(); dataset.mnist.test(); dataset.common.convert('/data/mnist', dataset.mnist.train(), 100, 'mnist-train')" -ADD ./train_ft.py /root -CMD ["paddle", "version"] diff --git a/doc/edl/experiment/mnist/train_ft.py b/doc/edl/experiment/mnist/train_ft.py deleted file mode 100644 index 09fe0776..00000000 --- a/doc/edl/experiment/mnist/train_ft.py +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from PIL import Image -import numpy as np -import paddle.v2 as paddle -import paddle.v2.dataset.common as common -from paddle.v2.reader.creator import cloud_reader -import os -import sys -import glob -import pickle - -DC = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") - -DATASET_PATH = "/data/mnist/mnist-train-*" - - -def softmax_regression(img): - predict = paddle.layer.fc(input=img, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def multilayer_perceptron(img): - # The first fully-connected layer - hidden1 = paddle.layer.fc(input=img, - size=128, - act=paddle.activation.Relu()) - # The second fully-connected layer and the according activation function - hidden2 = paddle.layer.fc(input=hidden1, - size=64, - act=paddle.activation.Relu()) - # The thrid fully-connected layer, note that the hidden size should be 10, - # which is the number of unique digits - predict = paddle.layer.fc(input=hidden2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def convolutional_neural_network(img): - # first conv layer - conv_pool_1 = paddle.networks.simple_img_conv_pool( - input=img, - filter_size=5, - num_filters=20, - num_channel=1, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # second conv layer - conv_pool_2 = paddle.networks.simple_img_conv_pool( - input=conv_pool_1, - filter_size=5, - num_filters=50, - num_channel=20, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # fully-connected layer - predict = paddle.layer.fc(input=conv_pool_2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def main(): - etcd_ip = os.getenv("ETCD_IP") - etcd_endpoint = "http://" + etcd_ip + ":" + "2379" - paddle.init(trainer_count=1) - - # define network topology - images = paddle.layer.data( - name='pixel', type=paddle.data_type.dense_vector(784)) - label = paddle.layer.data( - name='label', type=paddle.data_type.integer_value(10)) - - # Here we can build the prediction network in different ways. Please - # choose one by uncomment corresponding line. - # predict = softmax_regression(images) - # predict = multilayer_perceptron(images) - predict = convolutional_neural_network(images) - - cost = paddle.layer.classification_cost(input=predict, label=label) - - parameters = paddle.parameters.create(cost) - - optimizer = paddle.optimizer.Momentum( - learning_rate=0.1 / 128.0, - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer, - is_local=False, - pserver_spec=etcd_endpoint, - use_etcd=True) - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if isinstance(event, paddle.event.EndPass): - result = trainer.test(reader=paddle.batch( - paddle.dataset.mnist.test(), batch_size=2)) - print "Test with Pass %d, Cost %f, %s\n" % ( - event.pass_id, result.cost, result.metrics) - - trainer.train( - reader=paddle.batch( - cloud_reader([DATASET_PATH], etcd_endpoint), batch_size=10), - event_handler=event_handler, - num_passes=120) - - -if __name__ == '__main__': - main() diff --git a/doc/edl/experiment/python/case1.py b/doc/edl/experiment/python/case1.py deleted file mode 100644 index 1ed05508..00000000 --- a/doc/edl/experiment/python/case1.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import utils -import os - -outdir = os.environ['OUTDIR'] - - -def merge_case_one_reports(jobname, passes): - rs = [_load_case_one_from_file('%s/%s-case1-pass%d.csv' %(outdir, jobname, i) )\ - for i in xrange(passes)] - avg_pending_time = 0 - avg_running_time = 0 - avg_cpu_utils = 0.0 - with open('%s/%s-case1-result.csv' % (outdir, jobname), 'w') as f: - f.write(utils.REPORT_SEPARATOR.join(rs[0].title()) + '\n') - for i in xrange(len(rs)): - r = rs[i] - avg_running_time += r.avg_running_time - avg_pending_time += r.avg_pending_time - avg_cpu_utils += r.avg_cpu_utils - res = [str(i)] - res.extend(r.values()) - f.write(utils.REPORT_SEPARATOR.join(res) + '\n') - f.write( - utils.REPORT_SEPARATOR.join([ - 'AVG', str(avg_running_time), str(avg_pending_time), 'N/A', - '%0.2f' % avg_cpu_utils - ]) + '\n') - - -def _load_case_one_from_file(fn): - with open(fn, 'r') as f: - d = f.read().strip().split(utils.REPORT_SEPARATOR) - r = CaseOneReport() - r.avg_running_time = int(d[0]) - r.avg_pending_time = int(d[1]) - r.job_running_time = d[2].split(',') - r.avg_cpu_utils = float(d[3]) - return r - - -class CaseOneReport(object): - def __init__(self): - self.avg_running_time = 0 - self.avg_pending_time = 0 - self.job_running_time = [] - self.job_pending_time = [] - self.avg_cpu_utils = 0.0 - self.avg_gpu_utils = 0.0 - self.cnt = 0 - - def update_cluster_utils(self, collector): - self.avg_cpu_utils += float(collector.cpu_utils()) - self.avg_gpu_utils += float(collector.gpu_utils()) - self.cnt += 1 - - def update_jobs(self, jobs): - for job in jobs: - if job.start_time == -1: - # job always pending - running_time = 0 - pending_time = job.end_time - job.submit_time - else: - running_time = job.end_time - job.start_time - pending_time = job.start_time - job.submit_time - self.job_running_time.append(str(running_time)) - self.avg_running_time += running_time - self.avg_pending_time += pending_time - - self.avg_running_time /= len(jobs) - self.avg_pending_time /= len(jobs) - - def title(self): - return [ - 'PASS', 'AVG RUNNING TIME', 'AVG PENDING TIME', 'JOB RUNNING TIME', - 'AVG CLUSTER CPU UTILS' - ] - - def run(self): - self.avg_cpu_utils /= self.cnt - self.avg_gpu_utils /= self.cnt - - def values(self): - return [ - str(self.avg_running_time), str(self.avg_pending_time), - ','.join(self.job_running_time), '%0.2f' % self.avg_cpu_utils - ] - - def to_csv(self, fn): - with open(fn, 'w') as f: - f.write(utils.REPORT_SEPARATOR.join(self.values())) diff --git a/doc/edl/experiment/python/case2.py b/doc/edl/experiment/python/case2.py deleted file mode 100644 index fed3216f..00000000 --- a/doc/edl/experiment/python/case2.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -class CaseTwoItem(object): - def __init__(self, ts, nginx_pods, running_trainers, collector): - self.ts = ts - self.nginx_pods = nginx_pods - self.running_trainers = running_trainers - self.cpu_utils = collector.cpu_utils() - self.gpu_utils = collector.gpu_utils() - - #def values(self): - # return [str(self.times), str(self.nginx_pods), str(self.running_trainers), str(self.cpu_utils)] - - -class CaseTwoReport(object): - def __init__(self): - self.items = [] - self.avg_cpu_utils = 0.0 - self.cnt = 0 - - def append_item(self, item): - # append new item only if Nginx pods changed - if not self.items or \ - self.items[-1].nginx_pods != item.nginx_pods or \ - self.items[-1].running_trainers != item.running_trainers: - self.items.append(item) - self.avg_cpu_utils += float(item.cpu_utils) - self.cnt += 1 - - def title(self): - return ['TIME', 'NGINX PODS', 'RUNNING TRAINERS', 'CLUSTER CPU UTILS'] - - def to_csv(self, fn): - self.avg_cpu_utils /= self.cnt - with open(fn, 'w') as f: - f.write('|'.join(self.title()) + '\n') - for item in self.items: - f.write('|'.join([ - str(item.ts), str(item.nginx_pods), str( - item.running_trainers), item.cpu_utils - ]) + '\n') diff --git a/doc/edl/experiment/python/collector.py b/doc/edl/experiment/python/collector.py deleted file mode 100644 index c904e9a3..00000000 --- a/doc/edl/experiment/python/collector.py +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from kubernetes import client, config -from kubernetes.client.rest import ApiException -from pprint import pprint -import time - -JOB_STATUS_NOT_EXISTS = 0 -JOB_STATUS_PENDING = 1 -JOB_STATUS_RUNNING = 2 -JOB_STATUS_FINISHED = 3 -JOB_STSTUS_KILLED = 4 - - -class JobInfo(object): - def __init__(self, name): - self.name = name - self.started = False - self.status = JOB_STATUS_NOT_EXISTS - self.submit_time = -1 - self.start_time = -1 - self.end_time = -1 - self.parallelism = 0 - self.cpu_utils = '' - - def status_str(self): - if self.status == JOB_STATUS_FINISHED: - return 'FINISH' - elif self.status == JOB_STATUS_PENDING: - return 'PENDING' - elif self.status == JOB_STATUS_NOT_EXISTS: - return 'N/A' - elif self.status == JOB_STATUS_RUNNING: - return 'RUNNING' - elif self.status == JOB_STSTUS_KILLED: - return 'KILLED' - - -class Collector(object): - ''' - Collector monitor data from Kubernetes API - ''' - - def __init__(self): - config.load_kube_config() - self.namespace = config.list_kube_config_contexts()[1]['context'][ - 'namespace'] - self.cpu_allocatable = 0 - self.gpu_allocatable = 0 - self.cpu_requests = 0 - self.gpu_requests = 0 - self._namespaced_pods = [] - # Collect cluster wide resource - self._init_allocatable() - - self._pods = [] - - def _init_allocatable(self): - api_instance = client.CoreV1Api() - try: - api_response = api_instance.list_node() - cpu = 0 - gpu = 0 - for item in api_response.items: - allocate = item.status.allocatable - cpu += int(allocate.get('cpu', 0)) - gpu += int(allocate.get('gpu', 0)) - self.cpu_allocatable = cpu - self.gpu_allocatable = gpu - except ApiException as e: - print("Exception when calling CoreV1Api->list_node: %s\n" % e) - - def _real_cpu(self, cpu): - if cpu: - if cpu.endswith('m'): - return 0.001 * int(cpu[:-1]) - else: - return int(cpu) - return 0 - - def run_once(self): - api_instance = client.CoreV1Api() - config.list_kube_config_contexts() - try: - api_response = api_instance.list_pod_for_all_namespaces() - self._pods = api_response.items - self._namespaced_pods = [] - for pod in self._pods: - if pod.metadata.namespace == self.namespace: - self._namespaced_pods.append(pod) - - except ApiException as e: - print( - "Exception when calling CoreV1Api->list_pod_for_all_namespaces: %s\n" - % e) - return int(time.time()) - - def cpu_utils(self): - cpu = 0 - for item in self._pods: - if item.status.phase != 'Running': - continue - for container in item.spec.containers: - requests = container.resources.requests - if requests: - cpu += self._real_cpu(requests.get('cpu', None)) - - return '%0.2f' % ((100.0 * cpu) / self.cpu_allocatable) - - def gpu_utils(self): - gpu = 0 - for item in self._pods: - if item.status.phase != 'Running': - continue - for container in item.spec.containers: - limits = container.resources.limits - if limits: - gpu += int(limits.get('alpha.kubernetes.io/nvidia-gpu', 0)) - if not self.gpu_allocatable: - return '0' - return '%0.2f' % ((100.0 * gpu) / self.gpu_allocatable) - - def get_paddle_pods(self): - pods = [] - for item in self._namespaced_pods: - if not item.metadata.labels: - continue - for k, v in item.metadata.labels.items(): - if k.startswith('paddle-job'): - pods.append((item.metadata.name, item.status.phase)) - return pods - - def get_running_trainers(self): - cnt = 0 - for item in self._namespaced_pods: - if not item.metadata.labels: - continue - for k, v in item.metadata.labels.items(): - if k == 'paddle-job' and item.status.phase == 'Running': - cnt += 1 - - return cnt - - def update_job(self, job, times): - phases = set() - parallelism = 0 - cpu = 0 - running_trainers = 0 - for item in self._namespaced_pods: - if item.metadata.labels: - for k, v in item.metadata.labels.items(): - # All PaddleCloud jobs has the label key: paddle-job-* - if k == 'paddle-job' and v == job.name: - parallelism += 1 - if job.submit_time == -1: - job.submit_time = times - phases.add(item.status.phase) - if item.status.phase == 'Running': - running_trainers += 1 - - if k.startswith( - 'paddle-job' - ) and v == job.name and item.status.phase == 'Running': - for container in item.spec.containers: - requests = container.resources.requests - if requests: - cpu += self._real_cpu( - requests.get('cpu', None)) - - job.parallelism = parallelism - job.running_trainers = running_trainers - job.cpu_utils = '%0.2f' % ((100.0 * cpu) / self.cpu_allocatable) - if len(phases) == 0: - if job.submit_time != -1: - job.status = JOB_STSTUS_KILLED - if job.end_time == -1: - job.end_time = times - elif 'Running' in phases: - if job.start_time == -1: - job.start_time = times - job.status = JOB_STATUS_RUNNING - elif ('Failed' in phases or \ - (len(phases) == 1 and 'Succeeded' in phases)) and \ - job.end_time == -1: - job.end_time = times - job.status = JOB_STATUS_FINISHED - elif 'Pending' in phases: - job.status = JOB_STATUS_PENDING - - def get_running_pods(self, labels): - pods = 0 - for item in self._namespaced_pods: - if item.metadata.labels: - for k, v in item.metadata.labels.items(): - if k in labels and labels[k] == v and \ - item.status.phase == 'Running': - pods += 1 - - return pods diff --git a/doc/edl/experiment/python/main.py b/doc/edl/experiment/python/main.py deleted file mode 100644 index 472dd318..00000000 --- a/doc/edl/experiment/python/main.py +++ /dev/null @@ -1,192 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import time -import collector -import sys -import utils -import os -from case1 import CaseOneReport, merge_case_one_reports -from case2 import CaseTwoItem, CaseTwoReport -COLLECTION_INTERVAL = 2 - -JOB_NAME = os.getenv("JOB_NAME", "mnist") -JOB_COUNT = int(os.getenv("JOB_COUNT", 1)) -PASSES = int(os.getenv("PASSES", 1)) -PASSE_NUM = int(os.getenv("PASSE_NUM", 1)) -DETAILS = os.getenv("DETAILS", "ON") - -outdir = os.environ['OUTDIR'] - - -class StatInfo(object): - def __init__(self, pass_num, average_running_time, average_pending_time, - jobs_running_time, cpu_utils): - self._pass_num = pass_num - self._average_runnint_time = average_running_time - self._average_pending_time = average_pending_time - self._jobs_running_time = jobs_running_time - self._cpu_utils = cpu_utils - - def to_str(self): - return utils.REPORT_SEPARATOR.join([ - str(self._pass_num), str(self._average_runnint_time), - str(self._average_pending_time), ','.join(self._jobs_running_time), - str(self._cpu_utils) - ]) - - -def wait_for_finished(c): - jobs = utils.get_jobs(JOB_NAME, JOB_COUNT) - while True: - c.run_once() - for job in jobs: - c.update_job(job, 0) - if utils.is_jobs_finished(jobs): - print 'All the jobs have already finished' - return - print 'Waiting for all the jobs finsihed for 5 seconds...' - time.sleep(5) - - -def wait_for_cleaned(c): - while True: - c.run_once() - pods = c.get_paddle_pods() - if not pods: - print 'All the jobs have been cleaned.' - return - print 'Waiting for all the jobs cleaned for 5 seconds...' - time.sleep(5) - - -def print_title(): - print utils.REPORT_SEPARATOR.join([ - 'TIME', 'JOB NAME:STATUS:RUNNING TRAINERS:CPU UTILS', 'NGINX PODS', - 'CLUSTER CPU UTILS', 'CLUSTER GPU UTILS' - ]) - - -def print_info(ts, c, jobs, nginx_pods): - - running_job_count = 0 - pending_job_count = 0 - finished_job_count = 0 - waiting_job_count = 0 - jobs_running_trainers = [] - jobs_cpu_utils = [] - for job in jobs: - if job.status == collector.JOB_STATUS_RUNNING: - running_job_count += 1 - if job.status == collector.JOB_STATUS_PENDING: - pending_job_count += 1 - if job.status == collector.JOB_STATUS_NOT_EXISTS: - waiting_job_count += 1 - if job.status == collector.JOB_STATUS_FINISHED: - finished_job_count += 1 - jobs_running_trainers.append(str(job.running_trainers)) - jobs_cpu_utils.append(str(job.cpu_utils)) - - print ','.join([ - str(ts), - str(c.cpu_utils()), # cluster CPU utils - str(c.get_running_trainers()), # total running trainers count - str(waiting_job_count), - str(pending_job_count), - str(running_job_count), - str(finished_job_count), - str(nginx_pods), - '|'.join(jobs_running_trainers - ), # Running trainers count for each job, separator by '|' - '|'.join( - jobs_cpu_utils) # the CPU utils for each job, separator by '|' - ]) - - -def run_case2(c): - r1 = CaseOneReport() - r2 = CaseTwoReport() - jobs = utils.get_jobs(JOB_NAME, JOB_COUNT) - start = int(time.time()) - - while True: - c.run_once() - ts = int(time.time()) - start - for job in jobs: - c.update_job(job, ts) - - running_trainers = c.get_running_trainers() - nginx_pods = c.get_running_pods({'app': 'nginx'}) - - item = CaseTwoItem(ts, nginx_pods, running_trainers, c) - - if DETAILS: - print_info(ts, c, jobs, nginx_pods) - - r1.update_cluster_utils(c) - r2.append_item(item) - - if utils.is_jobs_killed(jobs): - r1.update_jobs(jobs) - r1.run() - r2.to_csv('%s/%s-case2-result.csv' % (outdir, JOB_NAME)) - r1.to_csv('%s/%s-case1-pass%d.csv' % (outdir, JOB_NAME, PASSE_NUM)) - break - - -def run_case1(c): - report = CaseOneReport() - jobs = utils.get_jobs(JOB_NAME, JOB_COUNT) - start = int(time.time()) - - while True: - ts = int(time.time()) - start - c.run_once() - for job in jobs: - c.update_job(job, ts) - report.update_cluster_utils(c) - - if DETAILS: - print_info(ts, c, jobs, 0) - - if utils.is_jobs_killed(jobs): - report.update_jobs(jobs) - report.run() - report.to_csv('%s/%s-case1-pass%d.csv' % - (outdir, JOB_NAME, PASSE_NUM)) - break - - -def usage(): - print 'Usage python main.py [run_case1|run_case2|wait_for_finished|wait_for_cleaned]' - - -if __name__ == "__main__": - if len(sys.argv) != 2: - usage() - exit(0) - - c = collector.Collector() - if sys.argv[1] == 'run_case1': - run_case1(c) - elif sys.argv[1] == 'run_case2': - run_case2(c) - elif sys.argv[1] == 'wait_for_finished': - wait_for_finished(c) - elif sys.argv[1] == 'wait_for_cleaned': - wait_for_cleaned(c) - elif sys.argv[1] == 'merge_case1_reports': - merge_case_one_reports(JOB_NAME, PASSES) - else: - usage() diff --git a/doc/edl/experiment/python/ploter.py b/doc/edl/experiment/python/ploter.py deleted file mode 100644 index c1e2f4e8..00000000 --- a/doc/edl/experiment/python/ploter.py +++ /dev/null @@ -1,237 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import matplotlib.pyplot as plt -import numpy as np -import matplotlib.ticker as mticker -import os -import csv -import glob - -DATA_PATHS = os.getenv("DATA_PATHS", "../out1/case1-mnist-OFF*/*.log") -CASEID = os.getenv("CASE", "1") -DATA_MAX = int(os.getenv("DATA_MAX", "550")) -PNGPATH = os.getenv("PNGPATH", "./") - - -def clean_data(data): - new_data = [] - for ins in data: - new_ins = [] - for step in ins: - ts = int(step[0]) - if ts >= 0 and ts < DATA_MAX: - new_ins.append(step) - new_data.append(new_ins) - return new_data - - -def nearest(l, val): - r = l[0] - cur_dis = -1 - for v in l: - dis = abs(int(val[0]) - int(v[0])) - if cur_dis < 0 or dis < cur_dis: - cur_dis = dis - r = v - return r - - -def avg(a, weight_a, b, weight_b): - if isinstance(a, list): - r = [] - for i, item in enumerate(a): - v = avg(item, weight_a, b[i], weight_b) - r.append(v) - out = r - elif isinstance(a, str): - if "|" in a: - r = [] - va = a.split("|") - vb = b.split("|") - total = len(va) - if len(vb) > total: - total = len(vb) - - for i in range(total): - if len(a) > i: - fa = float(va[i]) - else: - fa = float(va[-1]) - - if len(b) > i: - fb = float(vb[i]) - else: - fb = float(vb[-1]) - - f = (fa * weight_a + fb * weight_b) / (weight_a + weight_b) - r.append(str(f)) - - out = "|".join(r) - else: - a = float(a) - b = float(b) - out = (a * weight_a + b * weight_b) / (weight_a + weight_b) - else: - a = float(a) - b = float(b) - out = (a * weight_a + b * weight_b) / (weight_a + weight_b) - - return out - - -def merge_two(a, weight_a, b, weight_b): - result = [] - - for v in a: - near = nearest(b, v) - result.append(avg(v, weight_a, near, weight_b)) - - for v in b: - near = nearest(a, v) - result.append(avg(near, weight_a, v, weight_b)) - - sorted_result = sorted(result, key=lambda v: int(v[0])) - return sorted_result - - -def merge_data(data): - data = clean_data(data) - result = data[0] - for i in range(len(data) - 1): - result = merge_two(result, i + 1, data[i + 1], 1) - return result - - -if __name__ == '__main__': - column_names = [ - "timestamp", "cpu util", "# of trainers", "# of not existing jobs", - "# of pending jobs", "# of running jobs", "# of completed jobs", - "# of ngix pods", "running trainers for each job", - "cpu utils for each job" - ] - - # y axes limits for case 1 and 2 - ylims = { - "1": #CASEID - [ - 0, #timestamp, not used - 100, - 360, - 20, - 20, - 20, - 20, - 0, - 80, - 30 #cpu utils for each job. To be decided - ], - "2": [ - 0, #timestamp, not used - 100, - 300, - 20, - 20, - 20, - 20, - 0, - 60, - 50 #cpu utils for each job. To be decided - ] - } - - # read csv files - data_csvs = [] - datafiles = glob.glob(DATA_PATHS) - for filepath in datafiles: - with open(filepath, "rb") as csvfile: - csv_reader = csv.reader(csvfile, delimiter=',') - data_csvs.append({'data': list(csv_reader), 'time_of_event': 0}) - ''' - start aligning different batch of data by time of event - case one's event is when # of not existing job become 0 - case tow's event is when # of ngix pods start to change - ''' - # find time of event - for index, data_csv in enumerate(data_csvs): - previous_row = data_csv["data"][0] - for row in data_csv["data"]: - if CASEID == "1": - if row[3] == "0": - print row - data_csv['time_of_event'] = row[0] - break - if CASEID == "2": - if row[7] != previous_row[7]: - data_csv['time_of_event'] = row[0] - break - previous_row = row - - # correct data offest - data_merged = data_csvs[0]["data"] - data_corrected = [None] * len(data_csvs) - standard_time_of_event = int(data_csvs[0]['time_of_event']) - print "standard time of event", standard_time_of_event - for index, data_csv in enumerate(data_csvs): - # time_offset = int(data_csv['time_of_event']) - standard_time_of_event - # print "time offset", time_offset - - # disable time_offset - time_offset = 0 - data_corrected[index] = [[str(int(x[0]) - time_offset)] + x[1:] - for x in data_csv['data']] - - data_plot = merge_data(data_corrected) - plot_data = [[] for _ in range(len(column_names))] - - for row_idx, row in enumerate(data_plot): - for col_idx, item in enumerate(row): - if isinstance(item, str): - v = item.split("|") - else: - v = [item] - v = np.array(v).astype(np.float) - plot_data[col_idx].append(v) - - ax_data = np.array(plot_data[0]) - _, axes = plt.subplots(len(plot_data) - 1, sharex=True) - - #create charts - for index, plot in enumerate(plot_data): - if index == 0: - continue - - plot = np.array(plot) - name = column_names[index] - ymax = ylims[CASEID][index] - ymax = ymax if ymax > 0 else 1 - - ax = axes[index - 1] - ax.plot(ax_data, plot) - - ax.set_ylim((0, ymax)) - ax.yaxis.set_major_locator(mticker.MaxNLocator(4, integer=True)) - ax.set_title(name) - - fig = plt.figure(name) - png_ax = plt.gca() - png_ax.set_title(name) - png_ax.set_ylim((0, ymax)) - plt.plot(ax_data, plot) - plt.savefig(PNGPATH + name + ".png") - plt.close(fig) - - plt.subplots_adjust( - left=0.07, bottom=0.11, right=0.96, top=0.93, wspace=0.2, hspace=0.57) - plt.show() diff --git a/doc/edl/experiment/python/utils.py b/doc/edl/experiment/python/utils.py deleted file mode 100644 index 15b684de..00000000 --- a/doc/edl/experiment/python/utils.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import collector -REPORT_SEPARATOR = "|" - - -def is_jobs_finished(jobs): - for job in jobs: - if job.status != collector.JOB_STATUS_FINISHED: - return False - return True - - -def is_jobs_killed(jobs): - for job in jobs: - if job.status != collector.JOB_STSTUS_KILLED: - return False - return True - - -def avg_running_time(jobs): - sum = 0 - for job in jobs: - sum += job.end_time - job.start_time - return sum / len(jobs) - - -def avg_pending_time(jobs): - sum = 0 - for job in jobs: - sum += job.start_time - job.submit_time - return sum / len(jobs) - - -def get_jobs(jobname_prefix, jobs): - return [collector.JobInfo('%s%d' % (jobname_prefix, idx)) \ - for idx in xrange(jobs)] diff --git a/doc/edl/experiment/result/.gitignore b/doc/edl/experiment/result/.gitignore deleted file mode 100644 index 4a74e828..00000000 --- a/doc/edl/experiment/result/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -*/*.log.csv diff --git a/doc/edl/experiment/result/README.md b/doc/edl/experiment/result/README.md deleted file mode 100644 index eaacc4a3..00000000 --- a/doc/edl/experiment/result/README.md +++ /dev/null @@ -1,26 +0,0 @@ -## Plotter usage - -### Preprocess - -```bash -$ cd $REPO/doc/autoscale/experiment/result -$ ./plot/preprocess.sh `ls */*.log` -``` - -### Plot Experiment Result Graphs - -1. [Install Go](https://golang.org/doc/install) - -1. Run the command below: - ```bash - go run plot/plot.go -pattern '*/*.log.csv' - ``` - - The experiment result graphs will be generated in the current folder. - -### Calculate Result Report - -Run the command below: -```bash -./calculate_result.sh -``` diff --git a/doc/edl/experiment/result/calculate_result.sh b/doc/edl/experiment/result/calculate_result.sh deleted file mode 100755 index 1bdff1d7..00000000 --- a/doc/edl/experiment/result/calculate_result.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -for i in `seq 0 9`; do cat case1-mnist-OFF-20-1-ON-400-round_$i/mnist-case1-pass0.log|awk -F, '{if ($1<=550) {a=a+$2; b=b+1}} END {print a/b}'; done > /tmp/cpu_off.txt -cat /tmp/cpu_off.txt|awk '{a+=$1} END{print a/10}' >> /tmp/cpu_off.txt -for i in `seq 0 9`; do cat case1-mnist-ON-20-1-ON-400-round_$i/mnist-case1-pass0.log|awk -F, '{if ($1<=550) {a=a+$2; b=b+1}} END {print a/b}'; done > /tmp/cpu_on.txt -cat /tmp/cpu_on.txt|awk '{a+=$1} END{print a/10}' >> /tmp/cpu_on.txt -cat case1-mnist-OFF-20-1-ON-400-round_*/mnist-case1-result.csv|grep -v PASS|grep -v AVG|awk -F'|' 'BEGIN {a=0} {print a"|"$3"|"; a+=1; b+=$3} END{print "AVG|"b/(a+1)"|"}' > /tmp/pending_off.txt -cat case1-mnist-ON-20-1-ON-400-round_*/mnist-case1-result.csv|grep -v PASS|grep -v AVG|awk -F'|' 'BEGIN {a=0} {print a"|"$3"|"; a+=1; b+=$3} END{print "AVG|"b/(a+1)}"|"}' > /tmp/pending_on.txt - -echo "# case 1 autoscaling on" -echo 'PASS|AVG PENDING TIME|CLUSTER CPU UTILS' -echo '---|---|---' -paste /tmp/pending_on.txt /tmp/cpu_on.txt - -echo -echo "# case 1 autoscaling off" -echo 'PASS|AVG PENDING TIME|CLUSTER CPU UTILS' -echo '---|---|---' -paste /tmp/pending_off.txt /tmp/cpu_off.txt - -for i in `seq 0 9`; do cat case2-mnist-OFF-6-1-ON-400-round_$i/mnist-case2.log|awk -F, '{if ($1<=550) {a=a+$2; b=b+1}} END {print a/b}'; done > /tmp/cpu_off.txt -cat /tmp/cpu_off.txt|awk '{a+=$1} END{print a/10}' >> /tmp/cpu_off.txt -for i in `seq 0 9`; do cat case2-mnist-ON-6-1-ON-400-round_$i/mnist-case2.log|awk -F, '{if ($1<=550) {a=a+$2; b=b+1}} END {print a/b}'; done > /tmp/cpu_on.txt -cat /tmp/cpu_on.txt|awk '{a+=$1} END{print a/10}' >> /tmp/cpu_on.txt -cat case2-mnist-OFF-6-1-ON-400-round_*/mnist-case1-result.csv|grep -v PASS|grep -v AVG|awk -F'|' 'BEGIN {a=0} {print a"|"$3"|"; a+=1; b+=$3} END{print "AVG|"b/(a+1)"|"}' > /tmp/pending_off.txt -cat case2-mnist-ON-6-1-ON-400-round_*/mnist-case1-result.csv|grep -v PASS|grep -v AVG|awk -F'|' 'BEGIN {a=0} {print a"|"$3"|"; a+=1; b+=$3} END{print "AVG|"b/(a+1)"|"}' > /tmp/pending_on.txt - -echo -echo "# case 2 autoscaling on" -echo 'PASS|AVG PENDING TIME|CLUSTER CPU UTILS' -echo '---|---|---' -paste /tmp/pending_on.txt /tmp/cpu_on.txt - -echo -echo "# case 2 autoscaling off" -echo 'PASS|AVG PENDING TIME|CLUSTER CPU UTILS' -echo '---|---|---' -paste /tmp/pending_off.txt /tmp/cpu_off.txt - -for i in `seq 0 9`; do cat case2-mnist-OFF-6-1-ON-400-round_*/mnist-case2.log |awk -F, '{if ($1>=300 && $1<=370) {a=a+$2; b=b+1}} END {print a/b}'; done > /tmp/off-peak-util-off.txt -for i in `seq 0 9`; do cat case2-mnist-ON-6-1-ON-400-round_*/mnist-case2.log |awk -F, '{if ($1>=300 && $1<=370) {a=a+$2; b=b+1}} END {print a/b}'; done > /tmp/off-peak-util-on.txt -echo -echo "# case 2 autoscaling on, average util during off-peak time" -echo "Off-peak (300s - 370s) average cluster utilization:" -cat /tmp/off-peak-util-on.txt | awk '{a+=$1; b+=1} END {print a/b}' - -echo -echo "# case 2 autoscaling off, average util during off-peak time" -echo "Off-peak (300s - 370s) average cluster utilization:" -cat /tmp/off-peak-util-off.txt | awk '{a+=$1; b+=1} END {print a/b}' diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.csv deleted file mode 100644 index 9d4c5311..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -214|319|624,631,616,606,598,583,0,0,0,0,0,0,28,114,32,36,48,110,128,128|54.78 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.log deleted file mode 100644 index 76dbdaa3..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.log +++ /dev/null @@ -1,112 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.66,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,15.82,56,19,0,1,0,0,56|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -14,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,19.10,65,18,0,2,0,0,60|5|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|2.43|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -22,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.20,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -32,43.97,172,17,0,3,0,0,60|60|52|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|12.78|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -37,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -42,50.41,194,16,0,4,0,0,60|60|60|14|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|4.68|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -47,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -52,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -57,74.13,297,15,0,5,0,0,60|60|60|60|57|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|13.88|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -62,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -67,75.28,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -72,86.52,347,14,0,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -80,87.54,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -86,88.10,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -92,88.10,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -98,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -104,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -112,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -121,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -129,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -136,88.22,347,10,4,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,88.22,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -153,88.27,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -162,88.31,347,8,6,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -170,88.31,347,8,6,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -178,88.31,347,7,7,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -186,88.35,347,7,7,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -193,88.35,347,6,8,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -203,88.39,347,6,8,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -213,88.44,347,5,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -221,88.44,347,5,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -230,88.48,347,4,10,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -241,88.48,347,3,11,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -254,88.52,347,2,12,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -266,88.57,347,2,12,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -279,88.61,347,1,13,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -291,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -302,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -315,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -323,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -334,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -344,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -355,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -367,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -379,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -389,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -399,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -410,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -421,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -432,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -443,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -453,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -466,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -478,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -489,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -500,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -514,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -526,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -535,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -544,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -555,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -565,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -577,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -588,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -600,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -612,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -622,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -631,75.87,287,0,11,5,1,0,0|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.75|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -640,72.81,280,0,7,6,0,0,0|52|60|60|60|47|0|0|0|0|0|0|0|0|0|0|1|0|0|0,0.00|12.82|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.21|0.04|0.04|0.04|0.26|0.04|0.04|0.04 -648,42.78,146,0,0,10,2,0,0|0|0|0|53|47|0|0|0|0|0|0|2|3|9|5|7|10|3|7,0.00|0.00|0.00|0.85|13.03|11.75|1.58|0.04|0.04|0.04|0.04|0.04|1.15|1.02|2.30|1.28|1.87|2.68|1.02|1.87 -655,29.58,97,0,0,8,3,0,0|0|0|0|0|0|0|0|0|0|0|0|2|3|9|5|11|25|19|23,0.00|0.00|0.00|0.00|0.00|0.21|1.58|0.04|0.04|0.04|0.04|0.04|1.15|1.02|2.30|1.45|2.73|6.22|4.94|5.62 -661,36.52,134,0,0,8,1,0,0|0|0|0|0|0|0|0|0|0|0|0|2|3|9|5|11|29|31|44,0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.00|0.04|0.04|0.04|0.04|1.15|1.02|2.30|1.45|2.73|7.07|7.84|10.60 -666,36.39,134,0,0,8,0,0,0|0|0|0|0|0|0|0|0|0|0|0|2|3|9|5|11|29|31|44,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|1.15|1.02|2.30|1.45|2.73|7.07|7.84|10.60 -671,36.31,134,0,0,8,0,0,0|0|0|0|0|0|0|0|0|0|0|0|2|3|9|5|11|29|31|44,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.15|1.02|2.30|1.45|2.73|7.07|7.84|10.60 -676,33.97,128,0,0,7,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|7|5|11|29|31|44,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.26|1.87|1.45|2.73|7.07|7.84|10.60 -680,31.62,118,0,0,6,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|2|11|29|31|44,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.26|0.17|0.81|2.73|7.07|7.84|10.60 -684,29.07,108,0,0,5,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|3|29|31|44,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|1.02|7.07|7.84|10.60 -688,20.12,72,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|3|24|44,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.64|6.35|10.60 -692,6.07,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|8,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.38|2.73 -695,4.41,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.38|1.06 -698,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -701,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -704,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -707,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -710,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -712,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -716,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -720,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -723,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -726,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -729,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -731,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -734,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -737,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -740,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -743,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -746,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -748,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|2|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.43|0.21|1.06 -751,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|1|1|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.21|0.21|1.06 -755,3.81,7,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|1|1|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.21|0.21|0.85 -758,3.39,5,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|0|1|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.00|0.21|0.64 -760,3.39,5,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0|0|0|1|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.17|0.00|0.00|0.21|0.64 -762,3.17,4,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.21|0.64 -765,3.17,4,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.21|0.64 -768,3.17,4,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.21|0.64 -772,2.96,3,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.21|0.43 -776,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-result.csv deleted file mode 100644 index 4d562c1a..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|214|319|624,631,616,606,598,583,0,0,0,0,0,0,28,114,32,36,48,110,128,128|54.78 -AVG|214|319|N/A|54.78 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-pass0.csv deleted file mode 100644 index 8d5aee57..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -198|305|605,595,579,576,561,556,0,0,0,0,0,0,0,0,0,0,118,122,122,129|54.12 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-pass0.log deleted file mode 100644 index 74d6ed60..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-pass0.log +++ /dev/null @@ -1,110 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.15,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,16.42,59,19,0,1,0,0,59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.27|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -11,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -14,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -18,21.78,76,18,0,2,0,0,60|16|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|5.11|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -22,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -25,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -29,32.05,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,45.51,179,17,0,3,0,0,60|60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -44,55.09,216,16,0,4,0,0,60|60|60|36|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|9.37|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -48,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -54,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -59,74.55,299,15,0,5,0,0,60|60|60|60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -64,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -70,85.20,341,14,0,6,0,0,60|60|60|60|60|41|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|10.43|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -76,86.73,348,14,0,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -82,88.14,348,13,1,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -89,88.14,348,13,1,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -97,88.18,348,12,2,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -106,88.18,348,12,2,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -113,88.22,348,11,3,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -119,88.22,348,11,3,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -126,88.22,348,10,4,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -136,88.27,348,9,5,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,88.31,348,9,5,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -153,88.31,348,8,6,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -161,88.35,348,8,6,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -169,88.35,348,7,7,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -178,88.39,348,7,7,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -185,88.39,348,6,8,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -193,88.44,348,6,8,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -202,88.48,348,5,9,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -210,88.48,348,4,10,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -218,88.52,348,4,10,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -229,88.57,348,3,11,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -237,88.57,348,2,12,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -247,88.61,348,2,12,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -257,88.65,348,1,13,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -268,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -277,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -289,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -299,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -311,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -320,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -331,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -342,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -352,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -363,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -372,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -382,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -395,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -407,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -417,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -429,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -442,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -452,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -463,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -474,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -483,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -493,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -507,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -519,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -531,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -545,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -557,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -569,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -579,88.69,348,0,14,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -591,88.69,348,0,13,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -604,82.52,319,0,8,6,0,0,31|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,8.35|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -613,44.44,163,0,6,3,3,0,0|0|0|55|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.38|13.46|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -620,20.17,52,0,0,5,3,0,0|0|0|0|0|22|0|0|0|0|0|0|0|0|0|0|9|7|7|7,0.00|0.00|0.34|0.00|0.51|6.26|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|2.81|2.39|1.87|2.04 -626,41.38,149,0,0,4,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|23|36|43|47,0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|6.47|9.41|10.90|11.75 -631,43.29,160,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|23|37|44|56,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|6.47|9.63|11.12|13.67 -635,43.25,160,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|23|37|44|56,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|6.47|9.63|11.12|13.67 -639,43.16,160,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|23|37|44|56,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|6.47|9.63|11.12|13.67 -643,43.16,160,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|23|37|44|56,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|6.47|9.63|11.12|13.67 -647,43.08,160,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|23|37|44|56,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|6.47|9.63|11.12|13.67 -653,42.23,156,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|19|37|44|56,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|5.62|9.63|11.12|13.67 -658,19.95,67,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|6|56,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|1.02|0.55|2.51|13.67 -661,6.28,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.55|0.98|1.58 -664,5.22,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.38|0.64|1.02 -667,4.71,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.47|0.85 -669,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -672,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -674,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -677,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -680,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -682,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -685,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -687,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -692,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -696,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -700,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -705,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -708,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -712,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -715,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -719,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.21|0.43|0.85 -723,4.45,10,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.81|0.21|0.43|0.85 -727,4.45,10,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.81|0.21|0.43|0.85 -730,4.45,10,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.81|0.21|0.43|0.85 -732,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|1|2|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.60|0.21|0.43|0.85 -735,3.39,5,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|1|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|0.21|0.21|0.43 -738,3.00,4,0,0,3,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.43 -742,2.58,2,0,0,1,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -746,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21 -749,2.15,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -753,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-result.csv deleted file mode 100644 index 7e36e2e5..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|198|305|605,595,579,576,561,556,0,0,0,0,0,0,0,0,0,0,118,122,122,129|54.12 -AVG|198|305|N/A|54.12 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-pass0.csv deleted file mode 100644 index 74573de9..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -180|295|581,577,563,552,546,535,0,0,0,0,0,0,0,0,0,0,0,96,127,40|52.35 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-pass0.log deleted file mode 100644 index f5885d96..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-pass0.log +++ /dev/null @@ -1,108 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,12.42,40,19,0,1,0,0,40|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,10.26|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -11,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,19.66,66,18,0,2,0,0,60|6|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|2.98|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -23,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,40.99,158,17,0,3,0,0,60|60|38|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|9.80|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -37,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -41,48.91,187,16,0,4,0,0,60|60|60|7|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|3.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -48,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -55,70.46,280,15,0,5,0,0,60|60|60|60|40|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|10.22|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -61,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -66,80.94,321,14,0,6,0,0,60|60|60|60|60|21|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|6.18|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -73,86.95,349,14,0,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -80,88.52,349,13,1,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -88,88.52,349,13,1,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -95,88.57,349,12,2,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -103,88.57,349,11,3,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -110,88.61,349,11,3,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -116,88.65,349,10,4,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,88.65,349,10,4,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -130,88.65,349,9,5,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -138,88.69,349,9,5,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,88.74,349,8,6,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -153,88.74,349,7,7,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -163,88.78,349,7,7,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -171,88.82,349,6,8,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -179,88.82,349,5,9,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -187,88.86,349,5,9,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -196,88.91,349,4,10,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -205,88.91,349,3,11,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -214,88.95,349,2,12,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -223,88.99,349,2,12,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -233,89.03,349,1,13,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -244,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -253,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -268,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -278,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -289,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -300,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -312,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -321,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -331,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -342,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -354,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -363,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -374,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -384,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -398,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -406,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -418,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -428,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -440,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -452,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -461,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -471,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -482,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -492,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -502,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -515,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -525,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -535,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -546,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -556,89.08,349,0,14,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -568,89.08,349,0,12,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -577,89.08,349,0,8,6,0,0,60|60|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -586,62.50,230,0,5,5,1,0,0|1|60|60|60|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.68|1.79|14.52|14.52|14.52|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -593,35.67,114,0,0,5,4,0,0|0|0|0|5|49|0|0|0|0|0|0|0|0|0|0|0|1|4|55,0.00|0.00|0.00|0.38|2.81|12.18|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.77|1.92|13.46 -601,30.69,106,0,0,3,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|41|60,0.00|0.00|0.00|0.00|0.17|0.00|0.34|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|2.81|10.31|14.52 -605,30.26,106,0,0,3,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|41|60,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|2.81|10.31|14.52 -609,30.05,106,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|41|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|2.81|10.31|14.52 -613,29.96,106,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|41|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|2.81|10.31|14.52 -616,29.92,106,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|41|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|2.81|10.31|14.52 -620,29.88,106,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|41|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|2.81|10.31|14.52 -624,29.83,106,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|41|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|2.81|10.31|14.52 -628,23.91,84,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.15|6.09|14.52 -633,3.81,6,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.38 -636,3.81,6,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.38 -638,3.77,6,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.34 -642,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -645,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -647,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -649,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -652,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -655,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -658,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -661,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -664,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -666,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -670,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -673,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -676,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -678,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -681,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -684,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -687,3.43,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.06|0.00 -689,3.22,5,0,0,1,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.06|0.00 -692,3.22,5,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.06|0.00 -695,2.79,3,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.64|0.00 -697,2.79,3,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.64|0.00 -699,2.79,3,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.64|0.00 -702,2.79,3,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.64|0.00 -705,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43|0.00 -708,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43|0.00 -710,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43|0.00 -713,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00 -716,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00 -718,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00 -720,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-result.csv deleted file mode 100644 index f68b6941..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|180|295|581,577,563,552,546,535,0,0,0,0,0,0,0,0,0,0,0,96,127,40|52.35 -AVG|180|295|N/A|52.35 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-pass0.csv deleted file mode 100644 index 1f4cc7e8..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -206|309|613,600,596,584,577,566,0,0,0,0,0,0,0,0,0,122,103,125,125,114|56.00 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-pass0.log deleted file mode 100644 index 4c4c3f22..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-pass0.log +++ /dev/null @@ -1,105 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,3.34,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -6,15.40,54,19,0,1,0,0,54|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.25|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -15,17.36,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.68|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,30.09,115,18,0,2,0,0,60|55|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|13.42|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -22,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,42.95,167,17,0,3,0,0,60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -36,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -42,55.09,216,16,0,4,0,0,60|60|60|36|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|9.37|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -47,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -52,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -57,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -63,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -68,83.75,334,14,0,6,0,0,60|60|60|60|60|34|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|8.99|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -74,86.09,345,14,0,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -80,87.80,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.70|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -88,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -94,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -100,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -107,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -115,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -131,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -138,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,88.01,345,9,5,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -153,88.01,345,8,6,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -161,88.05,345,8,6,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -170,88.05,345,7,7,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -178,88.10,345,7,7,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -188,88.14,345,6,8,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -196,88.14,345,5,9,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -206,88.18,345,5,9,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -214,88.18,345,4,10,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -223,88.22,345,4,10,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -233,88.27,345,3,11,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -250,88.31,345,2,12,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -262,88.35,345,1,13,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -270,88.35,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -280,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -295,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -305,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -315,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -337,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -346,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -358,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -370,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -386,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -399,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -409,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -422,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -432,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -442,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -452,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -466,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -475,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -485,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -498,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -511,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -525,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -537,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -546,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -557,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -567,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -578,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -588,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -598,88.39,345,0,14,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -609,88.39,345,0,10,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -619,60.54,225,0,7,4,2,0,0|0|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.17|1.02|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -626,37.93,120,0,1,7,3,0,0|0|0|0|44|45|0|0|0|0|0|0|0|0|0|5|6|6|9|5,0.00|0.00|0.51|0.34|10.95|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|1.45|2.00|2.51|2.64|1.96 -634,41.84,147,0,0,5,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|14|23|29|43|38,0.00|0.00|0.00|0.00|0.00|0.51|0.17|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|3.88|6.30|7.75|10.90|9.84 -639,47.38,175,0,0,5,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|14|23|29|51|58,0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|3.88|6.30|7.75|12.61|14.10 -643,46.96,175,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|14|23|29|51|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|3.88|6.30|7.75|12.61|14.10 -649,46.91,175,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|14|23|29|51|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|3.88|6.30|7.75|12.61|14.10 -655,46.78,175,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|14|23|29|51|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|3.88|6.30|7.75|12.61|14.10 -659,44.70,166,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|23|29|51|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.79|6.30|7.75|12.61|14.10 -664,32.69,118,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|2|51|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.81|2.00|12.61|14.10 -668,7.82,19,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|4,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.53|2.26 -673,6.11,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.60 -677,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -680,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -683,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -686,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -689,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -692,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -695,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -698,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -701,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -706,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -709,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -715,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -718,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -721,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -723,5.94,17,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.21|1.49|0.43 -726,5.30,14,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1|1|7|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.81|0.21|0.21|1.49|0.43 -729,4.88,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|0|1|6|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.81|0.00|0.21|1.28|0.43 -731,4.88,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|0|1|6|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.81|0.00|0.21|1.28|0.43 -734,4.45,10,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0|1|5|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.60|0.00|0.21|1.06|0.43 -737,4.24,9,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0|1|5|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.60|0.00|0.21|1.06|0.21 -740,3.81,7,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|1|5|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|0.00|0.21|1.06|0.00 -748,3.22,5,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|4|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.85|0.00 -751,2.15,0,0,0,0,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -753,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-result.csv deleted file mode 100644 index a2be913c..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|206|309|613,600,596,584,577,566,0,0,0,0,0,0,0,0,0,122,103,125,125,114|56.00 -AVG|206|309|N/A|56.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-pass0.csv deleted file mode 100644 index eb0840e7..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -206|315|619,615,605,598,582,578,0,0,0,0,0,0,0,0,0,122,117,127,131,43|54.79 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-pass0.log deleted file mode 100644 index 9d5b4fe6..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-pass0.log +++ /dev/null @@ -1,110 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.32,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,15.18,53,19,0,1,0,0,53|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.03|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,17.87,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -20,31.15,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.48|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -25,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,36.73,138,17,0,3,0,0,60|60|18|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|5.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -44,55.98,220,16,0,4,0,0,60|60|60|40|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|10.26|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -49,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -53,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -60,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -65,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -71,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -78,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -85,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -94,88.22,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -101,88.27,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -109,88.27,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -116,88.31,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -123,88.31,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -129,88.35,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -136,88.35,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -144,88.35,346,9,5,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -153,88.39,346,9,5,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -160,88.39,346,9,5,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -168,88.44,346,8,6,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -176,88.44,346,7,7,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -184,88.48,346,7,7,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -193,88.52,346,6,8,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -203,88.52,346,6,8,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -213,88.57,346,5,9,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -222,88.57,346,4,10,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -234,88.61,346,3,11,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -245,88.65,346,3,11,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -253,88.69,346,2,12,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -264,88.69,346,1,13,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -276,88.74,346,1,13,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -289,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -298,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -309,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -322,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -332,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -344,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -355,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -369,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -378,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -387,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -398,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -409,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -420,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -431,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -441,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -452,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -464,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -479,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -488,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -497,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -512,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -528,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -540,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -555,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -567,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -580,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -592,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -606,88.78,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -616,88.78,346,0,13,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -626,75.79,286,0,9,5,1,0,0|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.53|14.52|14.52|14.52|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -635,45.38,165,0,6,3,3,0,0|0|0|59|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.04|0.34|14.31|14.52|11.54|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -642,39.84,126,0,0,6,2,0,0|0|0|0|0|34|0|0|0|0|0|0|0|0|0|14|21|18|22|17,0.00|0.00|0.00|0.17|0.00|8.99|1.75|0.21|0.04|0.04|0.04|0.04|0.04|0.04|0.55|4.22|5.20|5.24|6.09|5.03 -649,52.62,197,0,0,5,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|16|34|44|53|50,0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.55|4.64|8.30|11.12|13.03|12.39 -654,55.60,212,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|16|34|45|59|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|0.04|0.04|0.55|4.64|8.30|11.33|14.31|14.10 -659,55.52,212,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|16|34|45|59|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.55|4.64|8.30|11.33|14.31|14.10 -664,55.43,212,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|16|34|45|59|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.55|4.64|8.30|11.33|14.31|14.10 -669,55.39,212,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|16|34|45|59|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.55|4.64|8.30|11.33|14.31|14.10 -674,52.83,201,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|34|45|59|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|2.30|8.30|11.33|14.31|14.10 -679,37.76,141,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|3|19|59|58,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.43|0.81|5.79|14.31|14.10 -685,6.71,13,0,0,4,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.66|0.64|1.06 -690,5.77,13,0,0,4,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.43|0.51 -694,5.05,12,0,0,4,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -697,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -700,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -702,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -704,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -707,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -710,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -714,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -718,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -721,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -724,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -727,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -730,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -733,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -736,5.05,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.81|1.49|0.21|0.00 -740,4.88,12,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|7|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.81|1.49|0.21|0.00 -743,4.66,11,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|6|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.81|1.28|0.21|0.00 -745,4.45,10,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|5|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.81|1.06|0.21|0.00 -748,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|5|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|1.06|0.21|0.00 -752,3.64,7,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.85|0.21|0.00 -755,3.64,7,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.85|0.21|0.00 -759,3.22,5,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.64|0.21|0.00 -761,3.22,5,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.64|0.21|0.00 -764,3.00,4,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.64|0.21|0.00 -766,2.58,2,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.00 -769,2.36,1,0,0,1,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00 -773,2.15,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -776,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-result.csv deleted file mode 100644 index 2d75af60..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|206|315|619,615,605,598,582,578,0,0,0,0,0,0,0,0,0,122,117,127,131,43|54.79 -AVG|206|315|N/A|54.79 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-pass0.csv deleted file mode 100644 index 41968a25..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -205|319|620,613,611,595,591,579,0,0,0,0,0,0,0,0,0,102,102,123,131,50|54.63 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-pass0.log deleted file mode 100644 index 2fd59ee4..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-pass0.log +++ /dev/null @@ -1,110 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,3.56,1,19,0,1,0,0,1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -6,13.27,44,19,0,1,0,0,44|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,11.12|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -14,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -18,23.49,84,18,0,2,0,0,60|24|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|6.81|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -22,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -29,33.20,123,17,0,3,0,0,60|60|3|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|2.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,45.51,179,17,0,3,0,0,60|60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -37,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -41,45.72,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -45,59.77,238,16,0,4,0,0,60|60|60|58|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.05|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -50,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -55,65.35,256,15,0,5,0,0,60|60|60|60|16|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|5.11|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -61,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -67,81.37,323,14,0,6,0,0,60|60|60|60|60|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|6.60|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -73,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -80,88.01,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.70|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -86,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -93,88.05,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -101,88.10,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -108,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -116,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -123,88.18,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -130,88.18,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -137,88.18,346,9,5,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -146,88.22,346,9,5,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -155,88.27,346,8,6,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -165,88.27,346,7,7,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -173,88.31,346,7,7,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -184,88.35,346,6,8,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -192,88.35,346,6,8,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -200,88.39,346,5,9,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -209,88.39,346,5,9,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -220,88.44,346,4,10,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -229,88.48,346,3,11,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -239,88.48,346,2,12,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -251,88.52,346,2,12,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -261,88.57,346,1,13,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -270,88.57,346,1,13,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -280,88.57,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -292,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -303,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -315,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -327,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -337,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -350,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -363,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -372,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -383,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -394,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -406,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -417,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -428,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -442,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -455,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -470,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -481,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -494,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -504,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -517,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -526,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -538,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -549,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -560,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -569,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -580,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -592,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -602,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -614,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -624,74.60,286,0,10,5,1,0,0|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.51|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -631,60.58,226,0,7,4,1,0,0|0|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|1.02|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -640,31.20,106,0,0,7,2,0,0|0|0|0|41|46|0|0|0|0|0|0|0|0|0|1|5|4|6|3,0.00|0.00|0.00|0.34|10.48|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.26|1.11|0.89|1.49|0.85 -646,28.34,84,0,0,5,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|16|15|23|28,0.00|0.00|0.00|0.00|0.00|0.21|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.47|4.64|4.77|6.47|7.54 -652,42.70,156,0,0,5,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|19|36|44|55,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.47|5.79|9.41|11.12|13.46 -657,42.61,156,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|19|36|44|55,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|0.04|0.04|0.47|5.79|9.41|11.12|13.46 -661,42.57,156,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|19|36|44|55,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.00|0.04|0.04|0.04|0.47|5.79|9.41|11.12|13.46 -665,42.44,156,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|19|36|44|55,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.47|5.79|9.41|11.12|13.46 -670,42.40,156,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|19|36|44|55,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.47|5.79|9.41|11.12|13.46 -674,42.14,155,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|19|36|44|55,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|5.79|9.41|11.12|13.46 -679,35.24,126,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|24|44|55,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|1.45|6.86|11.12|13.46 -690,4.20,8,0,0,4,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.17 -695,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -700,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -703,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -706,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -708,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -711,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -713,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -717,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -720,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -723,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -726,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -729,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -731,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -734,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -737,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -739,4.03,8,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.85|0.43|0.00 -742,3.60,6,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.85|0.43|0.00 -746,3.60,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.85|0.43|0.00 -749,3.39,5,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|2|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.64|0.43|0.00 -752,2.96,3,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.43|0.21|0.00 -754,2.79,3,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43|0.21|0.00 -757,2.58,2,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.00 -760,2.58,2,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.00 -763,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00 -766,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00 -769,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00 -771,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-result.csv deleted file mode 100644 index 00cf8c2a..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|205|319|620,613,611,595,591,579,0,0,0,0,0,0,0,0,0,102,102,123,131,50|54.63 -AVG|205|319|N/A|54.63 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-pass0.csv deleted file mode 100644 index e4c8a99a..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -179|298|587,571,562,553,539,527,0,0,0,0,0,0,0,0,0,0,0,0,115,127|51.74 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-pass0.log deleted file mode 100644 index 42dfff16..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-pass0.log +++ /dev/null @@ -1,107 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,6.41,12,19,0,1,0,0,12|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,4.26|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,16.42,59,19,0,1,0,0,59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.27|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,17.53,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -21,30.52,117,18,0,2,0,0,60|57|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|13.84|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,35.67,133,17,0,3,0,0,60|60|13|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|4.47|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -40,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -45,58.33,231,16,0,4,0,0,60|60|60|51|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|12.61|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -50,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -54,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -59,74.34,298,15,0,5,0,0,60|60|60|60|58|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.10|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -65,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -71,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -77,86.52,347,14,0,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -85,88.10,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -93,88.10,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -101,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -107,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -115,88.18,347,10,4,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,88.22,347,10,4,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -131,88.27,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -139,88.27,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -146,88.31,347,8,6,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -154,88.31,347,7,7,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -164,88.35,347,7,7,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -171,88.39,347,6,8,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -179,88.39,347,5,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -188,88.44,347,5,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -198,88.48,347,4,10,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -207,88.48,347,3,11,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -217,88.52,347,2,12,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -230,88.57,347,1,13,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -239,88.61,347,1,13,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -252,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -266,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -276,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -288,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -299,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -311,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -319,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -330,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -340,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -349,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -362,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -374,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -384,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -396,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -410,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -421,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -433,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -444,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -456,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -466,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -476,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -487,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -501,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -510,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -520,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -531,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -543,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -553,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -564,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -576,88.65,347,0,10,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -584,76.55,291,0,6,6,0,0,4|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,2.43|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -592,42.95,149,0,2,4,3,0,0|0|0|18|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|24,0.34|0.00|0.17|5.58|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|6.35 -598,24.51,79,0,1,2,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|57,0.00|0.00|0.00|0.17|0.00|0.17|0.89|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|1.41|5.92|13.37 -603,24.04,82,0,1,2,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|1.41|5.92|14.01 -607,23.96,82,0,1,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|1.41|5.92|14.01 -612,23.70,82,0,1,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|1.41|5.92|14.01 -615,23.66,82,0,1,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|1.41|5.92|14.01 -619,23.62,82,0,1,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|1.41|5.92|14.01 -623,23.53,82,0,1,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|1.41|5.92|14.01 -627,23.32,82,0,1,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|22|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|1.19|5.92|14.01 -630,16.21,56,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|49,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.68|1.66|11.67 -633,5.26,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.66|0.77 -636,5.09,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.77 -640,4.88,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.55 -643,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -646,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -648,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -651,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -653,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -656,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -659,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -662,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -666,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -671,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -674,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -677,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -680,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -683,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -685,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -688,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -690,4.54,8,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|1.49|0.21 -694,3.98,7,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|6|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|1.28|0.21 -697,3.98,7,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|6|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|1.28|0.21 -701,3.77,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|1.06|0.21 -704,3.77,6,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|1.06|0.21 -707,3.34,4,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.64|0.21 -710,3.13,3,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.43|0.21 -713,2.53,1,0,0,1,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.21 -716,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21 -719,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-result.csv deleted file mode 100644 index eae10ced..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|179|298|587,571,562,553,539,527,0,0,0,0,0,0,0,0,0,0,0,0,115,127|51.74 -AVG|179|298|N/A|51.74 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-pass0.csv deleted file mode 100644 index a2d027a9..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -209|311|621,611,601,592,577,569,0,0,0,0,0,0,0,0,113,113,115,120,109,43|56.44 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-pass0.log deleted file mode 100644 index 5f6ccaac..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-pass0.log +++ /dev/null @@ -1,107 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.83,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.68|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -6,14.08,48,19,0,1,0,0,48|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,11.93|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,17.74,61,18,0,2,0,0,60|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.06|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,30.56,117,18,0,2,0,0,60|57|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|13.88|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -24,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,32.05,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -43,57.22,226,16,0,4,0,0,60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|11.50|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -48,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -52,60.75,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -58,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -64,74.77,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -71,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -77,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -83,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -91,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -97,88.10,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -104,88.10,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -111,88.10,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -118,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -131,88.18,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -140,88.18,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -149,88.22,346,9,5,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -157,88.22,346,9,5,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -165,88.27,346,8,6,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -173,88.27,346,7,7,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -180,88.31,346,7,7,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -189,88.35,346,6,8,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -197,88.35,346,6,8,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -206,88.39,346,5,9,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -214,88.39,346,5,9,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -224,88.44,346,4,10,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -234,88.44,346,3,11,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -242,88.48,346,3,11,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -254,88.52,346,2,12,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -266,88.52,346,1,13,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -277,88.57,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -288,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -300,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -311,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -323,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -335,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -347,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -358,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -369,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -381,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -391,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -405,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -417,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -430,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -444,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -457,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -467,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -478,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -490,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -502,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -511,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -524,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -533,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -544,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -556,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -566,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -576,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -586,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -597,88.61,346,0,14,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -608,88.61,346,0,13,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -618,76.04,288,0,9,6,0,0,2|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.96|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -627,54.15,194,0,6,4,2,0,0|0|28|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.17|0.38|7.71|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.21|0.04|0.21|0.38|0.21 -635,42.74,150,0,0,7,3,0,0|0|0|0|0|43|0|0|0|0|0|0|0|0|13|18|16|18|24|18,0.00|0.00|0.00|0.34|0.00|10.90|1.75|0.04|0.04|0.04|0.04|0.04|0.04|0.04|3.32|4.56|4.30|4.56|5.66|4.90 -640,49.08,185,0,0,6,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|13|18|24|36|48|46,0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|3.32|4.56|6.18|9.07|11.97|11.37 -646,52.62,202,0,0,6,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|13|18|24|36|51|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|3.32|4.56|6.18|9.07|12.61|14.52 -651,52.53,202,0,0,6,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|13|18|24|36|51|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|3.32|4.56|6.18|9.07|12.61|14.52 -656,52.45,202,0,0,6,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|13|18|24|36|51|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|3.32|4.56|6.18|9.07|12.61|14.52 -664,47.72,182,0,0,6,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|10|24|36|51|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|2.81|6.18|9.07|12.61|14.52 -669,37.80,142,0,0,6,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|24|51|60,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.19|6.52|12.61|14.52 -674,18.89,63,0,0,6,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|52,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.19|0.64|1.28|12.82 -678,5.56,11,0,0,5,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.60|0.34 -684,4.83,11,0,0,5,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -687,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -690,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -693,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -696,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -700,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -703,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -707,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -709,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -712,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -716,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -719,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -722,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -725,4.83,11,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|4|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|1.02|0.64|0.21|0.00 -729,4.62,10,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|3|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.60|0.81|0.64|0.21|0.00 -732,4.45,10,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|3|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.43|0.81|0.64|0.21|0.00 -734,4.24,9,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|3|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.81|0.64|0.21|0.00 -737,4.24,9,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|3|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.81|0.64|0.21|0.00 -740,4.03,8,0,0,5,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|2|3|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.60|0.64|0.21|0.00 -744,3.39,5,0,0,4,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|1|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.38|0.43|0.00|0.00 -748,2.96,3,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|0.43|0.00|0.00 -750,2.75,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.43|0.00|0.00 -753,2.75,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.43|0.00|0.00 -755,2.15,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -758,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-result.csv deleted file mode 100644 index 42f9708a..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|209|311|621,611,601,592,577,569,0,0,0,0,0,0,0,0,113,113,115,120,109,43|56.44 -AVG|209|311|N/A|56.44 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-pass0.csv deleted file mode 100644 index 6312812e..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -190|316|628,616,615,603,585,581,0,0,0,0,0,0,0,0,0,0,0,34,38,113|51.58 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-pass0.log deleted file mode 100644 index b368cb56..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-pass0.log +++ /dev/null @@ -1,110 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.83,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.68|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,16.46,59,19,0,1,0,0,59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,17.53,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -20,30.56,117,18,0,2,0,0,60|57|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|13.88|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -25,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -29,36.09,135,17,0,3,0,0,60|60|15|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|4.90|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -35,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -41,49.38,190,16,0,4,0,0,60|60|60|10|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|3.66|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -47,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -53,61.27,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -59,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -67,79.66,315,14,0,6,0,0,60|60|60|60|60|15|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|4.90|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -73,86.52,347,14,0,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -79,86.52,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -87,87.93,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -94,87.93,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -102,87.97,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -110,87.97,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -117,88.01,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,88.01,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -131,88.05,347,10,4,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -138,88.05,347,10,4,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,88.10,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -154,88.10,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -162,88.14,347,8,6,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -169,88.14,347,8,6,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -176,88.18,347,7,7,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -184,88.18,347,6,8,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -196,88.22,347,6,8,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -205,88.27,347,5,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -215,88.27,347,4,10,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -224,88.31,347,4,10,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -234,88.31,347,3,11,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -243,88.35,347,3,11,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -254,88.39,347,2,12,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -264,88.39,347,1,13,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -274,88.44,347,1,13,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -284,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -293,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -307,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -319,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -330,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -340,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -350,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -365,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -377,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -388,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -398,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -412,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -422,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -433,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -444,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -457,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -466,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -478,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -489,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -504,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -515,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -526,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -537,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -547,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -562,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -576,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -586,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -596,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -606,88.48,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -617,88.48,347,0,12,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -627,84.22,327,0,8,6,0,0,40|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,10.26|14.52|14.52|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -636,49.04,175,0,5,4,2,0,0|0|8|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.34|0.34|3.45|14.52|14.52|11.75|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -644,7.69,6,0,0,4,3,0,0|0|0|0|0|1|0|0|0|0|0|0|0|0|0|0|0|2|2|1,0.00|0.00|0.00|0.21|0.00|1.96|1.41|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.64|0.47|0.43 -648,8.88,24,0,0,3,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.85|2.13|3.11 -651,8.71,24,0,0,3,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.85|2.13|3.11 -654,8.58,24,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.85|2.13|3.11 -657,8.54,24,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.85|2.13|3.11 -660,8.50,24,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.85|2.13|3.11 -664,8.45,24,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.85|2.13|3.11 -667,8.41,24,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|0.04|0.85|2.13|3.11 -671,8.33,24,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.85|2.13|3.11 -674,8.33,24,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|9|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.85|2.13|3.11 -678,5.90,14,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|12,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.64|3.11 -682,2.58,2,0,0,1,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -684,2.58,2,0,1,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -687,2.58,2,0,1,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -690,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -693,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -696,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -698,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -701,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -703,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -707,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -710,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -713,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -715,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -718,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -721,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -724,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -727,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -731,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -734,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -736,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -738,2.58,2,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.43 -742,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21 -745,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21 -749,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21 -752,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21 -755,2.36,1,0,0,1,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21 -757,2.15,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -760,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-result.csv deleted file mode 100644 index c9d82c2f..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|190|316|628,616,615,603,585,581,0,0,0,0,0,0,0,0,0,0,0,34,38,113|51.58 -AVG|190|316|N/A|51.58 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-pass0.csv deleted file mode 100644 index 3f41bdf2..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -186|298|584,574,568,554,544,533,0,0,0,0,0,0,0,0,0,0,0,127,127,122|52.71 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-pass0.log deleted file mode 100644 index a28eb2b4..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-pass0.log +++ /dev/null @@ -1,109 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.66,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -6,12.59,41,19,0,1,0,0,41|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,10.43|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,16.46,59,19,0,1,0,0,59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,18.08,61,18,0,2,0,0,60|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -20,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,37.16,140,17,0,3,0,0,60|60|20|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|5.96|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -44,54.66,214,16,0,4,0,0,60|60|60|34|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|8.94|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -49,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -54,61.86,242,15,0,5,0,0,60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|1.62|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -59,74.55,299,15,0,5,0,0,60|60|60|60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -65,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -70,86.52,347,14,0,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -75,86.52,347,14,0,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -81,88.05,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.53|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -87,88.10,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -94,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -100,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -107,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -115,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -122,88.22,347,10,4,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -130,88.27,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -137,88.27,347,9,5,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,88.31,347,8,6,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -155,88.35,347,7,7,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -164,88.35,347,7,7,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -172,88.39,347,6,8,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -181,88.44,347,5,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -190,88.44,347,5,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -198,88.48,347,4,10,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -208,88.52,347,3,11,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -216,88.52,347,3,11,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -226,88.57,347,2,12,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00|0.00 -237,88.61,347,1,13,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.00 -248,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -257,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -269,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -282,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -291,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -302,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -313,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -328,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -337,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -348,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -358,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -368,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -378,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -389,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -400,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -412,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -423,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -433,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -444,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -453,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -463,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -474,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -485,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -496,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -507,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -522,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -534,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -543,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -557,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -568,88.65,347,0,14,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -580,88.65,347,0,9,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -590,59.18,224,0,6,4,2,0,0|0|57|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.17|0.04|13.88|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04 -598,11.18,20,0,1,3,3,0,0|0|0|0|0|15|0|0|0|0|0|0|0|0|0|0|0|2|3|0,0.00|0.00|0.00|0.00|0.38|4.94|1.58|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.64|0.85|0.21 -603,27.45,90,0,0,3,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|17|32|41,0.00|0.00|0.00|0.00|0.17|0.00|0.51|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|0.04|5.20|8.56|10.48 -607,30.60,106,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|17|39|50,0.00|0.00|0.00|0.00|0.00|0.00|0.51|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|5.20|10.05|12.39 -611,30.47,107,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|17|39|51,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.00|0.04|0.04|0.04|0.04|0.04|0.04|0.04|5.20|10.05|12.61 -615,30.26,107,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|17|39|51,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|0.04|0.04|0.04|0.04|5.20|10.05|12.61 -619,30.18,107,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|17|39|51,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.04|0.04|0.04|5.20|10.05|12.61 -626,30.09,107,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|17|39|51,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.00|0.04|5.20|10.05|12.61 -629,30.00,107,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|17|39|51,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|5.20|10.05|12.61 -633,26.17,90,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|8|31|51,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|3.07|8.35|12.61 -637,8.45,19,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|5,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|2.00|1.83|2.47 -640,6.28,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|2.00|1.49|0.64 -644,6.28,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|2.00|1.49|0.64 -646,6.28,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|2.00|1.49|0.64 -649,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -652,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -655,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -658,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -662,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -666,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -670,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -673,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -675,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -677,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -680,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -682,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -685,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -687,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -690,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -693,6.11,17,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|7|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.83|1.49|0.64 -696,5.69,15,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.41|1.49|0.64 -698,5.69,15,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|7|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.41|1.49|0.64 -701,5.09,13,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|5|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.24|1.06|0.64 -705,5.09,13,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|5|5|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.24|1.06|0.64 -710,4.45,10,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1.02|0.64|0.64 -713,4.28,10,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|3|3,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.85|0.64|0.64 -715,3.85,8,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.85|0.43|0.43 -720,2.79,3,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.21|0.21 -725,2.15,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -728,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-result.csv deleted file mode 100644 index a57c6f93..00000000 --- a/doc/edl/experiment/result/case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|186|298|584,574,568,554,544,533,0,0,0,0,0,0,0,0,0,0,0,127,127,122|52.71 -AVG|186|298|N/A|52.71 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.csv deleted file mode 100644 index 2d2e1282..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -447|24|576,563,554,542,531,521,447,455,450,450,464,452,436,353,356,354,353,353,378,366|72.03 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.log deleted file mode 100644 index 58d18ea9..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.log +++ /dev/null @@ -1,166 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,3.00,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -6,4.75,5,19,0,1,0,0,5|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,2.60|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,13.52,46,19,0,1,0,0,46|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,11.37|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -15,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,17.70,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,23.32,83,18,0,2,0,0,60|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|6.64|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -21,30.98,119,18,0,2,0,0,60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -23,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -25,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -27,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -29,32.22,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -31,36.56,137,17,0,3,0,0,60|60|17|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|5.37|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,45.08,177,17,0,3,0,0,60|60|57|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|13.88|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -36,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -38,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -41,45.89,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -43,51.30,198,16,0,4,0,0,60|60|60|18|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|5.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -46,59.82,238,16,0,4,0,0,60|60|60|58|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.10|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -49,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -51,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -54,62.63,243,15,0,5,0,0,60|60|60|60|3|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|2.39|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -57,74.13,297,15,0,5,0,0,60|60|60|60|57|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|13.88|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -60,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -64,74.77,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -67,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -71,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -75,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -78,87.84,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.53|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -82,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -86,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -90,88.05,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -94,88.10,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -98,88.10,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -102,88.10,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -106,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -109,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -113,88.14,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -117,88.18,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -121,86.90,340,10,4,6,0,0,58|58|58|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|14.10|14.10|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -125,86.39,332,9,5,6,0,0,57|57|57|58|57|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.88|13.88|14.10|13.88|11.54|1.75|0.04|0.04|0.04|1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -129,86.65,329,9,4,7,0,0,56|56|56|57|56|46|0|0|0|0|2|0|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.88|13.67|11.54|1.75|0.04|0.04|0.38|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -133,86.69,326,9,3,8,0,0,56|55|55|56|55|46|0|1|0|0|2|0|0|0|0|0|0|0|0|0,13.67|13.46|13.46|13.67|13.46|11.54|1.75|0.26|0.72|0.38|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -137,85.58,316,8,4,8,0,0,54|53|53|54|53|46|0|1|0|0|2|0|0|0|0|0|0|0|0|0,13.25|13.03|13.03|13.25|13.03|11.54|1.75|0.26|0.72|0.38|2.17|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -141,86.31,316,8,0,12,0,0,52|53|52|52|52|46|1|2|1|1|2|2|0|0|0|0|0|0|0|0,12.82|13.03|12.82|12.82|12.82|11.54|1.96|0.47|0.94|0.60|2.17|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,86.39,314,8,0,12,0,0,51|51|51|51|51|46|3|3|1|1|3|2|0|0|0|0|0|0|0|0,12.61|12.61|12.61|12.61|12.61|11.54|2.39|0.68|0.94|1.11|2.39|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -149,84.90,307,7,1,12,0,0,49|49|49|48|49|46|3|3|2|2|4|3|0|0|0|0|0|0|0|0,12.18|12.18|12.18|11.97|12.18|11.54|2.39|0.68|1.15|1.32|2.60|2.39|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -158,85.58,302,7,0,13,0,0,46|47|47|45|46|49|3|3|2|2|7|3|2|0|0|0|0|0|0|0,11.54|11.75|11.75|11.33|11.54|12.18|2.39|0.68|1.15|1.32|3.24|2.39|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -163,86.69,307,6,1,13,0,0,46|46|46|45|46|49|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|12.18|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -167,86.69,307,6,1,13,0,0,46|46|46|45|46|49|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|12.18|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -171,86.69,307,6,1,13,0,0,46|46|46|45|46|49|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|12.18|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -175,86.73,307,5,2,13,0,0,46|46|46|45|46|49|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|12.18|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -179,86.73,307,5,2,13,0,0,46|46|46|45|46|49|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|12.18|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -183,86.73,307,5,2,13,0,0,46|46|46|45|46|49|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|12.18|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -187,86.73,306,4,3,13,0,0,46|46|46|45|46|48|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|11.97|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.21|0.00|0.00|0.00|0.00 -190,86.73,306,4,3,13,0,0,46|46|46|45|46|48|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|11.97|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.21|0.00|0.00|0.00|0.00 -195,86.73,306,4,3,13,0,0,46|46|46|45|46|48|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.54|11.54|11.33|11.54|11.97|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.21|0.00|0.00|0.00|0.00 -199,86.35,304,3,4,13,0,0,46|45|45|45|46|48|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.54|11.33|11.33|11.33|11.54|11.97|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.21|0.04|0.00|0.00|0.00 -203,86.27,302,3,4,13,0,0,45|45|45|45|46|47|3|3|2|2|8|9|2|0|0|0|0|0|0|0,11.33|11.33|11.33|11.33|11.54|11.75|2.39|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.21|0.38|0.00|0.00|0.00 -206,86.48,303,3,4,13,0,0,45|45|44|44|45|46|8|3|2|2|8|9|2|0|0|0|0|0|0|0,11.33|11.33|11.12|11.12|11.33|11.54|3.45|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.21|0.38|0.00|0.00|0.00 -211,86.48,302,2,5,13,0,0,45|45|44|44|45|45|8|3|2|2|8|9|2|0|0|0|0|0|0|0,11.33|11.33|11.12|11.12|11.33|11.33|3.45|0.68|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.21|0.38|0.21|0.00|0.00 -215,86.22,296,2,5,13,0,0,44|44|43|43|44|44|8|3|2|2|8|9|2|0|0|0|0|0|0|0,11.12|11.12|10.90|10.90|11.12|11.12|3.45|1.53|1.15|1.32|3.45|3.66|2.17|0.04|0.04|0.38|0.38|0.21|0.00|0.00 -220,84.82,287,1,6,13,0,0,42|42|43|41|44|42|8|3|2|2|8|8|2|0|0|0|0|0|0|0,10.69|10.69|10.90|10.48|11.12|10.69|3.45|1.87|1.15|1.32|3.45|3.45|2.17|0.04|0.04|0.55|0.38|0.21|0.00|0.00 -224,85.50,282,1,5,14,0,0,41|41|42|40|42|42|8|3|2|2|8|7|2|0|0|0|0|0|2|0,10.48|10.48|10.69|10.26|10.69|10.69|3.45|1.87|1.15|1.32|3.45|3.24|2.17|0.04|0.04|0.55|0.38|0.21|2.17|0.00 -229,85.41,276,1,5,14,0,0,41|41|40|40|40|41|8|2|2|2|8|7|2|0|0|0|0|0|2|0,10.48|10.48|10.26|10.26|10.26|10.48|3.45|1.66|2.00|1.32|3.45|3.24|2.17|0.04|0.04|0.55|0.72|0.21|2.17|0.00 -232,84.09,269,0,6,14,0,0,39|41|40|38|40|38|8|2|2|2|8|7|2|0|0|0|0|0|2|0,10.05|10.48|10.26|9.84|10.26|9.84|3.45|1.66|2.17|1.32|3.45|3.24|2.17|0.04|0.04|0.55|0.72|0.21|2.17|0.00 -236,84.77,260,0,5,15,0,0,39|38|38|38|38|38|8|2|2|2|6|6|2|0|0|0|0|0|2|1,10.05|9.84|9.84|9.84|9.84|9.84|3.45|1.66|2.17|1.32|3.02|3.02|2.17|0.04|0.89|0.55|0.72|0.21|2.17|1.96 -240,85.37,258,0,4,16,0,0,39|36|37|38|38|38|8|2|2|2|5|6|2|0|1|0|0|0|2|2,10.05|9.41|9.63|9.84|9.84|9.84|3.45|1.66|2.17|1.32|2.81|3.02|2.17|0.04|1.96|0.55|0.72|0.38|2.17|2.17 -243,85.12,256,0,2,18,0,0,37|36|37|37|37|37|8|3|2|3|5|5|2|1|1|1|0|0|2|2,9.63|9.41|9.63|9.63|9.63|9.63|3.45|1.87|2.17|1.53|2.81|2.81|2.17|0.26|1.96|0.77|0.72|0.55|2.17|2.17 -247,84.90,251,0,0,20,0,0,35|36|36|36|37|35|8|3|3|3|4|4|2|1|1|1|1|1|2|2,9.20|9.41|9.41|9.41|9.63|9.20|3.45|1.87|2.39|2.39|2.60|2.60|2.17|0.26|1.96|0.77|0.94|0.77|2.17|2.17 -251,84.35,246,0,0,20,0,0,35|34|35|35|35|35|8|3|3|3|4|4|3|1|1|1|1|1|2|2,9.20|8.99|9.20|9.20|9.20|9.20|3.45|1.87|2.39|2.39|2.60|2.60|2.39|0.26|1.96|1.28|0.94|0.77|2.17|2.17 -257,85.41,251,0,0,20,0,0,34|33|35|35|35|33|8|5|6|5|3|3|5|1|1|1|1|1|4|2,8.99|8.77|9.20|9.20|9.20|8.77|3.45|2.30|3.02|2.81|2.39|2.39|2.81|0.26|1.96|1.28|0.94|0.77|2.60|2.17 -261,85.63,248,0,0,20,0,0,34|33|34|34|33|33|7|5|6|5|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.77|3.24|2.30|3.02|2.81|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -265,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -270,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -274,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -279,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -283,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -287,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -292,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -296,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -300,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -304,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -308,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -312,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -316,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -320,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -324,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -328,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -332,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -336,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -341,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -345,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -349,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -353,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -358,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -363,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -373,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -378,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -382,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -386,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -391,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -394,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -398,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -402,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -406,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -411,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -415,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -419,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -423,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -427,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -431,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -435,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -439,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -443,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -447,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -451,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -455,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -459,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -463,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -467,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -471,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -475,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -479,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -482,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -486,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -490,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -494,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -498,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -502,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -506,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -510,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -514,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -518,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -522,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -525,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -529,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -533,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -538,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -542,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -546,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -550,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -554,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -559,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -563,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -566,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -570,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -574,86.05,250,0,0,20,0,0,34|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,8.99|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -578,84.35,242,0,0,20,0,0,26|33|34|34|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,7.28|8.77|8.99|8.99|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -582,61.65,150,0,0,18,2,0,0|0|2|33|33|34|7|5|6|6|3|3|5|1|1|1|2|1|5|2,0.34|0.21|2.00|8.77|8.77|8.99|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -585,41.89,78,0,0,15,5,0,0|0|0|0|0|30|7|5|6|6|3|3|5|1|1|1|2|1|5|2,0.00|0.00|0.00|0.51|0.68|8.13|3.24|2.30|3.02|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -588,28.68,34,0,0,12,7,0,0|0|0|0|0|0|0|0|4|6|3|3|5|1|1|1|2|1|5|2,0.00|0.00|0.00|0.51|0.17|0.17|0.34|0.89|2.60|3.02|2.39|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -591,23.32,22,0,0,10,4,0,0|0|0|0|0|0|0|0|0|0|1|3|5|1|1|1|2|1|5|2,0.00|0.00|0.00|0.17|0.00|0.17|0.34|0.34|0.51|1.24|1.96|2.39|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -593,20.04,18,0,0,8,6,0,0|0|0|0|0|0|0|0|0|0|0|0|5|1|1|1|2|1|5|2,0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17|0.34|0.51|0.72|1.75|2.81|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -594,16.76,13,0,0,7,6,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|1|2|1|5|2,0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17|0.34|0.51|0.21|0.55|1.24|0.26|1.96|1.28|2.00|0.77|2.81|2.17 -596,14.37,11,0,0,5,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|1|5|2,0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.00|0.34|0.21|0.55|0.17|0.00|1.75|1.28|2.00|0.77|2.81|2.17 -597,12.59,10,0,0,4,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|1|5|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.21|0.51|0.17|0.00|0.38|1.06|2.00|0.77|2.81|2.17 -599,10.97,9,0,0,4,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|5|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.21|0.51|0.17|0.00|0.21|0.17|1.45|0.77|2.81|2.17 -600,7.82,5,0,0,2,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.21|0.17|0.17|0.55|2.04|2.17 -602,5.73,0,0,0,0,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.21|0.17|0.17|0.55|0.38|1.75 -603,3.94,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.17|0.17|0.55|0.38|0.17 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-result.csv deleted file mode 100644 index a7843bea..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|447|24|576,563,554,542,531,521,447,455,450,450,464,452,436,353,356,354,353,353,378,366|72.03 -AVG|447|24|N/A|72.03 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-pass0.csv deleted file mode 100644 index 20734453..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -440|59|602,592,582,569,559,557,479,467,463,475,442,346,475,378,455,334,332,334,361,0|73.82 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-pass0.log deleted file mode 100644 index cb9a780c..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-pass0.log +++ /dev/null @@ -1,166 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -1,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.15,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,3.34,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,7.94,19,19,0,1,0,0,19|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,5.79|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,14.33,49,19,0,1,0,0,49|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,12.18|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -14,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,16.67,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,18.80,62,18,0,2,0,0,60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|2.13|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,27.79,104,18,0,2,0,0,60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|11.12|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -22,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -24,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.71,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,34.90,130,17,0,3,0,0,60|60|10|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|3.71|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,43.80,171,17,0,3,0,0,60|60|51|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|12.61|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -35,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -38,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -40,46.06,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.34|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -43,52.36,203,16,0,4,0,0,60|60|60|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|6.64|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -46,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -57,62.42,242,15,0,5,0,0,60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -61,71.78,286,15,0,5,0,0,60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -65,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -69,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -72,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -76,85.67,343,13,1,6,0,0,60|60|60|60|60|43|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|10.90|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -79,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -83,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -87,87.84,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -91,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -95,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -99,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -103,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -107,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -111,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -115,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -119,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -123,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -127,86.90,340,9,5,6,0,0,59|59|59|60|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|14.31|14.31|14.52|14.10|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -131,87.88,338,9,5,6,0,0,58|59|59|59|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|14.31|14.31|14.31|14.10|11.33|1.75|0.04|0.04|1.06|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -135,87.67,337,9,5,6,0,0,58|58|59|59|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|14.10|14.31|14.31|14.10|11.33|1.75|0.04|0.04|1.06|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -139,87.24,335,8,6,6,0,0,57|58|58|58|57|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|14.10|14.10|14.10|13.88|11.75|1.75|0.04|0.04|1.06|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -143,85.84,325,8,5,7,0,0,55|56|56|55|55|47|1|0|0|0|0|0|0|0|0|0|0|0|0|0,13.46|13.67|13.67|13.46|13.46|11.75|1.96|0.04|0.04|1.06|0.72|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -147,85.71,318,8,4,8,0,0,54|54|54|53|53|47|1|0|0|2|0|0|0|0|0|0|0|0|0|0,13.25|13.25|13.25|13.03|13.03|11.75|1.96|0.04|0.04|2.17|0.72|1.06|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -151,84.35,305,7,4,9,0,0,51|51|51|50|51|47|1|0|0|2|0|0|1|0|0|0|0|0|0|0,12.61|12.61|12.61|12.39|12.61|11.75|1.96|0.04|0.04|2.17|0.72|1.06|1.62|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -155,85.92,302,7,3,10,0,0,49|49|50|50|50|47|2|1|0|2|0|0|2|0|0|0|0|0|0|0,12.18|12.18|12.39|12.39|12.39|11.75|2.17|1.96|0.04|2.17|0.72|1.24|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -159,86.86,304,7,2,11,0,0,50|49|50|49|50|47|3|1|1|2|0|0|2|0|0|0|0|0|0|0,12.39|12.18|12.39|12.18|12.39|11.75|2.39|1.96|0.26|2.17|1.24|1.24|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -163,86.86,304,6,3,11,0,0,50|49|50|49|50|47|3|1|1|2|0|0|2|0|0|0|0|0|0|0,12.39|12.18|12.39|12.18|12.39|11.75|2.39|1.96|0.26|2.17|1.24|1.24|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -167,86.90,304,6,3,11,0,0,50|49|50|49|50|47|3|1|1|2|0|0|2|0|0|0|0|0|0|0,12.39|12.18|12.39|12.18|12.39|11.75|2.39|1.96|0.26|2.17|1.24|1.24|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -171,85.41,297,6,3,11,0,0,48|47|49|48|49|47|3|1|1|2|0|0|2|0|0|0|0|0|0|0,11.97|11.75|12.18|11.97|12.18|11.75|2.39|1.96|0.26|2.17|1.24|1.24|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -175,84.56,285,5,3,12,0,0,46|45|46|46|46|45|3|2|1|2|0|0|2|0|1|0|0|0|0|0,11.54|11.33|11.54|11.54|11.54|11.33|2.39|2.17|0.26|2.17|1.24|1.24|2.17|0.04|1.92|0.00|0.00|0.00|0.00|0.00 -179,86.09,284,5,3,12,0,0,46|44|46|45|46|44|3|2|2|2|0|0|2|0|2|0|0|0|0|0,11.54|11.12|11.54|11.33|11.54|11.12|2.39|2.17|0.47|2.17|1.24|1.24|2.17|1.75|2.17|0.00|0.00|0.00|0.00|0.00 -184,86.73,287,5,2,13,0,0,46|44|46|45|46|44|3|3|2|3|1|0|2|0|2|0|0|0|0|0,11.54|11.12|11.54|11.33|11.54|11.12|2.39|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.00|0.00|0.00|0.00|0.00 -188,86.73,287,4,3,13,0,0,46|44|46|45|46|44|3|3|2|3|1|0|2|0|2|0|0|0|0|0,11.54|11.12|11.54|11.33|11.54|11.12|2.39|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.00|0.00|0.00|0.00|0.00 -191,86.78,287,4,3,13,0,0,46|44|46|45|46|44|3|3|2|3|1|0|2|0|2|0|0|0|0|0,11.54|11.12|11.54|11.33|11.54|11.12|2.39|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.04|0.00|0.00|0.00|0.00 -195,86.78,287,4,3,13,0,0,46|44|46|45|46|44|3|3|2|3|1|0|2|0|2|0|0|0|0|0,11.54|11.12|11.54|11.33|11.54|11.12|2.39|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.04|0.00|0.00|0.00|0.00 -200,86.14,284,3,4,13,0,0,45|44|45|45|45|44|3|3|2|3|1|0|2|0|2|0|0|0|0|0,11.33|11.12|11.33|11.33|11.33|11.12|2.39|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.04|0.00|0.00|0.00|0.00 -204,86.48,283,3,4,13,0,0,44|44|45|44|45|44|4|3|2|3|1|0|2|0|2|0|0|0|0|0,11.12|11.12|11.33|11.12|11.33|11.12|2.60|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.21|0.00|0.00|0.00 -208,86.82,283,3,4,13,0,0,44|44|45|44|45|44|4|3|2|3|1|0|2|0|2|0|0|0|0|0,11.12|11.12|11.33|11.12|11.33|11.12|2.60|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.55|0.00|0.00|0.00 -212,86.82,283,3,4,13,0,0,44|44|45|44|45|44|4|3|2|3|1|0|2|0|2|0|0|0|0|0,11.12|11.12|11.33|11.12|11.33|11.12|2.60|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.55|0.00|0.00|0.00 -216,86.82,283,3,4,13,0,0,44|44|45|44|45|44|4|3|2|3|1|0|2|0|2|0|0|0|0|0,11.12|11.12|11.33|11.12|11.33|11.12|2.60|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.55|0.00|0.00|0.00 -220,86.39,281,2,5,13,0,0,44|44|44|44|44|44|4|3|2|3|1|0|2|0|2|0|0|0|0|0,11.12|11.12|11.12|11.12|11.12|11.12|2.60|2.39|0.47|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.55|0.00|0.00|0.00 -224,86.82,278,2,5,13,0,0,44|43|44|43|44|43|4|3|2|3|1|0|2|0|2|0|0|0|0|0,11.12|10.90|11.12|10.90|11.12|10.90|2.60|2.39|1.15|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.55|0.38|0.00|0.00 -229,86.73,276,2,5,13,0,0,43|43|44|43|43|43|4|3|2|3|1|0|2|0|2|0|0|0|0|0,10.90|10.90|11.12|10.90|10.90|10.90|2.60|2.39|1.49|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.55|0.38|0.00|0.00 -233,86.73,272,2,5,13,0,0,42|42|43|42|43|42|5|3|2|3|1|0|2|0|2|0|0|0|0|0,10.69|10.69|10.90|10.69|10.90|10.69|2.81|2.39|2.00|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.89|0.38|0.00|0.00 -237,86.44,269,1,6,13,0,0,41|41|42|42|43|42|5|3|2|3|1|0|2|0|2|0|0|0|0|0,10.48|10.48|10.69|10.69|10.90|10.69|2.81|2.39|2.00|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.89|0.38|0.34|0.00 -241,86.52,266,1,6,13,0,0,41|41|42|41|42|41|5|3|2|3|1|0|2|0|2|0|0|0|0|0,10.48|10.48|10.69|10.48|10.69|10.48|2.81|2.39|2.17|2.39|1.45|1.24|2.17|1.75|2.17|0.38|0.89|0.38|0.89|0.00 -244,86.27,264,1,6,13,0,0,41|41|41|41|41|40|5|3|2|3|1|0|2|0|3|0|0|0|0|0,10.48|10.48|10.48|10.48|10.48|10.26|2.81|2.39|2.17|2.39|1.45|1.24|2.17|1.75|2.39|0.38|0.89|0.38|1.06|0.00 -248,86.69,266,1,5,14,0,0,40|41|41|41|41|40|7|3|2|3|1|0|2|1|3|0|0|0|0|0,10.26|10.48|10.48|10.48|10.48|10.26|3.24|2.39|2.17|2.39|1.45|1.24|2.17|1.96|2.39|0.38|0.89|0.38|1.06|0.00 -252,86.35,262,1,5,14,0,0,40|40|40|40|40|40|7|3|2|3|1|0|2|1|3|0|0|0|0|0,10.26|10.26|10.26|10.26|10.26|10.26|3.24|2.39|2.17|2.39|1.62|1.24|2.17|1.96|2.39|0.55|0.89|0.55|1.06|0.00 -256,86.73,263,1,5,14,0,0,40|40|40|40|40|40|7|3|3|3|1|0|2|1|3|0|0|0|0|0,10.26|10.26|10.26|10.26|10.26|10.26|3.24|2.39|2.39|2.39|1.62|1.24|2.17|1.96|2.39|0.55|0.89|0.72|1.06|0.00 -260,86.05,258,0,6,14,0,0,39|39|40|39|39|39|7|3|3|3|1|0|2|1|3|0|0|0|0|0,10.05|10.05|10.26|10.05|10.05|10.05|3.24|2.39|2.39|2.39|1.62|1.24|2.17|1.96|2.39|0.55|0.89|0.72|1.06|0.38 -264,86.48,256,0,6,14,0,0,39|39|39|39|39|39|7|2|3|3|1|0|2|1|3|0|0|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.24|2.17|2.39|2.39|1.62|1.58|2.17|1.96|2.39|0.55|1.06|0.72|1.06|0.72 -269,86.65,256,0,6,14,0,0,39|39|39|39|39|39|7|2|3|3|1|0|2|1|3|0|0|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.24|2.17|2.39|2.39|1.79|1.58|2.17|1.96|2.39|0.55|1.06|0.72|1.06|0.72 -272,86.44,255,0,6,14,0,0,39|38|39|39|39|39|7|2|3|3|1|0|2|1|3|0|0|0|0|0,10.05|9.84|10.05|10.05|10.05|10.05|3.24|2.17|2.39|2.39|1.79|1.58|2.17|1.96|2.39|0.55|1.06|0.72|1.06|0.72 -276,86.14,252,0,5,15,0,0,38|38|38|39|38|38|7|2|3|3|1|0|2|1|3|0|0|0|1|0,9.84|9.84|9.84|10.05|9.84|9.84|3.24|2.17|2.39|2.39|1.79|1.75|2.17|1.96|2.39|0.55|1.06|0.72|1.28|0.89 -280,86.56,254,0,4,16,0,0,38|38|38|39|38|38|8|2|3|3|1|1|2|1|3|0|0|0|1|0,9.84|9.84|9.84|10.05|9.84|9.84|3.45|2.17|2.39|2.39|1.79|1.96|2.17|1.96|2.39|0.55|1.06|0.72|1.28|0.89 -284,86.56,254,0,4,16,0,0,38|38|38|39|38|38|8|2|3|3|1|1|2|1|3|0|0|0|1|0,9.84|9.84|9.84|10.05|9.84|9.84|3.45|2.17|2.39|2.39|1.79|1.96|2.17|1.96|2.39|0.55|1.06|0.72|1.28|0.89 -288,86.56,254,0,4,16,0,0,38|38|38|39|38|38|8|2|3|3|1|1|2|1|3|0|0|0|1|0,9.84|9.84|9.84|10.05|9.84|9.84|3.45|2.17|2.39|2.39|1.79|1.96|2.17|1.96|2.39|0.55|1.06|0.72|1.28|0.89 -292,85.92,251,0,4,16,0,0,38|38|37|38|38|37|8|2|3|3|1|1|2|1|3|0|0|0|1|0,9.84|9.84|9.63|9.84|9.84|9.63|3.45|2.17|2.39|2.39|1.79|1.96|2.17|1.96|2.39|0.55|1.06|0.72|1.28|0.89 -296,86.14,252,0,3,17,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|0|0|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.06|0.72|1.28|0.89 -300,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -304,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -308,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -312,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -316,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -320,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -323,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -327,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -332,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -336,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -340,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -344,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -348,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -352,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -356,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -360,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -364,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -368,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -372,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -376,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -380,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -384,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -388,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -392,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -396,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -400,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -404,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -408,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -412,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -416,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -420,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -424,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -428,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -432,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -436,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -440,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -444,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -447,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -451,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -458,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -463,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -468,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -472,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -476,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -481,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -485,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -489,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -493,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -497,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -502,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -506,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -510,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -514,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -521,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -526,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -531,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -535,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -539,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -543,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -547,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -551,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -555,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -562,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -568,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -573,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -577,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -581,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -587,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -591,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -595,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -599,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -604,86.56,254,0,1,19,0,0,37|37|37|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,9.63|9.63|9.63|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -609,60.41,146,0,0,17,2,0,0|0|3|38|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,0.34|0.17|2.21|9.84|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -612,49.26,105,0,0,15,4,0,0|0|0|0|37|37|8|3|3|3|1|3|2|1|3|1|1|1|1|0,0.17|0.00|0.34|0.89|9.63|9.63|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -616,31.75,36,0,0,14,3,0,0|0|0|0|0|5|8|3|3|3|1|3|2|1|3|1|1|1|1|0,0.17|0.00|0.00|0.00|0.17|2.81|3.45|2.39|2.39|2.39|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -622,19.91,14,0,0,9,4,0,0|0|0|0|0|0|0|0|0|0|1|3|2|1|3|1|1|1|1|0,0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.34|0.51|0.72|1.79|2.39|2.17|1.96|2.39|0.77|1.28|0.94|1.28|0.89 -626,13.27,7,0,0,5,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1|1|1|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.17|0.17|0.68|0.51|1.70|2.39|0.77|1.28|0.94|1.28|0.89 -630,7.94,3,0,0,3,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.34|0.17|0.55|1.28|0.94|1.28|0.89 -632,6.32,2,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.89|0.94|1.28|0.89 -634,4.66,1,0,0,1,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|1.28|0.89 -637,3.09,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.89 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-result.csv deleted file mode 100644 index 1b305eee..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|440|59|602,592,582,569,559,557,479,467,463,475,442,346,475,378,455,334,332,334,361,0|73.82 -AVG|440|59|N/A|73.82 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-pass0.csv deleted file mode 100644 index 49206842..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -437|31|577,561,548,538,525,518,438,435,431,435,453,438,421,421,340,332,325,341,343,331|70.93 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-pass0.log deleted file mode 100644 index f8f423b2..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-pass0.log +++ /dev/null @@ -1,172 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -1,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.15,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,4.07,1,19,0,1,0,0,1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.92|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,4.32,2,19,0,1,0,0,2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,4.32,2,19,0,1,0,0,2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,8.80,23,19,0,1,0,0,23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,6.64|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -11,15.82,56,19,0,1,0,0,56|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -15,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -18,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -20,17.19,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -21,22.04,77,18,0,2,0,0,60|17|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|5.37|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -23,29.71,113,18,0,2,0,0,60|53|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|13.03|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -25,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -27,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -29,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -31,31.88,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.68|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,37.63,142,17,0,3,0,0,60|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|6.43|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -36,45.08,177,17,0,3,0,0,60|60|57|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|13.88|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -41,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -44,47.64,181,16,0,4,0,0,60|60|60|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|1.92|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -47,55.98,220,16,0,4,0,0,60|60|60|40|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|10.26|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -50,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -53,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -57,62.42,242,15,0,5,0,0,60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -62,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -65,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -69,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -72,84.18,336,14,0,6,0,0,60|60|60|60|60|36|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|9.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -75,86.09,345,14,0,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -79,86.78,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|0.68|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -82,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -86,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -90,87.84,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -93,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -97,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -100,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -104,87.88,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -108,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -112,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -116,87.93,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -119,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -128,86.95,336,9,5,6,0,0,58|58|59|58|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|14.10|14.31|14.10|14.10|11.33|1.75|0.04|0.04|0.04|0.89|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -133,87.16,333,9,5,6,0,0,57|57|58|58|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.88|14.10|14.10|14.10|11.33|1.75|0.04|0.04|0.21|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -137,87.33,333,8,5,7,0,0,57|57|58|57|58|45|0|0|0|0|1|0|0|0|0|0|0|0|0|0,13.88|13.88|14.10|13.88|14.10|11.33|1.75|0.04|0.04|0.21|1.96|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -141,87.42,330,8,5,7,0,0,57|56|57|57|57|45|0|0|0|0|1|0|0|0|0|0|0|0|0|0,13.88|13.67|13.88|13.88|13.88|11.33|1.75|0.04|0.04|0.21|1.96|0.72|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,86.14,320,8,5,7,0,0,55|54|55|55|55|45|0|0|0|0|1|0|0|0|0|0|0|0|0|0,13.46|13.25|13.46|13.46|13.46|11.33|1.75|0.04|0.04|0.72|1.96|1.06|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -149,83.80,305,7,5,8,0,0,52|51|52|52|50|45|2|0|0|0|1|0|0|0|0|0|0|0|0|0,12.82|12.61|12.82|12.82|12.39|11.33|2.17|0.04|0.04|0.89|1.96|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -152,86.09,314,7,2,11,0,0,50|49|51|51|50|46|13|1|0|1|1|1|0|0|0|0|0|0|0|0,12.39|12.18|12.61|12.61|12.39|11.54|4.51|0.26|0.04|1.11|1.96|1.96|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -156,85.88,313,7,1,12,0,0,49|48|50|49|49|46|13|2|2|1|3|1|0|0|0|0|0|0|0|0,12.18|11.97|12.39|12.18|12.18|11.54|4.51|0.47|0.47|1.11|2.39|1.96|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -160,84.56,306,7,1,12,0,0,48|46|46|46|48|46|13|2|2|3|4|2|0|0|0|0|0|0|0|0,11.97|11.54|11.54|11.54|11.97|11.54|4.51|0.47|0.47|1.53|2.60|2.17|0.55|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -163,86.09,309,6,2,12,0,0,46|46|45|46|46|46|13|2|2|3|12|2|0|0|0|0|0|0|0|0,11.54|11.54|11.33|11.54|11.54|11.54|4.51|0.47|0.47|1.53|4.30|2.17|0.55|0.89|0.00|0.00|0.00|0.00|0.00|0.00 -167,86.14,306,6,2,12,0,0,45|46|45|46|45|45|13|2|2|3|12|2|0|0|0|0|0|0|0|0,11.33|11.54|11.33|11.54|11.33|11.33|4.51|0.47|0.64|1.53|4.30|2.17|0.55|1.41|0.00|0.00|0.00|0.00|0.00|0.00 -171,86.35,307,6,0,14,0,0,45|46|45|45|45|45|13|2|2|3|12|2|1|1|0|0|0|0|0|0,11.33|11.54|11.33|11.33|11.33|11.33|4.51|0.47|0.64|1.53|4.30|2.17|0.77|1.62|0.00|0.00|0.00|0.00|0.00|0.00 -174,86.39,307,5,1,14,0,0,45|46|45|45|45|44|13|2|2|3|13|2|1|1|0|0|0|0|0|0,11.33|11.54|11.33|11.33|11.33|11.12|4.51|0.47|0.64|1.53|4.51|2.17|0.77|1.62|0.04|0.00|0.00|0.00|0.00|0.00 -178,86.14,301,5,1,14,0,0,44|44|44|43|43|43|13|2|3|3|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.51|0.47|0.85|1.70|4.51|2.39|0.98|1.96|0.55|0.00|0.00|0.00|0.00|0.00 -182,86.73,303,5,1,14,0,0,44|44|44|43|43|43|14|2|3|4|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.73|0.47|0.85|2.09|4.51|2.39|0.98|1.96|0.55|0.00|0.00|0.00|0.00|0.00 -186,86.73,303,4,2,14,0,0,44|44|44|43|43|43|14|2|3|4|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.73|0.47|0.85|2.09|4.51|2.39|0.98|1.96|0.55|0.00|0.00|0.00|0.00|0.00 -189,86.78,303,4,2,14,0,0,44|44|44|43|43|43|14|2|3|4|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.73|0.47|0.85|2.09|4.51|2.39|0.98|1.96|0.55|0.04|0.00|0.00|0.00|0.00 -193,86.78,303,4,2,14,0,0,44|44|44|43|43|43|14|2|3|4|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.73|0.47|0.85|2.09|4.51|2.39|0.98|1.96|0.55|0.04|0.00|0.00|0.00|0.00 -197,86.78,303,3,3,14,0,0,44|44|44|43|43|43|14|2|3|4|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.73|0.47|0.85|2.09|4.51|2.39|0.98|1.96|0.55|0.04|0.00|0.00|0.00|0.00 -201,86.82,303,3,3,14,0,0,44|44|44|43|43|43|14|2|3|4|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.73|0.47|0.85|2.09|4.51|2.39|0.98|1.96|0.55|0.04|0.04|0.00|0.00|0.00 -204,86.82,303,3,3,14,0,0,44|44|44|43|43|43|14|2|3|4|13|3|2|1|0|0|0|0|0|0,11.12|11.12|11.12|10.90|10.90|10.90|4.73|0.47|0.85|2.09|4.51|2.39|0.98|1.96|0.55|0.04|0.04|0.00|0.00|0.00 -209,85.33,296,2,4,14,0,0,44|44|40|43|43|43|14|2|3|4|10|3|2|1|0|0|0|0|0|0,11.12|11.12|10.26|10.90|10.90|10.90|4.73|0.47|0.85|2.09|3.88|2.39|0.98|1.96|0.55|0.04|0.04|0.00|0.00|0.00 -212,86.65,294,2,4,14,0,0,44|44|39|43|43|43|14|2|3|4|9|3|2|1|0|0|0|0|0|0,11.12|11.12|10.05|10.90|10.90|10.90|4.73|0.47|0.85|2.09|3.66|2.39|0.98|1.96|0.55|0.04|0.38|1.41|0.00|0.00 -216,86.82,294,2,4,14,0,0,44|44|39|43|43|43|14|2|3|4|9|3|2|1|0|0|0|0|0|0,11.12|11.12|10.05|10.90|10.90|10.90|4.73|0.47|0.85|2.09|3.66|2.39|0.98|1.96|0.55|0.04|0.55|1.41|0.00|0.00 -220,86.61,293,1,5,14,0,0,44|44|38|43|43|43|14|2|3|4|9|3|2|1|0|0|0|0|0|0,11.12|11.12|9.84|10.90|10.90|10.90|4.73|0.47|0.85|2.09|3.66|2.39|0.98|1.96|0.55|0.04|0.55|1.41|0.00|0.00 -224,86.39,287,1,5,14,0,0,43|43|38|42|42|42|14|2|3|4|8|3|2|1|0|0|0|0|0|0,10.90|10.90|9.84|10.69|10.69|10.69|4.73|0.47|0.85|2.09|3.45|2.39|0.98|1.96|0.55|0.04|0.55|1.41|1.06|0.00 -228,85.75,284,1,5,14,0,0,43|43|37|41|41|41|14|2|3|4|8|3|2|2|0|0|0|0|0|0,10.90|10.90|9.63|10.48|10.48|10.48|4.73|0.47|0.85|2.09|3.45|2.39|0.98|2.17|0.55|0.04|0.55|1.41|1.06|0.00 -232,85.58,280,0,6,14,0,0,42|42|36|41|41|41|13|2|3|4|8|3|2|2|0|0|0|0|0|0,10.69|10.69|9.41|10.48|10.48|10.48|4.51|0.47|0.85|2.09|3.45|2.39|0.98|2.17|0.55|0.04|0.55|1.41|1.75|0.00 -235,85.16,273,0,6,14,0,0,40|40|36|40|41|40|13|2|3|4|7|3|2|2|0|0|0|0|0|0,10.26|10.26|9.41|10.26|10.48|10.26|4.51|0.47|1.36|2.09|3.24|2.39|0.98|2.17|0.55|0.04|0.55|1.41|1.75|0.55 -239,86.14,272,0,6,14,0,0,40|40|36|40|40|40|13|2|3|4|7|3|2|2|0|0|0|0|0|0,10.26|10.26|9.41|10.26|10.26|10.26|4.51|0.47|1.36|2.60|3.24|2.39|0.98|2.17|0.89|0.04|0.55|1.41|1.75|0.89 -243,85.07,267,0,6,14,0,0,39|39|35|40|40|40|12|2|3|4|6|3|2|2|0|0|0|0|0|0,10.05|10.05|9.20|10.26|10.26|10.26|4.30|0.47|1.36|2.60|3.02|2.39|0.98|2.17|0.89|0.04|0.55|1.41|1.75|0.89 -247,85.63,264,0,6,14,0,0,39|39|35|39|39|39|12|2|3|4|6|3|2|2|0|0|0|0|0|0,10.05|10.05|9.20|10.05|10.05|10.05|4.30|1.66|1.36|2.60|3.02|2.39|0.98|2.17|0.89|0.04|0.55|1.41|1.75|0.89 -251,85.41,259,0,6,14,0,0,39|39|35|38|38|38|11|2|3|3|6|3|2|2|0|0|0|0|0|0,10.05|10.05|9.20|9.84|9.84|9.84|4.09|1.66|1.36|2.39|3.02|2.39|0.98|2.17|0.89|0.04|0.55|1.41|1.75|1.75 -254,85.63,260,0,3,17,0,0,38|38|34|38|38|38|11|2|3|3|5|3|3|2|1|0|0|1|2|0,9.84|9.84|8.99|9.84|9.84|9.84|4.09|1.66|1.36|2.39|2.81|2.39|1.19|2.17|1.11|0.04|0.55|1.62|2.17|1.75 -258,85.46,256,0,3,17,0,0,38|38|33|38|37|38|10|2|2|3|4|4|3|2|1|0|0|1|2|0,9.84|9.84|8.77|9.84|9.63|9.84|3.88|1.66|1.83|2.39|2.60|2.60|1.19|2.17|1.11|0.04|0.55|1.62|2.17|1.75 -262,85.63,252,0,2,18,0,0,37|38|33|37|37|37|10|2|2|2|4|3|3|2|1|1|0|1|2|0,9.63|9.84|8.77|9.63|9.63|9.63|3.88|1.66|1.83|2.17|2.60|2.39|1.19|2.17|1.11|0.26|1.58|1.62|2.17|1.75 -266,85.84,253,0,1,19,0,0,36|36|33|37|36|36|10|2|3|3|4|4|3|3|1|1|0|1|3|1,9.41|9.41|8.77|9.63|9.41|9.41|3.88|1.66|2.04|2.39|2.60|2.60|1.19|2.39|1.11|0.26|1.58|1.62|2.39|1.96 -269,86.27,255,0,0,20,0,0,36|36|33|36|36|36|10|3|3|3|4|4|3|3|1|1|1|2|3|1,9.41|9.41|8.77|9.41|9.41|9.41|3.88|1.87|2.04|2.39|2.60|2.60|1.19|2.39|1.11|0.26|1.79|1.83|2.39|1.96 -273,86.27,255,0,0,20,0,0,35|36|33|36|36|36|10|3|3|3|4|4|3|3|2|1|1|2|3|1,9.20|9.41|8.77|9.41|9.41|9.41|3.88|1.87|2.04|2.39|2.60|2.60|1.19|2.39|1.32|0.26|1.79|1.83|2.39|1.96 -277,86.05,254,0,0,20,0,0,35|35|33|35|36|35|10|3|3|3|4|4|3|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|3.88|1.87|2.04|2.39|2.60|2.60|1.19|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -281,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -285,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -289,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -293,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -297,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -301,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -305,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -309,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -313,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -317,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -321,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -325,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -329,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -333,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -337,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -341,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -345,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -349,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -353,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -357,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -362,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -366,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -370,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -374,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -378,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -382,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -386,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -390,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -394,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -398,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -402,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -406,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -410,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -414,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -418,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -422,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -426,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -430,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -434,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -438,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -442,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -446,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -450,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -454,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -458,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -462,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -466,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -470,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -474,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -478,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -482,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -486,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -490,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -494,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -498,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -502,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -505,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -510,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -514,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -517,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -521,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -525,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -529,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -533,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -537,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -541,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -545,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -549,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -553,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -557,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -562,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -566,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -570,86.48,256,0,0,20,0,0,35|35|33|35|36|35|11|3|3|3|4|4|4|4|2|1|1|3|3|1,9.20|9.20|8.77|9.20|9.41|9.20|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -582,40.52,74,0,0,15,4,0,0|0|0|0|0|27|11|3|3|3|4|4|4|4|2|1|1|3|3|1,0.00|0.17|0.00|0.17|1.19|7.50|4.09|1.87|2.04|2.39|2.60|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -587,22.89,24,0,0,10,7,0,0|0|0|0|0|0|0|0|0|0|1|4|4|4|2|1|1|3|3|1,0.00|0.00|0.00|0.17|0.00|0.55|0.34|0.00|0.51|0.85|1.96|2.60|1.41|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -590,17.31,16,0,0,8,5,0,0|0|0|0|0|0|0|0|0|0|0|0|1|4|2|1|1|3|3|1,0.00|0.00|0.00|0.00|0.00|0.34|0.34|0.00|0.51|0.17|0.17|0.51|0.77|2.60|1.32|0.26|1.79|2.04|2.39|1.96 -592,14.16,10,0,0,6,5,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1|1|3|3|1,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.34|0.17|0.00|0.51|0.21|1.24|0.94|0.26|1.79|2.04|2.39|1.96 -594,11.22,7,0,0,3,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|3|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.34|0.21|0.17|0.17|0.04|1.58|2.04|2.39|1.96 -595,8.37,4,0,0,2,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.00|0.17|0.17|0.00|0.00|1.19|2.39|1.96 -597,5.47,0,0,0,0,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.51|0.89|1.75 -598,3.90,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.17|0.17|1.24 -600,2.83,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.34 -601,2.66,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17 -603,2.66,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17 -604,2.66,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-result.csv deleted file mode 100644 index 690ec16a..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|437|31|577,561,548,538,525,518,438,435,431,435,453,438,421,421,340,332,325,341,343,331|70.93 -AVG|437|31|N/A|70.93 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-pass0.csv deleted file mode 100644 index 368adeee..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -402|63|572,559,548,539,527,517,391,391,395,393,397,443,423,397,384,407,380,381,0,0|72.96 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-pass0.log deleted file mode 100644 index b3c23269..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-pass0.log +++ /dev/null @@ -1,164 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -1,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.15,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -6,3.77,1,19,0,1,0,0,1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.62|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,8.16,20,19,0,1,0,0,20|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,6.01|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,15.18,53,19,0,1,0,0,53|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.03|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -11,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -15,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,17.70,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,22.68,80,18,0,2,0,0,60|20|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|6.01|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -21,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -24,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.88,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.68|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,36.14,135,17,0,3,0,0,60|60|15|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|4.94|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,45.29,178,17,0,3,0,0,60|60|58|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.10|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -35,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -37,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -40,45.72,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -42,48.11,183,16,0,4,0,0,60|60|60|3|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|2.39|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -45,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -48,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -51,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -54,62.42,242,15,0,5,0,0,60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -57,66.67,262,15,0,5,0,0,60|60|60|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|6.43|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -60,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -64,75.11,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.34|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -67,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -71,85.46,342,14,0,6,0,0,60|60|60|60|60|42|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|10.69|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -75,86.73,348,13,1,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -79,88.14,348,13,1,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -83,88.14,348,13,1,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -88,88.14,348,12,2,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -92,88.18,348,12,2,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -96,88.18,348,12,2,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -100,88.18,348,11,3,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -104,88.22,348,11,3,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -107,88.22,348,11,3,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -111,88.22,348,10,4,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -115,88.27,348,10,4,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -119,88.27,348,10,4,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -123,88.27,348,9,5,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -127,88.31,348,9,5,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -131,88.31,348,9,5,6,0,0,60|60|60|60|60|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.97|1.41|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -135,86.82,341,8,6,6,0,0,59|59|59|58|58|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|14.31|14.31|14.10|14.10|11.97|1.41|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -139,88.05,341,8,6,6,0,0,59|59|59|58|58|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|14.31|14.31|14.10|14.10|11.97|1.41|0.04|0.04|0.04|0.04|1.24|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -142,85.29,328,8,6,6,0,0,56|56|56|56|56|48|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|11.97|1.41|0.04|0.04|0.04|0.04|1.24|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,87.59,330,8,5,7,0,0,56|56|56|56|56|48|0|0|0|0|0|2|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|11.97|1.41|0.04|0.04|1.41|0.04|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -148,87.59,330,7,6,7,0,0,56|56|56|56|56|48|0|0|0|0|0|2|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|11.97|1.41|0.04|0.04|1.41|0.04|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -152,87.63,330,7,6,7,0,0,56|56|56|56|56|48|0|0|0|0|0|2|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|11.97|1.41|0.04|0.04|1.41|0.04|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -157,87.63,330,7,6,7,0,0,56|56|56|56|56|48|0|0|0|0|0|2|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|11.97|1.41|0.04|0.04|1.41|0.04|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -161,84.56,314,6,7,7,0,0,52|53|53|53|53|48|0|0|0|0|0|2|0|0|0|0|0|0|0|0,12.82|13.03|13.03|13.03|13.03|11.97|1.41|0.04|0.04|1.41|0.04|2.17|0.04|0.34|0.00|0.00|0.00|0.00|0.00|0.00 -165,87.24,316,6,6,8,0,0,52|53|53|53|53|48|0|0|0|0|0|2|2|0|0|0|0|0|0|0,12.82|13.03|13.03|13.03|13.03|11.97|1.41|0.04|0.04|1.41|0.04|2.17|2.17|0.89|0.00|0.00|0.00|0.00|0.00|0.00 -169,87.42,316,6,6,8,0,0,52|53|53|53|53|48|0|0|0|0|0|2|2|0|0|0|0|0|0|0,12.82|13.03|13.03|13.03|13.03|11.97|1.41|0.04|0.04|1.41|0.04|2.17|2.17|1.06|0.00|0.00|0.00|0.00|0.00|0.00 -173,87.42,316,5,7,8,0,0,52|53|53|53|53|48|0|0|0|0|0|2|2|0|0|0|0|0|0|0,12.82|13.03|13.03|13.03|13.03|11.97|1.41|0.04|0.04|1.41|0.04|2.17|2.17|1.06|0.00|0.00|0.00|0.00|0.00|0.00 -177,87.46,316,5,7,8,0,0,52|53|53|53|53|48|0|0|0|0|0|2|2|0|0|0|0|0|0|0,12.82|13.03|13.03|13.03|13.03|11.97|1.41|0.04|0.04|1.41|0.04|2.17|2.17|1.06|0.04|0.00|0.00|0.00|0.00|0.00 -181,83.20,296,5,7,8,0,0,48|49|49|49|49|48|0|0|0|0|0|2|2|0|0|0|0|0|0|0,11.97|12.18|12.18|12.18|12.18|11.97|1.41|0.04|0.04|1.41|0.04|2.17|2.17|1.06|0.04|0.00|0.00|0.00|0.00|0.00 -185,81.37,280,4,7,9,0,0,45|46|46|46|46|45|0|0|0|0|0|2|2|0|0|2|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.33|1.41|0.04|0.04|1.41|0.04|2.17|2.17|1.06|0.04|2.00|0.00|0.00|0.00|0.00 -189,83.45,273,4,5,11,0,0,44|44|44|44|44|44|0|0|1|0|2|2|2|0|0|2|0|0|0|0,11.12|11.12|11.12|11.12|11.12|11.12|1.41|0.04|0.26|1.41|2.17|2.17|2.17|1.06|1.75|2.17|0.00|0.00|0.00|0.00 -193,86.27,283,4,1,15,0,0,44|44|45|44|44|45|1|1|2|1|3|3|2|2|0|2|0|0|0|0,11.12|11.12|11.33|11.12|11.12|11.33|1.62|0.26|0.47|1.62|2.39|2.39|2.17|2.17|1.75|2.17|0.00|0.00|0.00|0.00 -197,86.31,283,3,2,15,0,0,44|44|45|44|44|45|1|1|2|1|3|3|2|2|0|2|0|0|0|0,11.12|11.12|11.33|11.12|11.12|11.33|1.62|0.26|0.47|1.62|2.39|2.39|2.17|2.17|1.75|2.17|0.04|0.00|0.00|0.00 -202,83.71,270,3,2,15,0,0,42|43|42|41|42|43|1|1|2|1|3|3|2|2|0|2|0|0|0|0,10.69|10.90|10.69|10.48|10.69|10.90|1.62|0.26|0.47|1.62|2.39|2.39|2.17|2.17|1.75|2.17|0.21|0.00|0.00|0.00 -206,83.67,261,2,2,16,0,0,39|39|40|39|39|40|5|1|2|1|3|6|2|2|1|2|0|0|0|0,10.05|10.05|10.26|10.05|10.05|10.26|2.81|0.26|0.47|1.62|2.39|3.02|2.17|2.17|1.96|2.17|1.75|0.00|0.00|0.00 -210,84.77,258,2,2,16,0,0,38|36|38|37|37|37|9|2|2|2|4|6|3|4|1|2|0|0|0|0,9.84|9.41|9.84|9.63|9.63|9.63|3.66|0.47|0.47|1.83|2.60|3.02|2.39|2.60|1.96|2.17|1.75|1.75|0.00|0.00 -214,85.88,256,2,0,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|4|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|2.60|1.96|2.17|2.17|2.17|0.00|0.00 -218,86.31,258,1,1,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.00|0.00 -223,86.35,258,1,1,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.00 -227,86.35,258,1,1,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.00 -231,86.35,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.00 -235,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -240,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -245,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -251,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -256,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -261,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -265,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -269,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -273,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -277,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -281,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -284,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -288,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -292,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -296,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -300,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -304,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -308,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -312,86.39,258,0,2,18,0,0,36|36|37|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.63|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -316,86.18,257,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -320,86.18,257,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|6|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.02|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -324,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -328,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -333,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -336,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -341,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -345,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -349,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -353,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -357,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -361,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -365,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -369,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -373,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -376,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -380,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -384,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -388,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -392,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -396,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -399,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -403,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -407,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -411,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -415,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -419,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -423,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -426,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -430,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -434,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -439,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -443,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -447,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -451,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -455,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -459,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -463,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -466,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -470,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -475,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -479,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -483,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -487,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -491,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -495,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -499,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -503,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -507,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -511,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -515,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -519,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -524,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -529,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -534,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -538,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -542,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -547,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -552,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -557,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -561,86.39,258,0,2,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -565,86.39,258,0,0,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -569,86.39,258,0,0,18,0,0,36|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,9.41|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -573,83.41,244,0,0,18,0,0,22|36|36|36|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,6.43|9.41|9.41|9.41|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -578,58.45,144,0,0,15,3,0,0|0|0|30|36|36|9|2|2|2|4|7|3|6|1|2|2|2|0|0,0.34|0.17|1.06|8.13|9.41|9.41|3.66|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -581,31.28,37,0,0,13,5,0,0|0|0|0|0|1|3|2|2|2|4|7|3|6|1|2|2|2|0|0,0.00|0.00|0.00|0.51|0.51|1.62|2.39|2.00|0.47|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -584,25.19,29,0,0,9,6,0,0|0|0|0|0|0|0|0|0|2|4|7|3|6|1|2|2|2|0|0,0.00|0.00|0.00|0.34|0.51|0.00|0.34|0.17|0.04|1.83|2.60|3.24|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -586,21.70,21,0,0,7,4,0,0|0|0|0|0|0|0|0|0|0|0|5|3|6|1|2|2|2|0|0,0.00|0.00|0.00|0.00|0.34|0.00|0.34|0.17|0.00|0.34|1.58|2.81|2.39|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -588,16.16,13,0,0,5,5,0,0|0|0|0|0|0|0|0|0|0|0|0|0|6|1|2|2|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.68|0.00|1.58|3.02|1.96|2.17|2.17|2.17|0.04|0.04 -590,11.90,6,0,0,3,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|2|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.34|0.00|0.17|0.89|1.58|2.17|2.17|2.17|0.04|0.04 -592,9.65,3,0,0,2,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.34|0.00|0.17|0.34|0.68|1.58|1.96|2.17|0.04|0.04 -594,6.50,1,0,0,1,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.00|0.00|0.00|0.68|0.21|1.06|1.96|0.04|0.04 -595,3.98,0,0,0,0,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.68|0.21|0.17|0.68|0.04|0.04 -597,2.75,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.34|0.00|0.04 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-result.csv deleted file mode 100644 index 86ddac9c..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|402|63|572,559,548,539,527,517,391,391,395,393,397,443,423,397,384,407,380,381,0,0|72.96 -AVG|402|63|N/A|72.96 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-pass0.csv deleted file mode 100644 index 605d8e92..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -481|32|631,620,612,600,586,577,501,523,499,503,517,489,391,397,401,385,414,327,324,328|74.66 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-pass0.log deleted file mode 100644 index 999a3cec..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-pass0.log +++ /dev/null @@ -1,178 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,3.00,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,9.22,25,19,0,1,0,0,25|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,7.07|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,15.61,55,19,0,1,0,0,55|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.46|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -11,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -15,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -18,18.80,62,18,0,2,0,0,60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|2.13|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -20,28.43,107,18,0,2,0,0,60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -23,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -25,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -27,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,33.16,121,17,0,3,0,0,60|60|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|1.96|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,43.59,170,17,0,3,0,0,60|60|50|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|12.39|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -36,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -42,47.00,182,16,0,4,0,0,60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|1.28|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -44,57.05,225,16,0,4,0,0,60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|11.33|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -47,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -50,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -53,61.09,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -56,66.89,263,15,0,5,0,0,60|60|60|60|23|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|6.64|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -59,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -62,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -65,75.62,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -68,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -71,80.13,317,14,0,6,0,0,60|60|60|60|60|17|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|5.37|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -75,86.09,345,14,0,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -78,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -82,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -85,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -89,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -93,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -97,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -101,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -105,87.88,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -108,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -112,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -116,87.93,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -120,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,87.46,341,10,3,7,0,0,58|59|59|59|59|45|0|2|0|0|0|0|0|0|0|0|0|0|0|0,14.10|14.31|14.31|14.31|14.31|11.33|1.75|0.47|0.04|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -128,86.35,335,9,4,7,0,0,57|57|58|58|58|45|0|2|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.88|14.10|14.10|14.10|11.33|1.75|0.47|0.04|0.55|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -132,86.82,333,9,3,8,0,0,56|56|57|58|57|45|0|2|0|0|2|0|0|0|0|0|0|0|0|0,13.67|13.67|13.88|14.10|13.88|11.33|1.75|0.47|0.04|0.55|1.32|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -136,87.07,331,9,3,8,0,0,56|55|56|56|56|48|0|2|0|0|2|0|0|0|0|0|0|0|0|0,13.67|13.46|13.67|13.67|13.67|11.97|1.75|0.47|0.55|0.55|1.49|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -140,84.95,321,9,3,8,0,0,54|53|54|54|54|48|0|2|0|0|2|0|0|0|0|0|0|0|0|0,13.25|13.03|13.25|13.25|13.25|11.97|1.75|0.47|0.55|0.55|1.49|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -144,86.69,326,8,2,10,0,0,54|53|54|55|54|48|3|2|0|1|2|0|0|0|0|0|0|0|0|0,13.25|13.03|13.25|13.46|13.25|11.97|2.39|0.47|0.55|0.77|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -148,85.88,322,8,1,11,0,0,52|54|52|54|52|48|3|3|1|1|2|0|0|0|0|0|0|0|0|0,12.82|13.25|12.82|13.25|12.82|11.97|2.39|0.68|0.77|0.77|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -152,87.16,324,8,1,11,0,0,53|53|52|54|52|49|3|3|1|2|2|0|0|0|0|0|0|0|0|0,13.03|13.03|12.82|13.25|12.82|12.18|2.39|0.68|0.77|0.98|2.17|0.89|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -156,84.39,311,8,1,11,0,0,50|51|50|51|49|49|3|3|1|2|2|0|0|0|0|0|0|0|0|0,12.39|12.61|12.39|12.61|12.18|12.18|2.39|0.68|0.77|0.98|2.17|0.89|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -160,85.67,313,7,1,12,0,0,50|50|49|51|48|49|3|3|2|2|3|3|0|0|0|0|0|0|0|0,12.39|12.39|12.18|12.61|11.97|12.18|2.39|0.68|0.98|0.98|2.39|2.39|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -165,86.14,315,7,1,12,0,0,49|50|48|50|49|50|3|5|2|2|3|4|0|0|0|0|0|0|0|0,12.18|12.39|11.97|12.39|12.18|12.39|2.39|1.11|0.98|0.98|2.39|2.60|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -169,86.86,316,7,1,12,0,0,49|50|49|50|48|50|3|5|2|2|4|4|0|0|0|0|0|0|0|0,12.18|12.39|12.18|12.39|11.97|12.39|2.39|1.11|1.32|0.98|2.60|2.60|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -173,86.86,316,7,1,12,0,0,49|50|49|50|48|50|3|5|2|2|4|4|0|0|0|0|0|0|0|0,12.18|12.39|12.18|12.39|11.97|12.39|2.39|1.11|1.32|0.98|2.60|2.60|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -177,86.86,316,7,1,12,0,0,49|50|49|50|48|50|3|5|2|2|4|4|0|0|0|0|0|0|0|0,12.18|12.39|12.18|12.39|11.97|12.39|2.39|1.11|1.32|0.98|2.60|2.60|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -181,86.01,312,7,1,12,0,0,48|49|48|49|48|50|3|5|2|2|4|4|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.97|12.39|2.39|1.11|1.32|0.98|2.60|2.60|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -185,86.73,312,6,2,12,0,0,48|49|48|49|48|50|3|5|2|2|4|4|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.97|12.39|2.39|1.11|1.32|0.98|2.60|2.60|0.21|0.72|0.00|0.00|0.00|0.00|0.00|0.00 -197,85.92,308,5,3,12,0,0,48|49|48|49|48|50|3|2|2|2|4|3|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.97|12.39|2.39|0.47|1.32|0.98|2.60|2.39|0.21|0.72|0.04|0.00|0.00|0.00|0.00|0.00 -201,86.05,307,5,3,12,0,0,48|49|48|49|48|50|3|2|2|2|4|2|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.97|12.39|2.39|0.47|1.32|0.98|2.60|2.17|0.21|1.06|0.04|0.00|0.00|0.00|0.00|0.00 -205,86.35,306,5,3,12,0,0,48|49|48|49|47|50|3|2|2|2|4|2|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.75|12.39|2.39|0.47|1.32|0.98|2.60|2.17|0.21|1.06|0.55|0.00|0.00|0.00|0.00|0.00 -209,86.56,307,5,3,12,0,0,48|49|48|49|47|50|4|2|2|2|4|2|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.75|12.39|2.60|0.47|1.32|0.98|2.60|2.17|0.21|1.06|0.55|0.00|0.00|0.00|0.00|0.00 -213,86.56,307,4,4,12,0,0,48|49|48|49|47|50|4|2|2|2|4|2|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.75|12.39|2.60|0.47|1.32|0.98|2.60|2.17|0.21|1.06|0.55|0.00|0.00|0.00|0.00|0.00 -218,86.61,307,4,4,12,0,0,48|49|48|49|47|50|4|2|2|2|4|2|0|0|0|0|0|0|0|0,11.97|12.18|11.97|12.18|11.75|12.39|2.60|0.47|1.32|0.98|2.60|2.17|0.21|1.06|0.55|0.04|0.00|0.00|0.00|0.00 -222,86.39,306,4,4,12,0,0,48|49|48|48|47|50|4|2|2|2|4|2|0|0|0|0|0|0|0|0,11.97|12.18|11.97|11.97|11.75|12.39|2.60|0.47|1.32|0.98|2.60|2.17|0.21|1.06|0.55|0.04|0.00|0.00|0.00|0.00 -226,86.65,304,4,4,12,0,0,48|49|48|48|46|49|4|2|2|2|4|2|0|0|0|0|0|0|0|0,11.97|12.18|11.97|11.97|11.54|12.18|2.60|0.47|1.32|0.98|2.60|2.17|0.89|1.06|0.55|0.04|0.00|0.00|0.00|0.00 -230,86.18,301,4,4,12,0,0,47|48|48|47|46|49|4|2|2|2|4|2|0|0|0|0|0|0|0|0,11.75|11.97|11.97|11.75|11.54|12.18|2.60|0.47|1.32|0.98|2.60|2.17|0.89|1.06|0.55|0.21|0.00|0.00|0.00|0.00 -233,86.31,300,4,4,12,0,0,47|48|48|47|45|49|4|2|2|2|4|2|0|0|0|0|0|0|0|0,11.75|11.97|11.97|11.75|11.33|12.18|2.60|0.47|1.66|0.98|2.60|2.17|0.89|1.06|0.55|0.21|0.00|0.00|0.00|0.00 -237,85.67,297,3,5,12,0,0,46|47|47|46|45|48|7|2|2|2|3|2|0|0|0|0|0|0|0|0,11.54|11.75|11.75|11.54|11.33|11.97|3.24|0.47|1.66|0.98|2.39|2.17|0.89|1.06|0.55|0.21|0.00|0.00|0.00|0.00 -241,86.27,294,3,4,13,0,0,45|46|46|45|44|47|9|2|2|2|3|2|0|0|0|0|1|0|0|0,11.33|11.54|11.54|11.33|11.12|11.75|3.66|0.47|1.66|1.66|2.39|2.17|0.89|1.06|0.55|0.21|0.77|0.00|0.00|0.00 -245,85.80,291,3,4,13,0,0,44|46|46|44|43|47|9|2|2|2|3|2|0|0|0|0|1|0|0|0,11.12|11.54|11.54|11.12|10.90|11.75|3.66|0.47|1.66|1.83|2.39|2.17|0.89|1.06|0.55|0.21|0.77|0.00|0.00|0.00 -249,85.67,288,3,4,13,0,0,44|45|45|44|43|46|9|2|2|2|3|2|0|0|0|0|1|0|0|0,11.12|11.33|11.33|11.12|10.90|11.54|3.66|0.47|1.66|1.83|2.39|2.17|0.89|1.06|0.55|0.21|1.28|0.00|0.00|0.00 -252,83.75,279,3,3,14,0,0,42|43|45|42|41|44|9|3|2|2|2|2|0|0|1|0|1|0|0|0,10.69|10.90|11.33|10.69|10.48|11.12|3.66|0.68|1.66|1.83|2.17|2.17|0.89|1.06|0.77|0.21|1.28|0.00|0.00|0.00 -256,83.71,274,3,2,15,0,0,40|43|43|40|40|42|9|3|2|3|2|3|0|1|1|0|2|0|0|0,10.26|10.90|10.90|10.26|10.26|10.69|3.66|0.68|1.66|2.39|2.17|2.39|0.89|1.28|0.77|0.21|2.17|0.00|0.00|0.00 -260,85.88,277,2,2,16,0,0,41|42|41|40|41|42|9|3|3|3|2|3|1|1|3|0|2|0|0|0,10.48|10.69|10.48|10.26|10.48|10.69|3.66|0.68|2.21|2.39|2.17|2.39|1.11|1.28|2.39|0.21|2.17|0.00|0.00|0.00 -264,85.41,273,2,2,16,0,0,40|41|40|39|40|41|10|4|3|3|2|3|1|1|3|0|2|0|0|0,10.26|10.48|10.26|10.05|10.26|10.48|3.88|0.89|2.21|2.39|2.17|2.39|1.11|1.28|2.39|0.21|2.17|0.38|0.00|0.00 -268,85.63,274,2,1,17,0,0,40|41|40|39|40|39|10|4|3|3|3|3|1|1|4|1|2|0|0|0,10.26|10.48|10.26|10.05|10.26|10.05|3.88|0.89|2.21|2.39|2.39|2.39|1.11|1.28|2.60|0.43|2.17|0.38|0.00|0.00 -271,85.63,274,1,2,17,0,0,40|40|39|39|40|39|10|4|3|3|3|3|2|2|4|1|2|0|0|0,10.26|10.26|10.05|10.05|10.26|10.05|3.88|0.89|2.21|2.39|2.39|2.39|1.32|1.49|2.60|0.43|2.17|0.38|0.00|0.00 -275,85.84,274,1,2,17,0,0,40|40|39|39|39|39|10|5|3|3|3|3|2|2|4|1|2|0|0|0,10.26|10.26|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.39|1.32|1.49|2.60|0.43|2.17|0.38|0.21|0.00 -279,85.58,272,1,2,17,0,0,39|39|39|39|39|39|10|5|3|3|3|3|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.39|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.00 -283,85.80,273,1,2,17,0,0,39|39|39|39|39|39|10|5|3|3|3|4|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.00 -287,85.80,273,1,2,17,0,0,39|39|39|39|39|39|10|5|3|3|3|4|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.00 -291,85.84,273,0,3,17,0,0,39|39|39|39|39|39|10|5|3|3|3|4|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.04 -295,85.84,273,0,3,17,0,0,39|39|39|39|39|39|10|5|3|3|3|4|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.04 -299,85.84,273,0,3,17,0,0,39|39|39|39|39|39|10|5|3|3|3|4|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.04 -302,85.84,273,0,3,17,0,0,39|39|39|39|39|39|10|5|3|3|3|4|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.04 -306,85.84,273,0,3,17,0,0,39|39|39|39|39|39|10|5|3|3|3|4|2|2|4|1|2|0|0|0,10.05|10.05|10.05|10.05|10.05|10.05|3.88|1.11|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.04 -310,84.35,266,0,3,17,0,0,39|36|37|39|39|39|10|3|3|3|3|4|2|2|4|1|2|0|0|0,10.05|9.41|9.63|10.05|10.05|10.05|3.88|0.68|2.21|2.39|2.39|2.60|1.32|1.49|2.60|0.43|2.17|0.38|0.38|0.04 -314,85.24,267,0,3,17,0,0,39|36|37|39|39|39|10|3|3|3|3|4|2|3|4|1|2|0|0|0,10.05|9.41|9.63|10.05|10.05|10.05|3.88|0.68|2.21|2.39|2.39|2.60|1.32|2.39|2.60|0.43|2.17|0.38|0.38|0.04 -318,85.33,265,0,3,17,0,0,39|36|36|39|38|39|10|3|3|3|3|4|2|3|4|1|2|0|0|0,10.05|9.41|9.41|10.05|9.84|10.05|3.88|0.68|2.21|2.39|2.39|2.60|1.83|2.39|2.60|0.43|2.17|0.38|0.38|0.04 -322,85.80,264,0,3,17,0,0,38|36|36|39|38|39|10|3|3|3|3|4|2|3|4|1|2|0|0|0,9.84|9.41|9.41|10.05|9.84|10.05|3.88|0.68|2.21|2.39|2.39|2.60|1.83|2.39|2.60|0.43|2.17|0.38|0.38|0.72 -326,84.73,259,0,3,17,0,0,37|36|35|38|37|38|10|3|3|3|3|4|2|3|4|1|2|0|0|0,9.63|9.41|9.20|9.84|9.63|9.84|3.88|0.68|2.21|2.39|2.39|2.60|1.83|2.39|2.60|0.43|2.17|0.38|0.38|0.72 -330,84.95,260,0,1,19,0,0,37|35|35|38|37|38|11|3|3|3|3|3|2|3|4|1|2|1|0|1,9.63|9.20|9.20|9.84|9.63|9.84|4.09|0.68|2.21|2.39|2.39|2.39|1.83|2.39|2.60|0.43|2.17|0.60|0.38|0.94 -334,84.73,259,0,0,20,0,0,37|34|35|37|36|37|11|4|4|3|3|3|2|3|4|1|2|1|1|1,9.63|8.99|9.20|9.63|9.41|9.63|4.09|0.89|2.43|2.39|2.39|2.39|1.83|2.39|2.60|0.43|2.17|0.60|0.60|0.94 -338,85.71,258,0,0,20,0,0,36|34|34|37|36|37|11|4|4|3|3|3|2|3|4|1|2|2|1|1,9.41|8.99|8.99|9.63|9.41|9.63|4.09|1.92|2.43|2.39|2.39|2.39|1.83|2.39|2.60|0.60|2.17|0.81|0.60|0.94 -342,85.07,255,0,0,20,0,0,36|34|34|36|35|36|11|4|4|3|3|3|2|3|4|1|2|2|1|1,9.41|8.99|8.99|9.41|9.20|9.41|4.09|1.92|2.43|2.39|2.39|2.39|1.83|2.39|2.60|0.60|2.17|0.81|0.60|0.94 -346,85.50,257,0,0,20,0,0,35|33|34|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.99|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|1.83|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -350,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -354,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -358,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -361,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -365,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -369,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -373,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -377,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -381,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -385,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -389,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -393,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -397,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -402,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -406,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -410,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -414,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -419,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -423,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -426,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -431,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -434,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -438,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -443,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -447,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -451,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -455,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -459,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -463,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -467,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -471,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -475,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -479,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -483,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -487,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -492,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -497,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -501,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -507,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -512,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -517,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -521,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -525,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -529,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -533,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -537,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -541,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -545,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -549,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -553,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -557,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -561,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -565,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -568,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -572,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -576,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -580,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -584,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -588,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -591,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -595,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -599,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -603,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -607,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -611,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -615,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -618,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -622,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -626,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -630,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -634,85.63,256,0,0,20,0,0,35|33|33|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,9.20|8.77|8.77|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -638,67.74,185,0,0,18,2,0,0|0|30|36|35|36|12|4|5|3|3|3|2|3|5|1|3|2|1|1,0.34|0.38|8.13|9.41|9.20|9.41|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -642,42.57,83,0,0,15,4,0,0|0|0|0|0|35|12|4|5|3|3|3|2|3|5|1|3|2|1|1,0.34|0.00|0.38|0.89|0.89|9.20|4.30|1.92|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -645,27.75,33,0,0,13,6,0,0|0|0|0|0|0|0|1|5|3|3|3|2|3|5|1|3|2|1|1,0.17|0.00|0.38|0.38|0.00|0.17|0.72|1.28|2.64|2.39|2.39|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -647,22.55,23,0,0,10,5,0,0|0|0|0|0|0|0|0|0|0|2|3|2|3|5|1|3|2|1|1,0.00|0.00|0.00|0.34|0.00|0.17|0.17|0.34|0.55|1.58|2.17|2.39|2.17|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -649,17.57,17,0,0,8,6,0,0|0|0|0|0|0|0|0|0|0|0|0|1|3|5|1|3|2|1|1,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.34|0.51|0.34|0.55|1.02|1.96|2.39|2.81|0.60|2.39|0.81|0.60|0.94 -651,14.50,14,0,0,7,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|1|3|2|1|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.51|0.34|0.38|0.17|0.68|1.96|2.81|0.60|2.39|0.81|0.60|0.94 -653,9.73,7,0,0,4,5,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|2|1|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17|0.38|0.17|0.17|0.17|1.06|0.38|2.39|0.81|0.60|0.94 -655,7.30,4,0,0,3,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|1|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|0.17|0.17|0.17|0.17|0.34|1.41|0.81|0.60|0.94 -657,4.66,2,0,0,2,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.00|0.00|0.00|0.17|0.17|0.21|0.21|0.60|0.94 -658,3.60,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.17|0.21|0.72 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-result.csv deleted file mode 100644 index c6ccd823..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|481|32|631,620,612,600,586,577,501,523,499,503,517,489,391,397,401,385,414,327,324,328|74.66 -AVG|481|32|N/A|74.66 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-pass0.csv deleted file mode 100644 index 2ffe8f51..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -381|85|570,561,551,542,529,519,444,422,430,320,432,451,442,425,0,0,336,324,0,334|71.59 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-pass0.log deleted file mode 100644 index 7cd940d6..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-pass0.log +++ /dev/null @@ -1,159 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,2.49,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.34|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,7.30,16,19,0,1,0,0,16|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,5.15|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,15.82,56,19,0,1,0,0,56|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -14,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,17.87,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -20,26.09,96,18,0,2,0,0,60|36|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|9.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -22,30.98,119,18,0,2,0,0,60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -24,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.20,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,33.58,123,17,0,3,0,0,60|60|3|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|2.39|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,42.95,167,17,0,3,0,0,60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -35,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -38,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -41,46.23,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -43,52.15,202,16,0,4,0,0,60|60|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|6.43|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -46,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -49,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -52,60.75,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -56,67.74,267,15,0,5,0,0,60|60|60|60|27|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|7.50|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -59,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -62,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -66,76.90,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.13|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -69,82.26,327,14,0,6,0,0,60|60|60|60|60|27|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|7.50|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -73,86.09,345,14,0,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -77,87.12,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -81,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -85,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -88,88.01,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -92,88.05,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -96,88.05,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -100,88.05,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -104,88.10,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -108,88.10,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -113,88.10,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -117,88.14,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -121,88.14,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.21|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -125,87.29,337,9,5,6,0,0,59|58|58|58|59|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|14.10|14.10|14.10|14.31|11.33|1.75|0.21|0.04|0.04|0.85|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -129,87.84,337,9,5,6,0,0,59|58|58|58|59|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|14.10|14.10|14.10|14.31|11.33|1.75|0.21|0.04|0.04|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -133,86.78,332,9,5,6,0,0,57|57|57|57|59|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.88|13.88|13.88|14.31|11.33|1.75|0.21|0.04|0.04|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -137,86.95,327,8,6,6,0,0,56|57|56|55|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.88|13.67|13.46|14.10|11.33|1.75|0.21|0.04|0.04|1.41|1.24|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -141,86.95,323,8,4,8,0,0,55|55|55|55|55|45|1|0|0|0|0|2|0|0|0|0|0|0|0|0,13.46|13.46|13.46|13.46|13.46|11.33|1.96|0.21|0.04|0.04|1.75|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,84.69,310,8,4,8,0,0,52|52|54|52|52|45|1|0|0|0|0|2|0|0|0|0|0|0|0|0,12.82|12.82|13.25|12.82|12.82|11.33|1.96|0.21|0.04|0.55|1.75|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -150,86.56,310,7,4,9,0,0,52|52|52|52|52|45|1|0|0|0|0|2|2|0|0|0|0|0|0|0,12.82|12.82|12.82|12.82|12.82|11.33|1.96|0.21|0.04|0.72|1.75|2.17|2.13|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -154,85.29,303,7,4,9,0,0,50|50|50|50|50|45|4|0|0|0|0|2|2|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.39|11.33|2.60|0.38|0.04|0.72|1.75|2.17|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -158,87.42,313,7,2,11,0,0,51|51|51|51|51|46|5|0|1|0|2|2|2|0|0|0|0|0|0|0,12.61|12.61|12.61|12.61|12.61|11.54|2.81|0.38|0.26|0.72|2.17|2.17|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -162,87.46,313,6,3,11,0,0,51|51|51|51|51|46|5|0|1|0|2|2|2|0|0|0|0|0|0|0,12.61|12.61|12.61|12.61|12.61|11.54|2.81|0.38|0.26|0.72|2.17|2.17|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -166,85.54,304,6,2,12,0,0,49|49|49|49|49|46|5|1|1|0|2|2|2|0|0|0|0|0|0|0,12.18|12.18|12.18|12.18|12.18|11.54|2.81|0.60|0.26|0.72|2.17|2.17|2.17|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -170,87.33,306,6,1,13,0,0,49|49|49|49|49|46|5|1|1|0|2|2|2|2|0|0|0|0|0|0,12.18|12.18|12.18|12.18|12.18|11.54|2.81|0.60|0.26|0.72|2.17|2.17|2.17|1.83|0.00|0.00|0.00|0.00|0.00|0.00 -174,87.37,306,5,2,13,0,0,49|49|49|49|49|46|5|1|1|0|2|2|2|2|0|0|0|0|0|0,12.18|12.18|12.18|12.18|12.18|11.54|2.81|0.60|0.26|0.72|2.17|2.17|2.17|1.83|0.04|0.00|0.00|0.00|0.00|0.00 -178,87.37,306,5,2,13,0,0,49|49|49|49|49|46|5|1|1|0|2|2|2|2|0|0|0|0|0|0,12.18|12.18|12.18|12.18|12.18|11.54|2.81|0.60|0.26|0.72|2.17|2.17|2.17|1.83|0.04|0.00|0.00|0.00|0.00|0.00 -182,87.16,305,5,2,13,0,0,49|49|48|48|48|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,12.18|12.18|11.97|11.97|11.97|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.00|0.00|0.00|0.00|0.00 -186,87.37,305,4,3,13,0,0,49|49|48|48|48|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,12.18|12.18|11.97|11.97|11.97|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|0.00|0.00|0.00|0.00 -190,87.37,305,4,3,13,0,0,49|49|48|48|48|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,12.18|12.18|11.97|11.97|11.97|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|0.00|0.00|0.00|0.00 -194,86.09,299,3,4,13,0,0,47|48|47|47|47|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.75|11.97|11.75|11.75|11.75|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|0.00|0.00|0.00|0.00 -199,87.50,299,3,4,13,0,0,47|48|47|47|47|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.75|11.97|11.75|11.75|11.75|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|1.41|0.00|0.00|0.00 -203,87.50,299,3,4,13,0,0,47|48|47|47|47|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.75|11.97|11.75|11.75|11.75|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|1.41|0.00|0.00|0.00 -207,87.50,299,2,5,13,0,0,47|48|47|47|47|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.75|11.97|11.75|11.75|11.75|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|1.41|0.00|0.00|0.00 -211,87.54,299,2,5,13,0,0,47|48|47|47|47|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.75|11.97|11.75|11.75|11.75|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|1.41|0.04|0.00|0.00 -215,87.54,299,2,5,13,0,0,47|48|47|47|47|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.75|11.97|11.75|11.75|11.75|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|1.41|0.04|0.00|0.00 -219,87.12,297,1,6,13,0,0,47|48|46|47|46|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.75|11.97|11.54|11.75|11.54|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|1.83|0.04|0.21|1.41|0.04|0.00|0.00 -223,87.20,294,1,6,13,0,0,46|47|46|46|46|46|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.54|11.75|11.54|11.54|11.54|11.54|2.81|0.81|0.47|0.72|2.17|2.17|2.17|2.00|0.04|0.21|1.41|0.04|0.55|0.00 -228,86.35,286,1,6,13,0,0,46|46|44|44|45|44|5|2|2|0|2|2|2|2|0|0|0|0|0|0,11.54|11.54|11.12|11.12|11.33|11.12|2.81|0.81|0.98|0.72|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.04|0.55|0.00 -232,87.20,285,0,7,13,0,0,45|45|44|44|45|44|6|2|2|0|2|2|2|2|0|0|0|0|0|0,11.33|11.33|11.12|11.12|11.33|11.12|3.02|0.81|2.00|0.72|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.04|0.55|0.04 -236,86.35,281,0,7,13,0,0,44|45|43|44|43|44|6|2|2|0|2|2|2|2|0|0|0|0|0|0,11.12|11.33|10.90|11.12|10.90|11.12|3.02|0.81|2.00|0.72|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.04|0.55|0.04 -240,86.52,273,0,7,13,0,0,43|43|42|42|43|42|6|2|2|0|2|2|2|2|0|0|0|0|0|0,10.90|10.90|10.69|10.69|10.90|10.69|3.02|0.81|2.00|0.89|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.55|0.55|1.24 -245,86.86,273,0,7,13,0,0,43|43|42|42|43|42|6|2|2|0|2|2|2|2|0|0|0|0|0|0,10.90|10.90|10.69|10.69|10.90|10.69|3.02|1.15|2.00|0.89|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.55|0.55|1.24 -249,86.86,273,0,7,13,0,0,43|43|42|42|43|42|6|2|2|0|2|2|2|2|0|0|0|0|0|0,10.90|10.90|10.69|10.69|10.90|10.69|3.02|1.15|2.00|0.89|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.55|0.55|1.24 -253,86.86,273,0,7,13,0,0,43|43|42|42|43|42|6|2|2|0|2|2|2|2|0|0|0|0|0|0,10.90|10.90|10.69|10.69|10.90|10.69|3.02|1.15|2.00|0.89|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.55|0.55|1.24 -257,84.09,260,0,7,13,0,0,42|40|39|42|40|39|6|2|2|0|2|2|2|2|0|0|0|0|0|0,10.69|10.26|10.05|10.69|10.26|10.05|3.02|1.15|2.00|0.89|2.17|2.17|2.17|2.17|0.04|0.21|1.58|0.55|0.55|1.24 -261,81.92,249,0,6,14,0,0,39|40|38|37|38|37|6|2|2|0|2|2|2|2|0|0|2|0|0|0,10.05|10.26|9.84|9.63|9.84|9.63|3.02|1.15|2.00|0.89|2.17|2.17|2.17|2.17|0.04|0.21|2.17|0.55|0.55|1.24 -266,81.15,243,0,5,15,0,0,37|37|36|37|37|37|6|2|2|0|2|2|2|2|0|0|2|0|0|2,9.63|9.63|9.41|9.63|9.63|9.63|3.02|1.15|2.00|0.89|2.17|2.17|2.17|2.17|0.04|0.21|2.17|0.55|0.55|2.17 -270,80.09,234,0,4,16,0,0,33|37|35|34|37|34|6|2|2|2|2|2|2|2|0|0|2|0|0|2,8.77|9.63|9.20|8.99|9.63|8.99|3.02|1.15|2.00|2.17|2.17|2.17|2.17|2.17|0.04|0.21|2.17|0.55|0.55|2.17 -274,82.13,238,0,3,17,0,0,33|35|34|34|34|35|7|3|3|3|3|3|3|2|0|0|2|2|0|2,8.77|9.20|8.99|8.99|8.99|9.20|3.24|1.36|2.21|2.39|2.39|2.39|2.39|2.17|0.04|0.21|2.17|2.17|0.55|2.17 -278,84.65,245,0,3,17,0,0,33|34|34|34|34|34|6|8|7|4|3|3|3|2|0|0|2|2|0|2,8.77|8.99|8.99|8.99|8.99|8.99|3.02|3.45|3.07|2.60|2.39|2.39|2.39|2.17|0.04|0.21|2.17|2.17|0.55|2.17 -282,86.14,252,0,3,17,0,0,32|34|33|34|33|34|6|9|9|7|3|4|6|2|0|0|2|2|0|2,8.56|8.99|8.77|8.99|8.77|8.99|3.02|3.66|3.49|3.24|2.39|2.60|3.02|2.17|0.04|0.21|2.17|2.17|0.55|2.17 -286,85.84,249,0,3,17,0,0,31|34|32|34|33|33|6|9|9|7|3|4|6|2|0|0|2|2|0|2,8.35|8.99|8.56|8.99|8.77|8.77|3.02|3.66|3.49|3.24|2.39|2.60|3.02|2.17|0.04|0.21|2.17|2.17|0.89|2.17 -290,85.80,248,0,3,17,0,0,31|33|33|33|32|33|5|10|9|7|3|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.24|2.39|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -294,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -298,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -302,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -306,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -310,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -314,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -319,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -323,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -327,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -331,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -336,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -340,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -345,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -349,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -353,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -358,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -363,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -367,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -373,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -377,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -384,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -390,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -394,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -399,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -402,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -406,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -410,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -415,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -419,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -423,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -430,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -436,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -440,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -444,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -449,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -453,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -457,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -462,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -466,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -470,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -475,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -479,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -488,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -494,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -499,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -503,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -507,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -512,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -516,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -520,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -525,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -529,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -534,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -538,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -542,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -547,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -551,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -556,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -560,86.44,251,0,3,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -565,86.44,251,0,1,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -569,86.44,251,0,0,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -573,86.44,251,0,0,17,0,0,31|33|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,8.35|8.77|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -577,79.15,217,0,0,16,1,0,0|30|33|33|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,1.70|8.13|8.77|8.77|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -581,56.67,131,0,0,14,3,0,0|0|0|10|32|33|5|10|9|9|4|4|6|3|0|0|2|2|0|2,0.51|0.00|0.51|3.88|8.56|8.77|2.81|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -585,33.71,51,0,0,10,7,0,0|0|0|0|0|0|0|10|9|9|4|4|6|3|0|0|2|2|0|2,0.00|0.00|0.17|0.34|0.00|0.00|1.58|3.88|3.66|3.66|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -588,25.66,27,0,0,8,6,0,0|0|0|0|0|0|0|0|0|4|4|4|6|3|0|0|2|2|0|2,0.00|0.00|0.00|0.17|0.00|0.00|0.51|0.55|1.41|2.60|2.60|2.60|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -590,20.21,18,0,0,6,6,0,0|0|0|0|0|0|0|0|0|0|0|3|6|3|0|0|2|2|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.34|0.55|0.51|0.85|2.39|3.02|2.39|0.04|0.21|2.17|2.17|0.89|2.17 -592,14.54,8,0,0,4,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|2|0|0|2|2|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.51|0.17|0.17|0.34|1.02|2.17|0.04|0.21|2.17|2.17|0.89|2.17 -595,11.73,6,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|2|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.00|0.34|0.34|0.89|0.04|0.21|2.17|2.17|0.89|2.17 -597,10.20,4,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.34|0.72|0.04|0.00|1.36|2.17|0.89|2.17 -598,7.52,2,0,0,1,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.55|0.04|0.00|0.17|1.19|0.89|2.17 -600,4.71,0,0,0,0,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.55|0.04|0.00|0.17|0.17|0.21|1.24 -602,2.49,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00 -603,2.49,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00 -605,2.49,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00 -606,2.32,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-result.csv deleted file mode 100644 index a2377d15..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|381|85|570,561,551,542,529,519,444,422,430,320,432,451,442,425,0,0,336,324,0,334|71.59 -AVG|381|85|N/A|71.59 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-pass0.csv deleted file mode 100644 index d12cc5e9..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -407|67|583,571,564,552,539,533,397,405,392,392,406,394,416,406,414,403,401,389,0,0|72.20 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-pass0.log deleted file mode 100644 index 5f7dcd23..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-pass0.log +++ /dev/null @@ -1,160 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -1,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.15,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,8.58,22,19,0,1,0,0,22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,6.43|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,16.46,59,19,0,1,0,0,59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -11,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -15,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,17.87,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,22.68,80,18,0,2,0,0,60|20|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|6.01|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -21,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -23,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.20,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,35.50,132,17,0,3,0,0,60|60|12|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|4.30|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -33,44.66,175,17,0,3,0,0,60|60|55|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|13.46|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -36,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -42,47.89,182,16,0,4,0,0,60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -46,60.03,239,16,0,4,0,0,60|60|60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -49,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -52,60.58,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.34|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -55,62.42,242,15,0,5,0,0,60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -58,65.82,258,15,0,5,0,0,60|60|60|60|18|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|5.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -61,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -64,75.66,301,14,0,6,0,0,60|60|60|60|60|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.89|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -69,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -80,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -87,87.84,345,13,1,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -92,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -97,87.88,345,12,2,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -100,87.88,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -104,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -108,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -111,87.93,345,11,3,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -115,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -119,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -122,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -126,87.97,345,10,4,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -129,87.97,345,9,5,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -133,88.01,345,9,5,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -137,88.01,345,9,5,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -141,88.01,345,9,5,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -145,88.01,345,8,6,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -149,88.05,345,8,6,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -153,88.05,345,8,6,6,0,0,60|60|60|60|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -157,87.29,339,7,7,6,0,0,60|58|58|58|60|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.10|14.10|14.10|14.52|11.33|1.75|0.04|0.04|0.04|0.04|0.04|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -161,87.93,337,7,7,6,0,0,59|58|58|58|59|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|14.10|14.10|14.10|14.31|11.33|1.75|0.04|0.04|0.04|0.04|0.21|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -165,87.93,337,7,7,6,0,0,59|58|58|58|59|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.31|14.10|14.10|14.10|14.31|11.33|1.75|0.04|0.04|0.04|0.04|0.21|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -169,87.24,333,6,8,6,0,0,58|58|57|57|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|14.10|13.88|13.88|14.10|11.33|1.75|0.04|0.04|0.04|0.04|0.21|1.41|0.17|0.00|0.00|0.00|0.00|0.00|0.00 -173,87.76,332,6,8,6,0,0,58|57|57|57|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|13.88|13.88|13.88|14.10|11.33|1.75|0.04|0.04|0.04|0.04|0.21|1.58|0.72|0.00|0.00|0.00|0.00|0.00|0.00 -177,87.76,332,6,8,6,0,0,58|57|57|57|58|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|13.88|13.88|13.88|14.10|11.33|1.75|0.04|0.04|0.04|0.04|0.21|1.58|0.72|0.00|0.00|0.00|0.00|0.00|0.00 -181,86.27,325,5,9,6,0,0,57|56|55|56|56|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.67|13.46|13.67|13.67|11.33|1.75|0.04|0.04|0.04|0.04|0.21|1.58|0.72|0.00|0.00|0.00|0.00|0.00|0.00 -185,86.56,315,5,9,6,0,0,55|55|53|53|54|45|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.46|13.46|13.03|13.03|13.25|11.33|1.75|0.04|0.04|0.04|0.04|0.21|1.58|1.41|1.75|0.00|0.00|0.00|0.00|0.00 -188,84.39,304,5,8,7,0,0,51|52|52|51|51|45|0|0|0|0|0|0|2|0|0|0|0|0|0|0,12.61|12.82|12.82|12.61|12.61|11.33|1.75|0.04|0.04|0.04|0.04|0.21|2.17|1.41|1.75|0.00|0.00|0.00|0.00|0.00 -192,86.22,307,5,6,9,0,0,51|52|52|51|51|45|0|1|0|0|0|0|2|0|2|0|0|0|0|0,12.61|12.82|12.82|12.61|12.61|11.33|1.75|0.26|0.04|0.04|1.24|0.21|2.17|1.41|2.17|0.00|0.00|0.00|0.00|0.00 -196,84.60,296,4,6,10,0,0,50|48|48|48|50|45|0|1|0|0|2|0|2|0|2|0|0|0|0|0,12.39|11.97|11.97|11.97|12.39|11.33|1.75|0.26|0.04|0.04|2.17|0.21|2.17|1.41|2.17|0.21|0.00|0.00|0.00|0.00 -200,84.26,292,4,4,12,0,0,48|47|48|46|47|45|2|1|0|0|2|0|2|2|2|0|0|0|0|0,11.97|11.75|11.97|11.54|11.75|11.33|2.17|0.26|0.04|0.04|2.17|0.21|2.17|2.17|2.17|0.38|0.00|0.00|0.00|0.00 -204,84.14,285,3,4,13,0,0,45|45|45|45|46|45|2|1|0|0|2|0|3|2|2|2|0|0|0|0,11.33|11.33|11.33|11.33|11.54|11.33|2.17|0.26|0.04|0.04|2.17|0.21|2.39|2.17|2.17|2.17|0.00|0.00|0.00|0.00 -208,84.18,277,3,0,17,0,0,42|43|43|42|43|43|3|2|1|1|3|1|3|2|2|2|1|0|0|0,10.69|10.90|10.90|10.69|10.90|10.90|2.39|0.47|0.26|0.26|2.39|0.43|2.39|2.17|2.17|2.17|1.96|0.00|0.00|0.00 -212,82.26,264,3,0,17,0,0,39|39|40|39|42|39|4|2|2|1|3|2|3|3|2|2|2|0|0|0,10.05|10.05|10.26|10.05|10.69|10.05|2.60|1.32|0.47|0.26|2.39|0.64|2.39|2.39|2.17|2.17|2.17|0.00|0.00|0.00 -216,80.98,254,2,1,17,0,0,36|36|40|37|37|37|4|4|2|2|4|2|4|3|2|2|2|0|0|0,9.41|9.41|10.26|9.63|9.63|9.63|2.60|2.60|0.47|0.47|2.60|0.64|2.60|2.39|2.17|2.17|2.17|0.00|0.00|0.00 -220,84.01,260,2,0,18,0,0,36|36|38|37|37|37|6|4|2|2|6|2|4|4|3|2|2|2|0|0,9.41|9.41|9.84|9.63|9.63|9.63|3.02|2.60|0.47|0.47|3.02|0.64|2.60|2.60|2.39|2.17|2.17|2.17|0.00|0.00 -224,86.14,270,2,0,18,0,0,36|36|38|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.84|9.63|9.63|9.63|3.45|2.81|0.47|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.00|0.00 -228,86.48,270,2,0,18,0,0,36|36|38|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.84|9.63|9.63|9.63|3.45|2.81|0.81|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.00|0.00 -232,86.65,269,1,1,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.00 -236,86.65,269,1,1,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.00 -240,86.65,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.00 -244,86.69,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -248,86.69,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -252,86.69,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -256,86.69,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -259,86.69,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -264,86.69,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -267,86.69,269,0,2,18,0,0,36|36|37|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|9.63|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -271,85.20,262,0,2,18,0,0,36|36|30|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|8.13|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.64|2.60|3.24|3.02|2.17|2.17|2.17|0.04|0.04 -275,86.65,260,0,2,18,0,0,36|36|28|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|7.71|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.81|2.60|3.24|3.02|2.17|2.17|2.17|0.04|1.75 -279,86.65,260,0,2,18,0,0,36|36|28|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|7.71|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.81|2.60|3.24|3.02|2.17|2.17|2.17|0.04|1.75 -283,86.65,260,0,2,18,0,0,36|36|28|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|7.71|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.81|2.60|3.24|3.02|2.17|2.17|2.17|0.04|1.75 -287,86.65,260,0,2,18,0,0,36|36|28|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|7.71|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.81|2.60|3.24|3.02|2.17|2.17|2.17|0.04|1.75 -292,86.65,260,0,2,18,0,0,36|36|28|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|7.71|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.81|2.60|3.24|3.02|2.17|2.17|2.17|0.04|1.75 -296,86.65,260,0,2,18,0,0,36|36|28|37|37|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|7.71|9.63|9.63|9.63|3.45|2.81|1.15|0.47|3.24|0.81|2.60|3.24|3.02|2.17|2.17|2.17|0.04|1.75 -300,86.39,258,0,2,18,0,0,36|36|27|37|36|37|8|5|2|2|7|2|4|7|6|2|2|2|0|0,9.41|9.41|7.50|9.63|9.41|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.17|2.17|2.17|0.04|1.75 -304,86.61,259,0,2,18,0,0,36|36|27|37|36|37|8|5|2|2|7|2|4|7|6|3|2|2|0|0,9.41|9.41|7.50|9.63|9.41|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.17|2.17|0.04|1.75 -308,86.61,259,0,2,18,0,0,36|35|27|37|36|37|8|5|2|2|7|2|4|7|6|3|3|2|0|0,9.41|9.20|7.50|9.63|9.41|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.39|2.17|0.04|1.75 -313,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -317,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -321,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -326,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -330,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -334,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -339,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -344,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -350,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -354,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -358,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -362,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -367,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -371,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -375,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -379,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -390,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -394,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -401,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -409,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -415,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -419,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -423,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -427,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -431,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -436,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -439,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -443,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -449,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -456,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -460,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -464,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -468,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -473,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -477,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -481,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -485,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -489,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -493,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -497,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -501,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -505,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -510,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -514,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -518,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -522,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -526,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -531,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -536,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -540,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -544,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -548,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -552,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -556,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -560,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -564,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -568,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -572,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -577,86.61,259,0,2,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -581,86.61,259,0,0,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -586,86.61,259,0,0,18,0,0,36|35|27|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,9.41|9.20|7.50|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -590,63.57,163,0,0,16,2,0,0|0|2|37|35|37|8|5|2|2|7|2|4|7|6|3|4|2|0|0,0.85|0.21|2.00|9.63|9.20|9.63|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -594,42.23,85,0,0,13,5,0,0|0|0|0|0|33|8|5|2|2|7|2|4|7|6|3|4|2|0|0,0.34|0.00|0.17|0.51|0.38|8.77|3.45|2.81|1.15|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -597,27.15,38,0,0,10,7,0,0|0|0|0|0|0|0|0|1|2|7|2|4|7|6|3|4|2|0|0,0.00|0.00|0.17|0.17|0.00|0.17|0.21|0.85|0.94|0.64|3.24|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -600,24.04,31,0,0,8,4,0,0|0|0|0|0|0|0|0|0|0|3|2|4|7|6|3|4|2|0|0,0.00|0.00|0.00|0.17|0.00|0.17|0.21|0.34|0.17|0.00|2.21|0.81|2.60|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -602,20.12,25,0,0,6,3,0,0|0|0|0|0|0|0|0|0|0|0|0|3|7|6|3|4|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.04|0.00|2.39|3.24|3.02|2.39|2.60|2.17|0.04|1.75 -604,15.65,13,0,0,5,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|3|4|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.55|1.62|2.39|2.39|2.60|2.17|0.04|1.75 -606,12.54,8,0,0,3,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|4|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|1.06|2.17|2.60|2.17|0.04|1.75 -607,9.43,4,0,0,2,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|2|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.38|0.17|0.38|2.17|2.17|0.04|1.75 -609,6.45,0,0,0,0,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.21|0.17|0.21|0.68|1.06|0.04|1.75 -611,5.00,0,0,0,0,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17|0.21|0.17|0.21|0.00|1.75 -612,3.17,0,0,0,0,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.17|0.17|0.00|0.34 -614,3.17,0,0,0,0,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.17|0.17|0.00|0.34 -616,2.83,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00|0.34 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-result.csv deleted file mode 100644 index 68a57442..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|407|67|583,571,564,552,539,533,397,405,392,392,406,394,416,406,414,403,401,389,0,0|72.20 -AVG|407|67|N/A|72.20 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-pass0.csv deleted file mode 100644 index 3375a9bc..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -427|45|575,564,556,541,532,521,446,441,453,448,450,456,434,340,342,349,349,386,0,360|73.53 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-pass0.log deleted file mode 100644 index 61bc7966..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-pass0.log +++ /dev/null @@ -1,164 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,3.34,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,10.71,32,19,0,1,0,0,32|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,8.56|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -14,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,16.84,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,22.47,79,18,0,2,0,0,60|19|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|5.79|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -21,30.98,119,18,0,2,0,0,60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -23,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.20,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -31,33.58,123,17,0,3,0,0,60|60|3|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|2.39|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,45.29,178,17,0,3,0,0,60|60|58|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.10|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -37,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -42,47.25,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|1.53|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -46,58.97,234,16,0,4,0,0,60|60|60|54|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|13.25|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -49,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -52,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -55,62.42,242,15,0,5,0,0,60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -59,74.55,299,15,0,5,0,0,60|60|60|60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -62,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -66,75.79,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|1.02|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -69,80.56,319,14,0,6,0,0,60|60|60|60|60|19|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|5.79|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -73,86.31,346,14,0,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -76,86.31,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -80,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -84,88.05,346,13,1,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -89,88.05,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -93,88.10,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -97,88.10,346,12,2,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -101,88.10,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -106,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -110,88.14,346,11,3,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -113,88.14,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -117,88.18,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -121,88.18,346,10,4,6,0,0,60|60|60|60|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -125,86.69,339,9,5,6,0,0,58|58|58|59|60|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.10|14.10|14.10|14.31|14.52|11.54|1.75|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -129,87.12,332,9,5,6,0,0,57|57|57|57|58|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.88|13.88|13.88|14.10|11.54|1.75|0.04|0.04|0.55|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -134,86.78,324,9,5,6,0,0,56|56|56|55|55|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.46|13.46|11.54|1.75|0.04|1.24|0.72|1.41|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -139,85.20,310,8,4,8,0,0,53|52|53|52|52|46|0|0|1|0|0|1|0|0|0|0|0|0|0|0,13.03|12.82|13.03|12.82|12.82|11.54|1.75|0.04|1.45|0.72|1.41|1.62|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -144,86.31,312,8,1,11,0,0,51|51|50|51|51|46|5|0|1|1|3|2|0|0|0|0|0|0|0|0,12.61|12.61|12.39|12.61|12.61|11.54|2.81|0.04|1.45|0.94|2.39|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -149,85.80,308,7,1,12,0,0,51|48|49|50|48|47|5|1|2|1|4|2|0|0|0|0|0|0|0|0,12.61|11.97|12.18|12.39|11.97|11.75|2.81|0.26|1.66|1.28|2.60|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -153,85.54,305,7,1,12,0,0,47|48|49|49|47|47|6|2|2|1|4|3|0|0|0|0|0|0|0|0,11.75|11.97|12.18|12.18|11.75|11.75|3.02|0.47|1.66|1.28|2.60|2.39|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -157,86.73,309,7,1,12,0,0,47|48|48|48|46|47|6|2|2|2|10|3|0|0|0|0|0|0|0|0,11.75|11.97|11.97|11.97|11.54|11.75|3.02|0.64|1.66|1.49|3.88|2.39|0.55|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -161,85.46,303,6,1,13,0,0,45|46|47|46|46|47|6|2|2|2|10|3|1|0|0|0|0|0|0|0,11.33|11.54|11.75|11.54|11.54|11.75|3.02|0.64|1.66|1.49|3.88|2.39|0.77|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -165,86.69,303,6,1,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.00|0.00|0.00|0.00|0.00|0.00 -169,86.69,303,6,1,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.00|0.00|0.00|0.00|0.00|0.00 -173,86.69,303,5,2,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.00|0.00|0.00|0.00|0.00|0.00 -178,86.73,303,5,2,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.00|0.00|0.00|0.00|0.00 -182,86.73,303,5,2,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.00|0.00|0.00|0.00|0.00 -186,86.73,303,4,3,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.00|0.00|0.00|0.00|0.00 -190,86.78,303,4,3,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.04|0.00|0.00|0.00|0.00 -195,86.78,303,4,3,13,0,0,45|46|46|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.04|0.00|0.00|0.00|0.00 -199,86.56,302,3,4,13,0,0,45|46|45|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.33|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.04|0.00|0.00|0.00|0.00 -203,86.95,302,3,4,13,0,0,45|46|45|46|46|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.33|11.54|11.54|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.04|0.38|0.00|0.00|0.00 -207,86.90,301,3,4,13,0,0,45|46|45|46|45|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.54|11.33|11.54|11.33|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.04|0.55|0.00|0.00|0.00 -211,86.48,298,2,5,13,0,0,45|45|45|45|44|46|7|2|2|2|11|3|1|0|0|0|0|0|0|0,11.33|11.33|11.33|11.33|11.12|11.54|3.24|0.64|1.66|1.49|4.09|2.39|0.77|1.24|0.04|0.04|0.55|0.21|0.00|0.00 -215,86.31,294,2,4,14,0,0,44|45|43|45|44|45|7|2|2|2|10|3|1|0|0|0|0|1|0|0,11.12|11.33|10.90|11.33|11.12|11.33|3.24|1.32|1.66|1.49|3.88|2.39|0.77|1.24|0.04|0.04|0.55|0.43|0.00|0.00 -219,86.52,291,2,4,14,0,0,43|44|43|44|43|44|9|2|2|2|10|3|1|0|0|0|0|1|0|0,10.90|11.12|10.90|11.12|10.90|11.12|3.66|2.00|1.66|1.49|3.88|2.39|0.77|1.24|0.04|0.04|0.55|0.60|0.00|0.00 -223,85.46,285,1,5,14,0,0,43|43|41|44|42|42|9|2|2|2|10|3|1|0|0|0|0|1|0|0,10.90|10.90|10.48|11.12|10.69|10.69|3.66|2.17|1.66|1.49|3.88|2.39|0.77|1.24|0.04|0.04|0.55|0.60|0.04|0.00 -228,85.41,280,1,5,14,0,0,42|42|41|42|42|42|9|2|2|2|9|3|1|0|0|0|0|1|0|0,10.69|10.69|10.48|10.69|10.69|10.69|3.66|2.17|2.17|1.49|3.66|2.39|0.77|1.75|0.04|0.04|0.55|0.60|0.04|0.00 -232,85.37,275,1,5,14,0,0,42|41|40|41|42|41|9|2|2|2|8|3|1|0|0|0|0|1|0|0,10.69|10.48|10.26|10.48|10.69|10.48|3.66|2.17|2.17|1.49|3.45|2.39|0.77|1.75|0.04|0.04|0.72|0.60|0.89|0.00 -236,86.14,272,0,6,14,0,0,41|41|40|41|41|41|9|2|2|2|7|3|1|0|0|0|0|1|0|0,10.48|10.48|10.26|10.48|10.48|10.48|3.66|2.17|2.17|1.49|3.24|2.39|0.77|1.75|0.04|0.04|0.72|0.60|0.89|1.41 -240,84.48,261,0,6,14,0,0,39|39|38|39|41|39|9|2|2|2|7|2|1|0|0|0|0|1|0|0,10.05|10.05|9.84|10.05|10.48|10.05|3.66|2.17|2.17|2.17|3.24|2.17|0.77|1.75|0.04|0.04|0.72|0.60|0.89|1.41 -244,83.75,252,0,5,15,0,0,37|36|38|36|39|39|9|2|2|2|6|2|1|0|0|0|0|1|0|2,9.63|9.41|9.84|9.41|10.05|10.05|3.66|2.17|2.17|2.17|3.02|2.17|0.77|1.75|0.04|0.04|0.72|1.45|0.89|2.17 -248,81.62,242,0,5,15,0,0,36|36|35|36|36|36|9|3|2|2|5|2|1|0|0|0|0|1|0|2,9.41|9.41|9.20|9.41|9.41|9.41|3.66|2.39|2.17|2.17|2.81|2.17|0.77|1.75|0.04|0.04|0.72|1.45|0.89|2.17 -251,84.39,247,0,3,17,0,0,35|34|35|36|36|34|10|4|2|4|6|4|1|0|0|2|1|1|0|2,9.20|8.99|9.20|9.41|9.41|8.99|3.88|2.60|2.17|2.60|3.02|2.60|0.77|1.75|0.04|2.17|0.94|1.45|0.89|2.17 -255,85.50,249,0,1,19,0,0,36|34|34|36|35|35|10|4|2|4|5|4|1|1|1|3|1|1|0|2,9.41|8.99|8.99|9.41|9.20|9.20|3.88|2.60|2.17|2.60|2.81|2.60|0.77|1.96|0.26|2.39|0.94|1.45|1.58|2.17 -259,85.29,248,0,1,19,0,0,36|33|33|36|34|35|10|4|4|4|4|4|1|1|1|4|1|1|0|2,9.41|8.77|8.77|9.41|8.99|9.20|3.88|2.60|2.60|2.60|2.60|2.60|0.77|1.96|0.26|2.60|0.94|1.45|1.58|2.17 -263,85.92,251,0,1,19,0,0,34|33|33|35|35|34|11|4|5|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|2.81|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -266,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -270,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -274,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -278,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -281,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -284,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -287,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -291,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -294,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -298,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -302,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -306,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -309,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -312,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -316,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -319,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -323,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -327,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -332,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -336,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -341,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -346,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -351,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -355,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -359,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -364,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -369,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -373,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -379,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -383,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -388,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -392,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -396,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -400,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -404,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -408,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -412,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -417,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -421,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -426,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -430,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -434,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -438,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -442,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -446,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -451,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -455,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -459,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -464,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -468,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -472,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -476,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -480,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -484,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -488,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -492,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -496,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -500,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -503,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -507,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -511,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -515,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -518,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -522,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -526,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -531,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -535,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -539,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -542,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -547,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -550,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -554,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -558,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -562,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -565,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -569,86.14,252,0,1,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -572,86.14,252,0,0,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -576,86.14,252,0,0,19,0,0,34|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,8.99|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -580,84.22,243,0,0,19,0,0,25|33|33|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,7.07|8.77|8.77|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -583,61.78,153,0,0,17,2,0,0|0|1|35|35|34|11|4|6|6|4|4|1|1|1|6|1|1|0|2,0.00|0.21|1.96|9.20|9.20|8.99|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -587,41.55,78,0,0,14,4,0,0|0|0|0|0|30|11|4|6|6|4|4|1|1|1|6|1|1|0|2,0.00|0.00|0.34|0.00|0.85|8.13|4.09|2.60|3.02|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -590,27.58,32,0,0,11,5,0,0|0|0|0|0|0|0|0|5|6|4|4|1|1|1|6|1|1|0|2,0.00|0.00|0.17|0.00|0.17|0.17|0.17|1.58|2.81|3.02|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -592,21.78,21,0,0,9,7,0,0|0|0|0|0|0|0|0|0|0|4|4|1|1|1|6|1|1|0|2,0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.38|0.17|1.41|2.60|2.60|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -594,17.70,15,0,0,8,6,0,0|0|0|0|0|0|0|0|0|0|0|2|1|1|1|6|1|1|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.00|0.38|0.51|2.17|0.77|1.96|0.26|3.02|0.94|1.45|1.58|2.17 -595,14.42,11,0,0,5,6,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|6|1|1|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|0.34|0.17|0.21|1.75|0.26|3.02|0.94|1.45|1.58|2.17 -597,12.76,10,0,0,4,4,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|6|1|1|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|0.34|0.17|0.00|0.51|0.04|3.02|0.94|1.45|1.58|2.17 -598,11.65,8,0,0,4,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|1|1|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.17|0.17|0.00|0.17|0.04|2.60|0.94|1.45|1.58|2.17 -600,9.09,3,0,0,2,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.17|0.00|0.17|0.00|0.51|0.55|1.45|1.58|2.17 -601,7.60,2,0,0,1,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.00|0.17|0.00|0.00|0.34|1.02|1.41|2.17 -603,6.07,2,0,0,1,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.00|0.34|0.51|0.72|2.17 -604,4.03,0,0,0,0,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.51|0.34|0.68 -606,3.68,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.51|0.17|0.51 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-result.csv deleted file mode 100644 index 33b8e49f..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|427|45|575,564,556,541,532,521,446,441,453,448,450,456,434,340,342,349,349,386,0,360|73.53 -AVG|427|45|N/A|73.53 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-pass0.csv deleted file mode 100644 index c0b39218..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -446|38|594,584,570,561,550,541,434,436,453,435,435,459,453,341,339,351,339,356,348,359|71.94 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-pass0.log deleted file mode 100644 index 4e002d44..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-pass0.log +++ /dev/null @@ -1,183 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -1,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -4,2.15,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,3.34,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,1.19|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,8.33,21,19,0,1,0,0,21|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,6.18|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -8,14.93,52,19,0,1,0,0,52|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,12.78|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -10,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -12,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -15,16.67,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -17,18.80,62,18,0,2,0,0,60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|2.13|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -19,27.58,103,18,0,2,0,0,60|43|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|10.90|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -21,30.98,119,18,0,2,0,0,60|59|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.31|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -24,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.54,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.34|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -43,52.79,205,16,0,4,0,0,60|60|60|25|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|7.07|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -46,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -48,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -51,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -54,62.42,242,15,0,5,0,0,60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -57,73.28,293,15,0,5,0,0,60|60|60|60|53|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|13.03|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -60,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -63,74.77,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -66,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -69,85.24,341,14,0,6,0,0,60|60|60|60|60|41|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|10.48|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -73,86.52,347,14,0,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -76,87.03,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -79,88.10,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -83,88.10,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -86,88.10,347,13,1,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -90,88.10,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -94,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -98,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -102,88.14,347,12,2,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -106,88.14,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -110,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -113,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -117,88.18,347,11,3,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -121,88.22,347,10,4,6,0,0,60|60|60|60|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.75|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -124,87.59,344,10,4,6,0,0,60|58|60|59|60|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.10|14.52|14.31|14.52|11.75|1.58|0.04|0.04|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -128,86.65,334,10,4,6,0,0,57|57|57|58|58|47|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.88|13.88|14.10|14.10|11.75|1.58|0.04|0.04|1.24|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -132,86.56,332,9,5,6,0,0,57|56|56|57|57|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|13.67|13.67|13.88|13.88|12.18|1.58|0.04|0.04|1.24|0.34|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -136,87.16,329,9,5,6,0,0,56|56|56|56|56|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|12.18|1.58|0.04|0.04|1.24|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -140,87.50,329,9,5,6,0,0,56|56|56|56|56|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|12.18|1.58|0.04|0.38|1.24|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -143,87.50,329,8,6,6,0,0,56|56|56|56|56|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.67|13.67|13.67|13.67|12.18|1.58|0.04|0.38|1.24|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -148,87.12,319,8,6,6,0,0,54|54|54|54|54|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.25|13.25|13.25|13.25|13.25|12.18|1.58|0.04|0.38|1.24|1.75|1.58|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -151,85.97,312,8,6,6,0,0,52|53|53|53|52|49|0|0|0|0|0|0|0|0|0|0|0|0|0|0,12.82|13.03|13.03|13.03|12.82|12.18|1.58|0.04|0.38|1.41|1.75|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -155,84.05,299,8,5,7,0,0,50|50|50|50|49|49|0|0|0|0|0|1|0|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.18|12.18|1.58|0.89|0.38|1.41|1.75|1.96|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -159,86.18,301,7,5,8,0,0,50|50|50|50|49|50|0|0|1|0|0|1|0|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.18|12.39|1.58|0.89|0.60|1.41|1.75|1.96|1.70|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -162,86.65,303,7,4,9,0,0,50|50|50|50|49|50|0|0|1|0|0|1|2|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.18|12.39|1.58|0.89|0.60|1.41|1.75|1.96|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -166,86.65,303,7,4,9,0,0,50|50|50|50|49|50|0|0|1|0|0|1|2|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.18|12.39|1.58|0.89|0.60|1.41|1.75|1.96|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -170,85.75,298,7,4,9,0,0,49|49|49|49|49|49|0|0|1|0|0|1|2|0|0|0|0|0|0|0,12.18|12.18|12.18|12.18|12.18|12.18|1.58|0.89|0.77|1.41|1.75|1.96|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -173,85.97,299,7,2,11,0,0,48|48|49|49|49|49|1|1|2|0|0|1|2|0|0|0|0|0|0|0,11.97|11.97|12.18|12.18|12.18|12.18|1.79|1.11|0.98|1.41|1.75|1.96|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -177,85.46,295,6,1,13,0,0,46|48|49|46|46|47|2|2|3|1|1|2|2|0|0|0|0|0|0|0,11.54|11.97|12.18|11.54|11.54|11.75|2.00|1.32|1.19|1.62|1.96|2.17|2.17|0.34|0.00|0.00|0.00|0.00|0.00|0.00 -181,86.09,293,6,1,13,0,0,46|46|46|46|46|46|2|4|3|1|1|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.62|1.96|2.39|2.39|1.41|0.00|0.00|0.00|0.00|0.00|0.00 -184,86.65,294,6,1,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.00|0.00|0.00|0.00|0.00|0.00 -187,86.65,294,6,1,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.00|0.00|0.00|0.00|0.00|0.00 -190,86.65,294,5,2,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.00|0.00|0.00|0.00|0.00|0.00 -195,86.69,294,5,2,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.00|0.00|0.00|0.00|0.00 -199,86.69,294,5,2,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.00|0.00|0.00|0.00|0.00 -203,86.69,294,4,3,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.00|0.00|0.00|0.00|0.00 -207,86.73,294,4,3,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.00|0.00|0.00|0.00 -211,86.73,294,4,3,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.00|0.00|0.00|0.00 -215,86.73,294,3,4,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.00|0.00|0.00|0.00 -219,86.78,294,3,4,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.04|0.00|0.00|0.00 -223,86.78,294,3,4,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.04|0.00|0.00|0.00 -227,86.78,294,2,5,13,0,0,46|46|46|46|46|46|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.54|11.54|11.54|11.54|11.54|11.54|2.00|1.75|1.19|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.04|0.00|0.00|0.00 -231,86.22,288,2,5,13,0,0,45|45|45|45|45|45|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.33|11.33|11.33|11.33|11.33|11.33|2.17|1.75|1.36|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.21|0.21|0.00|0.00 -235,86.14,286,2,5,13,0,0,45|44|45|44|45|45|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.33|11.12|11.33|11.12|11.33|11.33|2.17|1.75|1.53|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.21|0.38|0.00|0.00 -239,85.41,281,1,6,13,0,0,44|44|43|44|44|44|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.12|11.12|10.90|11.12|11.12|11.12|2.17|1.75|1.87|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.21|0.38|0.00|0.00 -243,86.31,277,1,6,13,0,0,44|43|43|44|43|42|2|4|3|1|2|3|3|0|0|0|0|0|0|0,11.12|10.90|10.90|11.12|10.90|10.69|2.17|1.75|1.87|1.96|2.17|2.39|2.39|1.41|0.04|0.04|0.21|0.72|1.41|0.00 -247,86.39,275,1,6,13,0,0,42|43|43|42|43|42|3|4|3|2|2|3|3|0|0|0|0|0|0|0,10.69|10.90|10.90|10.69|10.90|10.69|2.39|1.75|2.04|2.17|2.17|2.39|2.39|1.41|0.04|0.04|0.55|0.72|1.41|0.00 -251,85.29,269,0,7,13,0,0,41|42|42|41|42|41|3|4|3|2|2|3|3|0|0|0|0|0|0|0,10.48|10.69|10.69|10.48|10.69|10.48|2.39|1.75|2.04|2.17|2.17|2.39|2.39|1.41|0.04|0.04|0.72|0.72|1.41|0.00 -255,85.37,262,0,7,13,0,0,40|42|40|40|42|41|3|3|3|2|2|2|2|0|0|0|0|0|0|0,10.26|10.69|10.26|10.26|10.69|10.48|2.39|1.53|2.04|2.17|2.17|2.17|2.17|1.41|0.04|0.04|0.72|0.72|1.41|1.58 -259,84.95,256,0,7,13,0,0,40|40|40|40|40|40|3|3|2|2|2|2|2|0|0|0|0|0|0|0,10.26|10.26|10.26|10.26|10.26|10.26|2.39|1.53|1.83|2.17|2.17|2.17|2.17|1.41|0.04|0.04|0.72|1.41|1.41|1.75 -263,83.92,248,0,5,15,0,0,37|40|39|38|37|37|4|2|2|2|2|2|2|0|0|0|0|2|0|2,9.63|10.26|10.05|9.84|9.63|9.63|2.60|1.32|2.17|2.17|2.17|2.17|2.17|1.41|0.04|0.04|0.72|2.17|1.41|2.17 -266,83.80,245,0,4,16,0,0,37|37|37|36|37|37|5|2|2|2|3|2|3|0|0|1|0|2|0|2,9.63|9.63|9.63|9.41|9.63|9.63|2.81|1.32|2.17|2.17|2.39|2.17|2.39|1.41|0.04|0.77|0.72|2.17|1.41|2.17 -270,83.50,238,0,4,16,0,0,35|35|35|36|35|35|5|2|3|2|3|2|3|0|0|3|0|2|0|2,9.20|9.20|9.20|9.41|9.20|9.20|2.81|1.32|2.39|2.17|2.39|2.17|2.39|1.41|0.04|2.39|0.72|2.17|1.41|2.17 -273,85.97,248,0,2,18,0,0,35|36|35|34|36|36|5|3|4|3|3|3|4|1|0|3|0|3|2|2,9.20|9.41|9.20|8.99|9.41|9.41|2.81|1.53|2.60|2.39|2.39|2.39|2.60|1.62|0.04|2.39|0.72|2.39|2.17|2.17 -278,85.24,243,0,0,20,0,0,34|34|33|32|34|36|6|3|4|3|4|3|4|1|1|3|1|3|2|2,8.99|8.99|8.77|8.56|8.99|9.41|3.02|1.87|2.60|2.39|2.60|2.39|2.60|1.62|0.26|2.39|0.94|2.39|2.17|2.17 -282,86.31,244,0,0,20,0,0,34|34|33|32|34|34|7|4|4|3|4|3|4|1|1|4|1|3|2|2,8.99|8.99|8.77|8.56|8.99|8.99|3.24|2.09|2.60|2.39|2.60|2.39|2.60|1.62|0.26|2.60|1.79|2.39|2.17|2.17 -286,85.88,242,0,0,20,0,0,33|33|32|31|34|33|7|4|4|3|4|4|4|2|2|4|1|3|2|2,8.77|8.77|8.56|8.35|8.99|8.77|3.24|2.09|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.60|1.79|2.39|2.17|2.17 -290,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -294,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -298,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -302,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -306,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -310,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -313,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -317,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -321,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -325,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -329,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -333,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -336,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -340,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -344,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -348,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -352,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -356,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -359,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -364,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -368,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -372,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -376,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -380,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -384,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -388,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -392,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -396,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -400,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -403,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -407,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -411,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -415,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -419,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -423,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -427,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -431,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -435,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -439,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -443,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -447,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -451,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -454,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -458,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -462,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -466,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -470,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -474,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -478,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -482,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -485,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -489,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -493,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -497,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -500,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -504,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -508,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -512,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -516,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -520,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -523,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -527,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -531,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -535,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -539,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -543,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -547,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -551,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -554,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -558,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -562,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -566,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -570,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -574,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -578,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -581,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -585,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -589,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -593,86.31,244,0,0,20,0,0,33|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,8.77|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -597,83.75,232,0,0,20,0,0,21|33|32|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,6.22|8.77|8.56|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -601,62.93,149,0,0,18,2,0,0|0|3|31|33|33|7|5|4|3|4|4|4|2|2|5|1|4|2|2,0.68|0.21|1.83|8.35|8.77|8.77|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -604,44.78,81,0,0,15,5,0,0|0|0|0|0|32|7|5|4|3|4|4|4|2|2|5|1|4|2|2,0.34|0.00|0.17|0.51|0.89|8.56|3.24|2.30|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -607,33.97,41,0,0,13,6,0,0|0|0|0|0|0|0|4|4|3|4|4|4|2|2|5|1|4|2|2,0.34|0.00|0.17|0.34|0.34|0.38|1.53|2.09|2.60|2.39|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -609,28.39,33,0,0,12,4,0,0|0|0|0|0|0|0|0|1|2|4|4|4|2|2|5|1|4|2|2,0.00|0.00|0.17|0.17|0.34|0.17|0.34|0.17|1.06|2.17|2.60|2.60|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -612,23.36,24,0,0,9,6,0,0|0|0|0|0|0|0|0|0|0|0|2|4|2|2|5|1|4|2|2,0.00|0.00|0.00|0.17|0.34|0.17|0.34|0.17|0.00|0.04|1.36|2.17|2.60|1.83|0.47|2.81|1.79|2.60|2.17|2.17 -614,18.59,17,0,0,7,5,0,0|0|0|0|0|0|0|0|0|0|0|0|1|0|2|5|1|4|2|2,0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00|0.04|0.34|0.68|1.62|1.41|0.47|2.81|1.79|2.60|2.17|2.17 -615,15.35,15,0,0,6,3,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|5|1|4|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.34|0.51|0.17|0.34|0.26|2.81|1.79|2.60|2.17|2.17 -617,12.76,8,0,0,3,5,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|4|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.34|0.51|0.17|0.00|0.00|1.02|1.58|2.60|2.17|2.17 -619,9.60,4,0,0,2,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.51|0.17|0.00|0.00|0.00|0.34|1.75|2.17|2.17 -621,6.92,2,0,0,1,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00|0.00|0.17|0.72|1.41|2.13 -622,4.96,0,0,0,0,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17|0.00|0.00|0.00|0.17|0.55|0.72|1.02 -624,4.11,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.55|0.72|0.68 -625,3.90,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.51|0.55|0.68 -626,3.73,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.55|0.68 -628,3.05,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.38|0.51 -629,2.70,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.51 -630,2.70,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.04|0.51 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-result.csv deleted file mode 100644 index 938c0494..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|446|38|594,584,570,561,550,541,434,436,453,435,435,459,453,341,339,351,339,356,348,359|71.94 -AVG|446|38|N/A|71.94 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-pass0.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-pass0.csv deleted file mode 100644 index 80fd088a..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -483|28|610,610,608,597,586,576,488,488,464,486,477,486,464,383,375,384,395,415,395,392|71.64 \ No newline at end of file diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-pass0.log b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-pass0.log deleted file mode 100644 index e1a9833f..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-pass0.log +++ /dev/null @@ -1,196 +0,0 @@ -0,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -2,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -3,2.15,0,20,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -5,2.15,0,19,1,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -7,4.28,2,19,0,1,0,0,2|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,2.13|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -9,12.84,42,19,0,1,0,0,42|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,10.69|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -11,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -13,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -14,16.67,60,19,0,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -16,16.67,60,18,1,1,0,0,60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -18,18.63,61,18,0,2,0,0,60|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|1.96|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -20,25.87,95,18,0,2,0,0,60|35|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|9.20|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -22,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -24,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -26,31.20,120,18,0,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -28,31.20,120,17,1,2,0,0,60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -30,33.16,121,17,0,3,0,0,60|60|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|1.96|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -32,42.10,163,17,0,3,0,0,60|60|43|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|10.90|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -34,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -36,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -39,45.72,180,17,0,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -41,46.23,180,16,1,3,0,0,60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|0.51|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -44,54.28,212,16,0,4,0,0,60|60|60|32|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|8.56|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -47,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -50,60.24,240,16,0,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -53,60.24,240,15,1,4,0,0,60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -55,66.04,259,15,0,5,0,0,60|60|60|60|19|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|5.79|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -58,74.34,298,15,0,5,0,0,60|60|60|60|58|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.10|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -61,74.77,300,15,0,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -65,74.77,300,14,1,5,0,0,60|60|60|60|60|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -68,76.94,302,14,0,6,0,0,60|60|60|60|60|2|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -71,85.88,344,14,0,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -75,85.88,344,14,0,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -79,86.22,344,13,1,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|0.34|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -83,87.63,344,13,1,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -87,87.63,344,13,1,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -92,87.63,344,12,2,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -95,88.01,344,12,2,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -99,88.01,344,12,2,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -103,88.01,344,12,2,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -107,88.01,344,12,2,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -110,88.01,344,12,2,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -114,88.01,344,11,3,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -118,88.05,344,11,3,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -121,88.05,344,11,3,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -125,88.05,344,11,3,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -128,88.05,344,10,4,6,0,0,60|60|60|60|60|44|0|0|0|0|0|0|0|0|0|0|0|0|0|0,14.52|14.52|14.52|14.52|14.52|11.12|1.75|0.38|0.04|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -133,86.82,334,10,4,6,0,0,57|58|58|58|57|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|14.10|14.10|14.10|13.88|11.54|1.75|0.38|0.04|0.89|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -137,87.67,334,10,4,6,0,0,57|58|58|58|57|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|14.10|14.10|14.10|13.88|11.54|1.75|0.38|0.04|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -141,87.67,334,10,4,6,0,0,57|58|58|58|57|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.88|14.10|14.10|14.10|13.88|11.54|1.75|0.38|0.04|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -144,86.99,330,9,5,6,0,0,56|57|57|57|57|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.88|13.88|13.88|13.88|11.54|1.75|0.38|0.21|1.75|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -148,87.71,330,9,5,6,0,0,56|57|57|57|57|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.88|13.88|13.88|13.88|11.54|1.75|0.38|0.38|1.75|0.55|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -152,87.71,330,9,5,6,0,0,56|57|57|57|57|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.67|13.88|13.88|13.88|13.88|11.54|1.75|0.38|0.38|1.75|0.55|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -156,85.54,319,9,5,6,0,0,54|54|55|55|55|46|0|0|0|0|0|0|0|0|0|0|0|0|0|0,13.25|13.25|13.46|13.46|13.46|11.54|1.75|0.55|0.38|1.75|0.55|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -159,86.52,318,9,3,8,0,0,53|53|54|53|53|46|4|2|0|0|0|0|0|0|0|0|0|0|0|0,13.03|13.03|13.25|13.03|13.03|11.54|2.60|2.17|0.38|1.75|0.55|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -163,85.58,311,8,3,9,0,0,50|50|52|53|51|46|5|2|0|2|0|0|0|0|0|0|0|0|0|0,12.39|12.39|12.82|13.03|12.61|11.54|2.81|2.17|0.38|2.17|0.72|0.38|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -167,86.31,308,8,2,10,0,0,50|50|50|51|51|46|5|2|0|2|0|1|0|0|0|0|0|0|0|0,12.39|12.39|12.39|12.61|12.61|11.54|2.81|2.17|0.38|2.17|0.72|1.96|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -171,86.31,308,8,2,10,0,0,50|50|50|50|51|46|5|2|0|2|0|2|0|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.61|11.54|2.81|2.17|0.38|2.17|0.72|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -174,86.73,310,8,1,11,0,0,50|50|50|50|50|46|5|3|0|3|1|2|0|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.39|11.54|2.81|2.39|0.38|2.39|0.94|2.17|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -178,87.16,311,7,2,11,0,0,50|50|50|50|50|46|6|3|0|3|1|2|0|0|0|0|0|0|0|0,12.39|12.39|12.39|12.39|12.39|11.54|3.02|2.39|0.38|2.39|0.94|2.17|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -181,86.09,306,7,2,11,0,0,49|49|49|50|48|46|6|3|0|3|1|2|0|0|0|0|0|0|0|0,12.18|12.18|12.18|12.39|11.97|11.54|3.02|2.39|0.38|2.39|0.94|2.17|0.21|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -185,87.16,307,7,1,12,0,0,49|49|49|49|48|46|6|3|1|3|2|2|0|0|0|0|0|0|0|0,12.18|12.18|12.18|12.18|11.97|11.54|3.02|2.39|0.60|2.39|1.15|2.17|1.06|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -189,86.95,306,6,1,13,0,0,48|48|48|48|47|46|6|4|1|4|2|3|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.39|1.28|0.00|0.00|0.00|0.00|0.00|0.00|0.00 -193,87.20,307,6,1,13,0,0,48|48|48|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -196,87.20,307,6,1,13,0,0,48|48|48|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -201,87.20,307,5,2,13,0,0,48|48|48|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.00|0.00|0.00|0.00|0.00|0.00 -205,87.24,307,5,2,13,0,0,48|48|48|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -209,87.24,307,5,2,13,0,0,48|48|48|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -213,87.24,307,4,3,13,0,0,48|48|48|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.04|0.00|0.00|0.00|0.00|0.00 -217,87.29,307,4,3,13,0,0,48|48|48|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.97|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -221,87.07,306,4,3,13,0,0,48|48|47|48|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.97|11.97|11.75|11.97|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -225,86.44,303,4,3,13,0,0,47|47|47|47|47|46|6|4|1|4|2|4|1|0|0|0|0|0|0|0,11.75|11.75|11.75|11.75|11.75|11.54|3.02|2.60|0.60|2.60|1.15|2.60|1.28|0.04|0.04|0.04|0.00|0.00|0.00|0.00 -229,86.69,304,3,4,13,0,0,47|47|47|47|45|46|10|4|1|4|2|3|1|0|0|0|0|0|0|0,11.75|11.75|11.75|11.75|11.33|11.54|3.88|2.60|0.60|2.60|1.15|2.39|1.28|0.04|0.04|0.04|0.04|0.00|0.00|0.00 -233,87.20,304,3,4,13,0,0,47|47|47|47|45|46|10|4|1|4|2|3|1|0|0|0|0|0|0|0,11.75|11.75|11.75|11.75|11.33|11.54|3.88|2.60|0.60|2.60|1.15|2.39|1.28|0.04|0.21|0.04|0.38|0.00|0.00|0.00 -237,86.90,301,3,4,13,0,0,46|47|46|46|45|46|10|4|1|4|2|3|1|0|0|0|0|0|0|0,11.54|11.75|11.54|11.54|11.33|11.54|3.88|2.60|0.94|2.60|1.15|2.39|1.28|0.04|0.21|0.04|0.38|0.00|0.00|0.00 -241,86.48,298,2,5,13,0,0,45|46|46|46|44|46|10|4|1|4|2|3|1|0|0|0|0|0|0|0,11.33|11.54|11.54|11.54|11.12|11.54|3.88|2.60|0.94|2.60|1.15|2.39|1.45|0.04|0.21|0.04|0.38|0.04|0.00|0.00 -245,87.07,296,2,4,14,0,0,45|46|45|45|44|46|10|4|1|4|2|2|1|0|0|0|0|1|0|0,11.33|11.54|11.33|11.33|11.12|11.54|3.88|2.60|1.28|2.60|1.15|2.17|1.45|0.04|0.21|0.21|0.89|0.26|0.00|0.00 -248,86.22,292,2,4,14,0,0,44|45|45|44|44|45|10|4|1|4|2|2|1|0|0|0|0|1|0|0,11.12|11.33|11.33|11.12|11.12|11.33|3.88|2.60|1.28|2.60|1.15|2.17|1.45|0.04|0.21|0.21|0.89|0.26|0.00|0.00 -253,86.82,290,2,4,14,0,0,44|45|44|44|43|45|10|4|1|4|2|2|1|0|0|0|0|1|0|0,11.12|11.33|11.12|11.12|10.90|11.33|3.88|2.60|1.45|2.60|1.15|2.17|1.45|0.89|0.21|0.21|0.89|0.26|0.00|0.00 -257,85.24,280,1,5,14,0,0,42|43|42|44|42|43|10|3|1|4|2|2|1|0|0|0|0|1|0|0,10.69|10.90|10.69|11.12|10.69|10.90|3.88|2.39|1.45|2.60|1.15|2.17|1.45|0.89|0.21|0.21|0.89|0.43|0.38|0.00 -261,85.50,274,1,4,15,0,0,39|43|42|42|41|43|10|3|1|3|2|2|1|0|0|0|1|1|0|0,10.05|10.90|10.69|10.69|10.48|10.90|3.88|2.39|1.45|2.39|1.15|2.17|1.45|0.89|0.21|0.21|1.28|0.43|1.75|0.00 -265,84.18,263,1,3,16,0,0,39|40|40|41|39|40|10|2|1|2|2|2|1|0|0|0|1|1|2|0,10.05|10.26|10.26|10.48|10.05|10.26|3.88|2.17|1.45|2.17|1.15|2.17|1.45|0.89|1.24|0.21|1.28|0.43|2.17|0.00 -269,85.03,255,0,3,17,0,0,37|38|38|38|38|40|10|2|1|2|2|2|1|0|0|0|1|1|2|2,9.63|9.84|9.84|9.84|9.84|10.26|3.88|2.17|1.96|2.17|1.49|2.17|1.45|0.89|1.24|0.21|1.28|0.43|2.17|2.13 -272,86.73,258,0,1,19,0,0,38|38|38|38|37|38|10|2|1|2|3|3|1|1|0|1|1|2|2|2,9.84|9.84|9.84|9.84|9.63|9.84|3.88|2.17|1.96|2.17|2.39|2.39|1.45|1.11|1.24|0.43|1.28|0.98|2.17|2.17 -276,85.03,250,0,1,19,0,0,38|35|36|37|37|35|10|2|1|3|3|3|1|1|0|1|1|2|2|2,9.84|9.20|9.41|9.63|9.63|9.20|3.88|2.17|1.96|2.39|2.39|2.39|1.45|1.11|1.24|0.43|1.28|0.98|2.17|2.17 -280,85.92,251,0,0,20,0,0,36|35|37|35|36|36|11|3|1|3|4|3|1|1|1|1|1|2|2|2,9.41|9.20|9.63|9.20|9.41|9.41|4.09|2.39|1.96|2.39|2.60|2.39|1.45|1.11|1.45|1.11|1.28|0.98|2.17|2.17 -283,86.35,253,0,0,20,0,0,36|35|37|35|36|36|11|3|1|3|4|3|3|1|1|1|1|2|2|2,9.41|9.20|9.63|9.20|9.41|9.41|4.09|2.39|1.96|2.39|2.60|2.39|1.87|1.11|1.45|1.11|1.28|0.98|2.17|2.17 -286,84.86,246,0,0,20,0,0,35|34|35|34|35|35|11|3|1|3|4|3|3|1|1|1|1|2|2|2,9.20|8.99|9.20|8.99|9.20|9.20|4.09|2.39|1.96|2.39|2.60|2.39|1.87|1.11|1.45|1.11|1.28|0.98|2.17|2.17 -290,85.29,248,0,0,20,0,0,35|34|35|34|35|35|11|3|2|3|4|3|3|1|1|1|2|2|2|2,9.20|8.99|9.20|8.99|9.20|9.20|4.09|2.39|2.17|2.39|2.60|2.39|1.87|1.11|1.45|1.11|1.49|0.98|2.17|2.17 -293,86.18,249,0,0,20,0,0,35|33|35|33|35|35|11|3|2|3|4|5|3|1|1|1|3|2|2|2,9.20|8.77|9.20|8.77|9.20|9.20|4.09|2.39|2.17|2.39|2.60|2.81|1.87|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -297,85.54,246,0,0,20,0,0,34|33|34|33|34|34|11|3|2|3|4|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.09|2.39|2.17|2.39|2.60|3.02|1.87|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -301,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -305,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -309,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -313,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -317,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -320,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -324,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -328,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -332,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -336,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -340,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -344,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -348,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -352,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -356,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -360,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -364,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -368,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -372,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -376,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -380,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -384,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -388,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -392,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -396,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -400,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -404,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -408,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -412,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -415,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -419,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -423,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -427,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -431,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -435,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -439,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -442,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -445,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -449,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -453,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -457,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -461,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -465,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -469,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -473,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -477,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -481,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -485,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -489,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -493,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -497,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -501,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -505,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -509,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -513,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -517,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -521,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -526,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -530,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -534,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -538,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -542,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -546,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -550,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -554,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -558,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -562,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -566,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -570,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -574,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -577,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -581,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -585,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -589,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -593,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -597,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -601,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -605,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -609,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -613,86.90,250,0,0,20,0,0,34|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,8.99|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -617,78.81,216,0,0,19,1,0,0|33|34|33|34|34|12|3|2|3|7|6|3|1|1|1|3|2|2|2,0.89|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|1.11|1.45|1.11|2.39|0.98|2.17|2.17 -621,79.58,218,0,0,19,1,0,0|33|34|33|34|34|12|3|2|3|7|6|3|3|1|1|3|2|2|2,0.38|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|0.98|2.17|2.17 -625,80.77,219,0,0,19,0,0,0|33|34|33|34|34|12|3|2|3|7|6|3|3|1|1|3|3|2|2,0.17|8.77|8.99|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -628,70.29,178,0,0,18,1,0,0|0|26|33|34|34|12|3|2|3|7|6|3|3|1|1|3|3|2|2,0.00|0.17|7.28|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -631,69.49,175,0,0,18,1,0,0|0|23|33|34|34|12|3|2|3|7|6|3|3|1|1|3|3|2|2,0.00|0.00|6.64|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -635,68.85,172,0,0,18,1,0,0|0|20|33|34|34|12|3|2|3|7|6|3|3|1|1|3|3|2|2,0.00|0.00|6.01|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -638,64.25,152,0,0,17,1,0,0|0|0|33|34|34|12|3|2|3|7|6|3|3|1|1|3|3|2|2,0.00|0.00|1.41|8.77|8.99|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -641,47.00,85,0,0,15,3,0,0|0|0|0|0|34|12|3|2|3|7|6|3|3|1|1|3|3|2|2,0.00|0.00|0.00|0.34|1.58|8.99|4.30|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -644,35.54,45,0,0,14,4,0,0|0|0|0|0|0|6|3|2|3|7|6|3|3|1|1|3|3|2|2,0.00|0.00|0.00|0.17|0.34|0.21|3.02|2.39|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -647,30.69,36,0,0,12,5,0,0|0|0|0|0|0|0|0|2|3|7|6|3|3|1|1|3|3|2|2,0.00|0.00|0.00|0.17|0.17|0.04|0.34|0.55|2.17|2.39|3.24|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -649,26.38,29,0,0,10,5,0,0|0|0|0|0|0|0|0|0|0|5|6|3|3|1|1|3|3|2|2,0.00|0.00|0.00|0.00|0.00|0.04|0.34|0.00|0.17|1.41|2.81|3.02|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -651,22.38,20,0,0,9,4,0,0|0|0|0|0|0|0|0|0|0|0|2|3|3|1|1|3|3|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.17|0.38|0.89|2.17|2.39|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -653,18.34,15,0,0,7,5,0,0|0|0|0|0|0|0|0|0|0|0|0|0|3|1|1|3|3|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.34|0.38|0.17|1.06|2.39|1.45|1.11|2.39|2.39|2.17|2.17 -655,15.31,11,0,0,5,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|3|3|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.38|0.17|0.68|0.51|0.85|1.11|2.39|2.39|2.17|2.17 -656,12.71,7,0,0,3,2,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.38|0.17|0.68|0.34|0.17|0.17|1.75|2.39|2.17|2.17 -658,10.03,5,0,0,3,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|2|2,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.21|0.17|0.51|0.34|0.17|0.00|0.55|1.58|2.17|2.17 -660,6.67,1,0,0,1,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.34|0.17|0.00|0.51|0.51|0.85|1.96 -661,4.37,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.00|0.51|0.51|0.51|0.51 -663,4.03,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.51|0.51|0.51|0.34 -664,3.34,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.34|0.34|0.17|0.34 -665,2.49,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17 -666,2.49,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17 -668,2.49,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17|0.17 -669,2.32,0,0,0,0,1,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.17 -670,2.15,0,0,0,0,0,0,0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-result.csv b/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-result.csv deleted file mode 100644 index ce562482..00000000 --- a/doc/edl/experiment/result/case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|483|28|610,610,608,597,586,576,488,488,464,486,477,486,464,383,375,384,395,415,395,392|71.64 -AVG|483|28|N/A|71.64 diff --git a/doc/edl/experiment/result/case1.png b/doc/edl/experiment/result/case1.png deleted file mode 100644 index 99483598..00000000 Binary files a/doc/edl/experiment/result/case1.png and /dev/null differ diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case1-pass0.csv deleted file mode 100644 index a198cfe8..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -699|1|719,707,704,699,688,681|63.14 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case1-result.csv deleted file mode 100644 index 394654b4..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|699|1|719,707,704,699,688,681|63.14 -AVG|699|1|N/A|63.14 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case2-result.csv deleted file mode 100644 index 4eb91449..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case2-result.csv +++ /dev/null @@ -1,31 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -6|400|11|57.30 -12|400|15|58.71 -18|400|30|63.14 -24|400|45|68.08 -29|400|60|72.98 -40|400|75|77.96 -47|400|90|82.90 -115|309|90|71.27 -121|300|90|70.12 -204|222|90|60.16 -208|207|90|58.24 -213|201|90|57.47 -218|200|90|57.35 -298|189|90|55.94 -302|107|90|45.46 -309|103|90|44.95 -317|100|90|44.57 -390|149|90|50.83 -397|200|90|57.35 -483|227|90|60.80 -489|300|90|70.12 -577|389|90|81.50 -582|400|90|82.90 -705|296|90|69.61 -711|190|90|56.07 -715|78|90|41.76 -719|6|90|32.56 -722|3|90|32.18 -725|1|41|19.61 -728|0|0|4.41 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case2.log deleted file mode 100644 index c5a514ea..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_0/mnist-case2.log +++ /dev/null @@ -1,131 +0,0 @@ -6,57.30,11,5,0,1,0,400,11|0|0|0|0|0,4.05|0.00|0.00|0.00|0.00|0.00 -12,58.71,15,4,1,1,0,400,15|0|0|0|0|0,4.94|0.51|0.00|0.00|0.00|0.00 -18,63.14,30,4,0,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -24,68.08,45,3,0,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -29,72.98,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.90|0.00|0.00 -35,74.38,60,1,1,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|1.36|0.00 -40,77.96,75,1,0,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.00 -47,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -53,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -61,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -67,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -73,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -80,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -87,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -94,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -101,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -108,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -115,71.27,90,0,0,6,0,309,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -121,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -127,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -132,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -136,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -142,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -148,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -154,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -160,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -165,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -171,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -177,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -183,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -189,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -194,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -199,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -204,60.16,90,0,0,6,0,222,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -208,58.24,90,0,0,6,0,207,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -213,57.47,90,0,0,6,0,201,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -218,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -223,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -228,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -233,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -239,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -245,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -250,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -255,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -261,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -266,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -272,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -277,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -283,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -288,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -293,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -298,55.94,90,0,0,6,0,189,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -302,45.46,90,0,0,6,0,107,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -309,44.95,90,0,0,6,0,103,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -317,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -321,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -328,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -334,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -340,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -345,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -352,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -361,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -367,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -372,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -377,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -381,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -385,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -390,50.83,90,0,0,6,0,149,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -397,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -403,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -409,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -414,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -420,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -425,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -431,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -437,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -443,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -447,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -452,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -457,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -462,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -467,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -472,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -477,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -483,60.80,90,0,0,6,0,227,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -489,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -494,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -500,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -507,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -513,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -519,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -525,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -531,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -536,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -542,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -547,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -553,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -558,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -566,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -572,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -577,81.50,90,0,0,6,0,389,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -582,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -589,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -595,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -600,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -606,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -613,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -619,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -627,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -633,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -638,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -643,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -649,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -655,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -661,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -668,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -675,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -681,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -688,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -694,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -699,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -705,69.61,90,0,0,6,0,296,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -711,56.07,90,0,0,6,0,190,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -715,41.76,90,0,0,6,0,78,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -719,32.56,90,0,0,6,0,6,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -722,32.18,90,0,0,6,0,3,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -725,19.61,41,0,0,4,2,1,0|0|1|10|15|15,0.55|1.06|1.96|3.88|4.94|4.94 -728,4.41,0,0,0,0,6,0,0|0|0|0|0|0,0.34|0.17|0.17|0.85|0.55|0.17 -731,3.39,0,0,0,0,6,0,0|0|0|0|0|0,0.17|0.00|0.00|0.68|0.21|0.17 -734,2.32,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.17 -737,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case1-pass0.csv deleted file mode 100644 index 38bd09e4..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -700|0|713,712,706,696,690,684|62.29 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case1-result.csv deleted file mode 100644 index 1ee44226..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|700|0|713,712,706,696,690,684|62.29 -AVG|700|0|N/A|62.29 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2-result.csv deleted file mode 100644 index c43d40a8..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2-result.csv +++ /dev/null @@ -1,30 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -9|400|8|56.67 -14|400|30|63.14 -20|400|32|65.14 -25|400|45|68.08 -30|400|60|73.02 -36|400|73|77.53 -42|400|83|81.41 -49|400|90|82.90 -115|399|90|82.77 -121|305|90|70.76 -127|300|90|70.12 -208|220|90|59.90 -213|201|90|57.47 -218|200|90|57.35 -299|132|90|48.66 -306|104|90|45.08 -311|100|90|44.57 -387|102|90|44.83 -392|198|90|57.09 -396|200|90|57.35 -482|221|90|60.03 -491|300|90|70.12 -576|386|90|81.11 -583|400|90|82.90 -711|188|90|55.81 -715|58|90|39.20 -719|12|90|33.33 -722|2|57|24.68 -726|0|0|5.69 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2.log deleted file mode 100644 index 4a77991c..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2.log +++ /dev/null @@ -1,132 +0,0 @@ -9,56.67,8,5,0,1,0,400,8|0|0|0|0|0,3.41|0.00|0.00|0.00|0.00|0.00 -14,63.14,30,4,0,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -20,65.14,32,3,0,3,0,400,15|15|2|0|0|0,4.94|4.94|2.00|0.00|0.00|0.00 -25,68.08,45,2,1,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -30,73.02,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.00|0.00 -36,77.53,73,1,0,5,0,400,15|15|15|15|13|0,4.94|4.94|4.94|4.94|4.51|0.00 -42,81.41,83,0,0,6,0,400,15|15|15|15|15|8,4.94|4.94|4.94|4.94|4.94|3.45 -49,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -55,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -62,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -69,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -75,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -81,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -86,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -94,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -100,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -106,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -115,82.77,90,0,0,6,0,399,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -121,70.76,90,0,0,6,0,305,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -127,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -134,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -140,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -146,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -151,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -157,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -163,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -168,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -174,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -179,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -185,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -191,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -197,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -202,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -208,59.90,90,0,0,6,0,220,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -213,57.47,90,0,0,6,0,201,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -218,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -223,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -228,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -233,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -238,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -244,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -250,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -254,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -259,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -264,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -269,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -273,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -278,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -284,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -289,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -294,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -299,48.66,90,0,0,6,0,132,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -306,45.08,90,0,0,6,0,104,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -311,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -315,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -319,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -324,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -329,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -334,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -338,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -343,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -348,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -352,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -356,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -360,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -365,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -369,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -374,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -378,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -383,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -387,44.83,90,0,0,6,0,102,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -392,57.09,90,0,0,6,0,198,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -396,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -402,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -407,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -412,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -417,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -422,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -427,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -432,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -436,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -443,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -449,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -455,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -460,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -464,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -469,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -475,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -482,60.03,90,0,0,6,0,221,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -491,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -497,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -502,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -509,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -514,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -520,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -526,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -532,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -538,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -544,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -551,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -557,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -563,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -570,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -576,81.11,90,0,0,6,0,386,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -583,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -589,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -594,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -600,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -606,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -613,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -619,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -627,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -633,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -639,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -647,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -653,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -660,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -665,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -671,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -676,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -682,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -689,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -704,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -711,55.81,90,0,0,6,0,188,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -715,39.20,90,0,0,6,0,58,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -719,33.33,90,0,0,6,0,12,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -722,24.68,57,0,0,5,1,2,0|3|9|15|15|15,1.41|2.39|3.66|4.94|4.94|4.94 -726,5.69,0,0,0,0,6,0,0|0|0|0|0|0,0.34|0.38|0.38|0.85|0.51|1.06 -728,3.94,0,0,0,0,5,0,0|0|0|0|0|0,0.34|0.38|0.21|0.34|0.34|0.17 -732,2.83,0,0,0,0,4,0,0|0|0|0|0|0,0.17|0.00|0.00|0.17|0.17|0.17 -735,2.15,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -739,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case1-pass0.csv deleted file mode 100644 index cfca9859..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -702|1|717,712,707,702,691,685|62.23 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case1-result.csv deleted file mode 100644 index 4d891eff..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|702|1|717,712,707,702,691,685|62.23 -AVG|702|1|N/A|62.23 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case2-result.csv deleted file mode 100644 index 5cc64f77..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case2-result.csv +++ /dev/null @@ -1,32 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.26 -10|400|15|58.20 -15|400|23|61.65 -20|400|30|63.14 -24|400|45|68.08 -29|400|55|71.74 -34|400|60|73.02 -40|400|75|77.96 -46|400|88|82.47 -52|400|90|82.90 -113|388|90|81.37 -118|301|90|70.25 -125|300|90|70.12 -205|237|90|62.07 -210|204|90|57.86 -215|200|90|57.35 -295|141|90|49.81 -301|102|90|44.83 -305|100|90|44.57 -388|170|90|53.51 -392|200|90|57.35 -483|300|90|70.12 -575|308|90|71.15 -581|400|90|82.90 -706|344|90|75.75 -711|220|90|59.90 -715|128|90|48.15 -719|50|90|38.18 -723|10|90|33.07 -727|1|53|22.13 -731|0|0|5.52 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case2.log deleted file mode 100644 index 9299dffa..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_2/mnist-case2.log +++ /dev/null @@ -1,137 +0,0 @@ -5,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -10,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -15,61.65,23,4,0,2,0,400,15|8|0|0|0|0,4.94|3.45|0.00|0.00|0.00|0.00 -20,63.14,30,3,1,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -24,68.08,45,3,0,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -29,71.74,55,2,0,4,0,400,15|15|15|10|0|0,4.94|4.94|4.94|3.66|0.00|0.00 -34,73.02,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.00|0.00 -40,77.96,75,1,0,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.00 -46,82.47,88,0,0,6,0,400,15|15|15|15|15|13,4.94|4.94|4.94|4.94|4.94|4.51 -52,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -58,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -63,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -73,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -80,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -85,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -93,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -100,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -106,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -113,81.37,90,0,0,6,0,388,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -118,70.25,90,0,0,6,0,301,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -125,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -131,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -136,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -142,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -148,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -153,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -159,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -165,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -171,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -176,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -182,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -188,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -193,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -199,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -205,62.07,90,0,0,6,0,237,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -210,57.86,90,0,0,6,0,204,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -215,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -219,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -224,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -229,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -235,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -241,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -245,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -252,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -256,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -260,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -265,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -271,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -276,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -280,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -286,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -291,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -295,49.81,90,0,0,6,0,141,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -301,44.83,90,0,0,6,0,102,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -305,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -311,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -316,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -321,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -325,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -329,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -334,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -338,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -343,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -347,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -351,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -355,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -359,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -364,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -369,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -373,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -378,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -383,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -388,53.51,90,0,0,6,0,170,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -392,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -398,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -403,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -408,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -416,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -421,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -426,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -432,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -438,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -443,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -447,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -451,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -456,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -462,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -468,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -472,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -478,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -483,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -489,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -494,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -500,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -505,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -511,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -516,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -526,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -532,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -538,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -543,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -549,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -556,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -563,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -569,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -575,71.15,90,0,0,6,0,308,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -581,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -587,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -592,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -598,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -604,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -609,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -615,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -621,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -627,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -633,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -640,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -646,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -652,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -659,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -667,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -675,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -681,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -688,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -694,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -700,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -706,75.75,90,0,0,6,0,344,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -711,59.90,90,0,0,6,0,220,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -715,48.15,90,0,0,6,0,128,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -719,38.18,90,0,0,6,0,50,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -723,33.07,90,0,0,6,0,10,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -727,22.13,53,0,0,4,2,1,0|0|8|15|15|15,0.85|0.72|3.45|4.94|4.94|4.94 -731,5.52,0,0,0,0,6,0,0|0|0|0|0|0,0.51|0.38|0.38|0.51|0.21|1.36 -733,3.09,0,0,0,0,6,0,0|0|0|0|0|0,0.34|0.17|0.04|0.34|0.04|0.00 -736,2.36,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.17|0.04|0.00 -740,2.15,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -743,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case1-pass0.csv deleted file mode 100644 index 20db9878..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -705|0|726,715,706,701,695,688|63.08 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case1-result.csv deleted file mode 100644 index 8cd8ffb9..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|705|0|726,715,706,701,695,688|63.08 -AVG|705|0|N/A|63.08 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case2-result.csv deleted file mode 100644 index 72303112..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case2-result.csv +++ /dev/null @@ -1,31 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -6|400|1|54.66 -11|400|15|58.20 -17|400|30|63.10 -26|400|44|67.82 -31|400|60|73.02 -37|400|75|77.96 -44|400|83|81.20 -51|400|89|82.69 -58|400|90|82.90 -112|345|90|75.87 -117|304|90|70.64 -123|300|90|70.12 -206|216|90|59.39 -211|204|90|57.86 -215|200|90|57.35 -298|113|90|46.23 -302|103|90|44.95 -307|100|90|44.57 -390|150|90|50.96 -394|200|90|57.35 -485|255|90|64.37 -491|300|90|70.12 -576|340|90|75.23 -582|400|90|82.90 -707|304|90|70.64 -713|149|90|50.83 -716|36|90|36.39 -720|8|90|32.82 -726|3|83|30.69 -732|0|0|3.94 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case2.log deleted file mode 100644 index 053274c6..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_3/mnist-case2.log +++ /dev/null @@ -1,132 +0,0 @@ -6,54.66,1,5,0,1,0,400,1|0|0|0|0|0,1.41|0.00|0.00|0.00|0.00|0.00 -11,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -17,63.10,30,4,0,2,0,400,15|15|0|0|0|0,4.94|4.90|0.00|0.00|0.00|0.00 -26,67.82,44,3,0,3,0,400,15|15|14|0|0|0,4.94|4.94|4.68|0.00|0.00|0.00 -31,73.02,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.00|0.00 -37,77.96,75,1,0,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.00 -44,81.20,83,0,0,6,0,400,15|15|15|15|15|8,4.94|4.94|4.94|4.94|4.94|3.24 -51,82.69,89,0,0,6,0,400,15|15|15|15|15|14,4.94|4.94|4.94|4.94|4.94|4.73 -58,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -63,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -68,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -74,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -81,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -88,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -94,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -100,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -106,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -112,75.87,90,0,0,6,0,345,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -117,70.64,90,0,0,6,0,304,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -123,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -128,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -133,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -139,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -147,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -153,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -158,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -164,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -170,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -176,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -182,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -188,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -194,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -200,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -206,59.39,90,0,0,6,0,216,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -211,57.86,90,0,0,6,0,204,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -215,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -221,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -226,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -231,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -237,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -242,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -247,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -252,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -258,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -264,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -268,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -272,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -276,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -282,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -287,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -293,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -298,46.23,90,0,0,6,0,113,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -302,44.95,90,0,0,6,0,103,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -307,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -311,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -315,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -320,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -324,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -328,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -335,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -339,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -343,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -348,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -353,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -357,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -361,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -366,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -371,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -376,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -381,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -386,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -390,50.96,90,0,0,6,0,150,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -394,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -399,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -404,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -409,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -415,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -420,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -425,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -430,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -437,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -443,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -448,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -453,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -458,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -462,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -467,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -472,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -478,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -485,64.37,90,0,0,6,0,255,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -491,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -497,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -503,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -509,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -515,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -521,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -527,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -534,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -542,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -551,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -556,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -564,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -570,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -576,75.23,90,0,0,6,0,340,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -582,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -588,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -594,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -601,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -607,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -615,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -621,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -628,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -633,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -639,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -645,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -652,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -660,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -666,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -672,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -678,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -683,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -688,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -694,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -700,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -707,70.64,90,0,0,6,0,304,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -713,50.83,90,0,0,6,0,149,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -716,36.39,90,0,0,6,0,36,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -720,32.82,90,0,0,6,0,8,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -726,30.69,83,0,0,6,0,3,8|15|15|15|15|15,3.45|4.94|4.94|4.94|4.94|4.94 -732,3.94,0,0,0,0,6,0,0|0|0|0|0|0,0.17|0.38|0.38|0.34|0.17|0.34 -735,2.15,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -738,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case1-pass0.csv deleted file mode 100644 index a448333b..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -702|2|722,714,708,697,695,681|62.93 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case1-result.csv deleted file mode 100644 index af0d2273..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|702|2|722,714,708,697,695,681|62.93 -AVG|702|2|N/A|62.93 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case2-result.csv deleted file mode 100644 index 1a732531..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case2-result.csv +++ /dev/null @@ -1,32 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.26 -9|400|15|58.20 -17|400|30|63.14 -23|400|34|64.67 -28|400|45|68.08 -34|400|60|73.02 -39|400|70|76.85 -45|400|75|77.96 -53|400|90|82.90 -114|387|90|81.24 -119|308|90|71.15 -124|302|90|70.38 -131|300|90|70.12 -213|235|90|61.82 -217|205|90|57.99 -221|201|90|57.47 -229|200|90|57.35 -303|191|90|56.20 -310|104|90|45.08 -315|100|90|44.57 -400|200|90|57.35 -492|300|90|70.12 -583|381|90|80.47 -591|400|90|82.90 -708|320|90|72.68 -715|222|90|60.16 -720|91|90|43.42 -724|11|90|33.20 -728|7|87|31.88 -731|0|12|10.03 -734|0|0|4.07 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case2.log deleted file mode 100644 index a5a730fa..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_4/mnist-case2.log +++ /dev/null @@ -1,131 +0,0 @@ -5,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -9,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -13,58.54,15,4,1,1,0,400,15|0|0|0|0|0,4.94|0.34|0.00|0.00|0.00|0.00 -17,63.14,30,4,0,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -23,64.67,34,3,0,3,0,400,15|15|4|0|0|0,4.94|4.94|1.53|0.00|0.00|0.00 -28,68.08,45,3,0,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -34,73.02,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.00|0.00 -39,76.85,70,1,0,5,0,400,15|15|15|15|10|0,4.94|4.94|4.94|4.94|3.83|0.00 -45,77.96,75,0,1,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.00 -53,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -60,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -66,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -75,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -82,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -88,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -95,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -102,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -109,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -114,81.24,90,0,0,6,0,387,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -119,71.15,90,0,0,6,0,308,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -124,70.38,90,0,0,6,0,302,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -131,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -136,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -142,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -147,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -151,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -157,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -163,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -169,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -174,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -179,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -185,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -192,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -199,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -207,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -213,61.82,90,0,0,6,0,235,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -217,57.99,90,0,0,6,0,205,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -221,57.47,90,0,0,6,0,201,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -229,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -234,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -241,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -246,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -251,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -256,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -261,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -266,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -271,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -277,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -282,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -287,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -292,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -297,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -303,56.20,90,0,0,6,0,191,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -310,45.08,90,0,0,6,0,104,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -315,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -320,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -325,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -331,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -335,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -340,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -345,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -351,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -355,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -359,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -364,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -369,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -374,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -379,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -384,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -388,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -394,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -400,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -404,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -410,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -415,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -421,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -427,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -433,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -437,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -442,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -449,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -454,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -459,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -464,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -469,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -475,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -480,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -486,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -492,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -497,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -503,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -509,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -515,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -521,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -528,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -535,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -541,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -546,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -552,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -558,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -563,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -570,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -577,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -583,80.47,90,0,0,6,0,381,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -591,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -597,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -604,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -610,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -618,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -625,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -631,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -638,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -646,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -652,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -658,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -664,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -671,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -678,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -686,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -691,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -697,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -703,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -708,72.68,90,0,0,6,0,320,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -715,60.16,90,0,0,6,0,222,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -720,43.42,90,0,0,6,0,91,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -724,33.20,90,0,0,6,0,11,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -728,31.88,87,0,0,6,0,7,12|15|15|15|15|15,4.13|4.94|4.94|4.94|4.94|4.94 -731,10.03,12,0,0,2,4,0,0|0|0|0|1|11,0.34|0.51|0.34|1.19|1.41|4.09 -734,4.07,0,0,0,0,4,0,0|0|0|0|0|0,0.17|0.51|0.00|0.68|0.51|0.04 -737,3.05,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.17|0.00|0.51|0.17|0.04 -740,2.36,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.17|0.04 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case1-pass0.csv deleted file mode 100644 index f4de1878..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -701|3|723,713,706,700,688,681|62.48 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case1-result.csv deleted file mode 100644 index 30731243..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|701|3|723,713,706,700,688,681|62.48 -AVG|701|3|N/A|62.48 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case2-result.csv deleted file mode 100644 index 902c6b87..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case2-result.csv +++ /dev/null @@ -1,30 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.60 -10|400|15|58.20 -20|400|30|63.14 -30|400|45|68.08 -36|400|59|72.64 -42|400|60|73.53 -48|400|75|77.96 -55|400|90|82.90 -125|311|90|71.53 -131|302|90|70.38 -136|300|90|70.12 -214|288|90|68.59 -219|204|90|57.86 -223|201|90|57.47 -228|200|90|57.35 -306|129|90|48.28 -311|106|90|45.34 -316|100|90|44.57 -401|200|90|57.35 -493|297|90|69.74 -500|300|90|70.12 -587|400|90|82.90 -712|322|90|72.93 -717|194|90|56.58 -721|90|90|43.29 -725|9|90|32.94 -729|2|90|32.05 -733|1|42|20.00 -736|0|0|4.41 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case2.log deleted file mode 100644 index 3fe74126..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_5/mnist-case2.log +++ /dev/null @@ -1,133 +0,0 @@ -5,53.60,0,5,1,0,0,400,0|0|0|0|0|0,0.34|0.00|0.00|0.00|0.00|0.00 -10,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -15,58.71,15,4,1,1,0,400,15|0|0|0|0|0,4.94|0.51|0.00|0.00|0.00|0.00 -20,63.14,30,4,0,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -25,63.14,30,3,1,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -30,68.08,45,3,0,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -36,72.64,59,2,0,4,0,400,15|15|15|14|0|0,4.94|4.94|4.94|4.56|0.00|0.00 -42,73.53,60,1,1,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.51|0.00 -48,77.96,75,1,0,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.00 -55,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -62,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -69,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -76,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -83,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -89,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -96,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -102,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -108,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -113,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -119,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -125,71.53,90,0,0,6,0,311,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -131,70.38,90,0,0,6,0,302,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -136,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -142,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -148,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -153,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -159,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -165,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -172,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -178,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -184,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -190,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -196,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -201,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -208,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -214,68.59,90,0,0,6,0,288,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -219,57.86,90,0,0,6,0,204,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -223,57.47,90,0,0,6,0,201,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -228,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -233,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -238,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -244,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -249,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -254,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -260,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -266,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -272,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -277,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -282,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -286,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -297,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -302,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -306,48.28,90,0,0,6,0,129,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -311,45.34,90,0,0,6,0,106,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -316,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -320,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -325,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -330,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -335,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -340,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -344,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -349,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -353,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -358,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -362,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -367,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -372,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -378,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -382,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -386,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -390,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -395,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -401,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -406,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -413,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -419,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -424,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -430,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -435,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -440,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -446,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -451,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -456,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -462,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -468,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -472,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -477,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -481,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -487,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -493,69.74,90,0,0,6,0,297,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -500,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -505,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -511,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -517,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -524,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -530,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -536,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -542,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -548,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -554,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -561,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -569,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -575,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -581,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -587,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -593,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -599,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -606,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -613,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -619,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -625,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -631,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -637,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -644,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -650,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -658,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -665,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -670,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -677,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -686,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -692,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -699,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -705,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -712,72.93,90,0,0,6,0,322,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -717,56.58,90,0,0,6,0,194,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -721,43.29,90,0,0,6,0,90,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -725,32.94,90,0,0,6,0,9,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -729,32.05,90,0,0,6,0,2,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -733,20.00,42,0,0,4,2,1,0|0|3|9|15|15,0.89|0.89|2.39|3.66|4.94|4.94 -736,4.41,0,0,0,0,6,0,0|0|0|0|0|0,0.51|0.34|0.68|0.38|0.17|0.17 -739,3.51,0,0,0,0,6,0,0|0|0|0|0|0,0.17|0.17|0.34|0.34|0.17|0.17 -742,2.83,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.17|0.17|0.17|0.17 -746,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case1-pass0.csv deleted file mode 100644 index 96da062c..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -701|2|715,715,705,699,687,685|62.37 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case1-result.csv deleted file mode 100644 index 923c83ed..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|701|2|715,715,705,699,687,685|62.37 -AVG|701|2|N/A|62.37 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case2-result.csv deleted file mode 100644 index ffdde3ca..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case2-result.csv +++ /dev/null @@ -1,31 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -8|400|0|54.11 -14|400|16|59.09 -19|400|30|63.14 -24|400|45|68.08 -30|400|58|72.55 -36|400|60|74.55 -42|400|75|77.96 -47|400|90|82.90 -112|328|90|73.70 -118|301|90|70.25 -123|300|90|70.12 -203|291|90|68.97 -209|203|90|57.73 -215|201|90|57.47 -220|200|90|57.35 -299|101|90|44.70 -303|100|90|44.57 -387|151|90|51.09 -393|200|90|57.35 -479|229|90|61.05 -485|300|90|70.12 -578|363|90|78.17 -585|400|90|82.90 -710|355|90|77.15 -714|122|90|47.38 -718|36|90|36.39 -721|10|90|33.07 -725|5|81|30.52 -729|0|7|9.39 -732|0|0|3.68 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case2.log deleted file mode 100644 index 262a70bf..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_6/mnist-case2.log +++ /dev/null @@ -1,133 +0,0 @@ -8,54.11,0,5,1,0,0,400,0|0|0|0|0|0,0.85|0.00|0.00|0.00|0.00|0.00 -14,59.09,16,4,0,2,0,400,15|1|0|0|0|0,4.94|0.89|0.00|0.00|0.00|0.00 -19,63.14,30,4,0,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -24,68.08,45,3,0,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -30,72.55,58,2,0,4,0,400,15|15|15|13|0|0,4.94|4.94|4.94|4.47|0.00|0.00 -36,74.55,60,1,1,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|1.53|0.00 -42,77.96,75,0,1,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.00 -47,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -64,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -70,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -75,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -81,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -88,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -95,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -101,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -107,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -112,73.70,90,0,0,6,0,328,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -118,70.25,90,0,0,6,0,301,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -123,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -129,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -135,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -142,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -150,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -156,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -163,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -170,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -176,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -182,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -187,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -192,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -197,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -203,68.97,90,0,0,6,0,291,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -209,57.73,90,0,0,6,0,203,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -215,57.47,90,0,0,6,0,201,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -220,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -225,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -231,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -236,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -241,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -246,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -252,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -258,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -263,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -268,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -272,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -278,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -283,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -288,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -294,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -299,44.70,90,0,0,6,0,101,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -303,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -307,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -311,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -316,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -321,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -325,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -330,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -334,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -339,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -344,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -348,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -352,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -357,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -361,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -368,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -373,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -377,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -382,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -387,51.09,90,0,0,6,0,151,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -393,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -398,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -403,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -409,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -413,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -418,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -424,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -430,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -435,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -440,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -446,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -452,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -456,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -464,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -469,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -473,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -479,61.05,90,0,0,6,0,229,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -485,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -491,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -496,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -501,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -507,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -513,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -519,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -524,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -529,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -535,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -541,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -547,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -554,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -560,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -565,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -572,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -578,78.17,90,0,0,6,0,363,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -585,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -591,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -596,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -602,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -608,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -614,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -620,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -626,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -632,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -637,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -644,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -650,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -657,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -662,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -668,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -674,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -680,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -686,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -692,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -698,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -710,77.15,90,0,0,6,0,355,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -714,47.38,90,0,0,6,0,122,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -718,36.39,90,0,0,6,0,36,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -721,33.07,90,0,0,6,0,10,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -725,30.52,81,0,0,6,0,5,6|15|15|15|15|15,3.02|4.94|4.94|4.94|4.94|4.94 -729,9.39,7,0,0,1,5,0,0|0|0|0|0|7,0.34|0.68|0.38|1.36|1.24|3.24 -732,3.68,0,0,0,0,6,0,0|0|0|0|0|0,0.34|0.00|0.17|0.68|0.17|0.17 -735,3.00,0,0,0,0,4,0,0|0|0|0|0|0,0.17|0.00|0.00|0.34|0.17|0.17 -737,2.49,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.17|0.17 -740,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case1-pass0.csv deleted file mode 100644 index c0a57e73..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -701|2|719,714,703,698,691,683|62.74 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case1-result.csv deleted file mode 100644 index 0a801f13..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|701|2|719,714,703,698,691,683|62.74 -AVG|701|2|N/A|62.74 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case2-result.csv deleted file mode 100644 index 6747d73f..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case2-result.csv +++ /dev/null @@ -1,32 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.26 -10|400|15|58.20 -15|400|24|61.82 -20|400|30|63.14 -26|400|45|68.08 -31|400|60|73.02 -38|400|63|75.36 -44|400|75|77.96 -49|400|90|82.90 -117|307|90|71.02 -122|300|90|70.12 -210|204|90|57.86 -215|201|90|57.47 -220|200|90|57.35 -299|115|90|46.49 -304|104|90|45.08 -312|100|90|44.57 -391|148|90|50.70 -396|200|90|57.35 -487|278|90|67.31 -492|300|90|70.12 -581|399|90|82.77 -588|400|90|82.90 -703|384|90|80.86 -708|273|90|66.67 -713|170|90|53.51 -717|78|90|41.76 -722|13|90|33.45 -726|4|83|30.81 -729|0|1|5.73 -732|0|0|3.77 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case2.log deleted file mode 100644 index 11c61a7c..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_7/mnist-case2.log +++ /dev/null @@ -1,133 +0,0 @@ -5,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -10,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -15,61.82,24,4,0,2,0,400,15|9|0|0|0|0,4.94|3.62|0.00|0.00|0.00|0.00 -20,63.14,30,3,1,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -26,68.08,45,3,0,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -31,73.02,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.00|0.00 -38,75.36,63,1,0,5,0,400,15|15|15|15|3|0,4.94|4.94|4.94|4.94|2.34|0.00 -44,77.96,75,0,1,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.00 -49,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -56,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -62,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -68,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -74,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -80,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -85,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -91,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -97,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -104,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -111,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -117,71.02,90,0,0,6,0,307,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -122,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -127,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -132,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -137,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -142,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -148,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -153,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -159,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -164,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -169,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -174,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -179,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -185,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -190,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -197,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -203,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -210,57.86,90,0,0,6,0,204,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -215,57.47,90,0,0,6,0,201,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -220,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -225,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -231,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -235,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -241,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -249,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -254,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -258,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -264,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -269,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -276,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -282,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -287,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -294,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -299,46.49,90,0,0,6,0,115,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -304,45.08,90,0,0,6,0,104,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -312,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -320,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -327,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -331,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -334,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -338,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -343,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -349,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -354,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -359,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -363,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -368,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -372,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -378,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -382,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -387,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -391,50.70,90,0,0,6,0,148,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -396,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -401,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -406,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -412,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -417,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -423,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -429,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -436,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -442,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -447,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -453,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -459,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -465,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -471,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -476,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -481,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -487,67.31,90,0,0,6,0,278,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -492,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -498,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -504,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -509,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -515,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -522,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -528,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -535,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -539,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -545,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -551,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -558,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -564,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -569,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -575,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -581,82.77,90,0,0,6,0,399,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -588,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -595,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -601,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -608,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -614,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -622,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -628,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -635,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -642,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -648,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -653,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -658,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -664,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -671,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -679,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -685,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -691,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -698,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -703,80.86,90,0,0,6,0,384,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -708,66.67,90,0,0,6,0,273,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -713,53.51,90,0,0,6,0,170,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -717,41.76,90,0,0,6,0,78,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -722,33.45,90,0,0,6,0,13,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -726,30.81,83,0,0,6,0,4,8|15|15|15|15|15,3.45|4.94|4.94|4.94|4.94|4.94 -729,5.73,1,0,0,1,4,0,0|0|0|0|0|1,0.04|0.51|0.38|0.17|0.85|1.62 -732,3.77,0,0,0,0,4,0,0|0|0|0|0|0,0.04|0.51|0.38|0.17|0.51|0.00 -734,2.92,0,0,0,0,3,0,0|0|0|0|0|0,0.04|0.17|0.04|0.17|0.34|0.00 -738,2.15,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -741,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case1-pass0.csv deleted file mode 100644 index 751436b6..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -700|3|720,715,702,696,691,679|62.93 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case1-result.csv deleted file mode 100644 index e02cc618..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|700|3|720,715,702,696,691,679|62.93 -AVG|700|3|N/A|62.93 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case2-result.csv deleted file mode 100644 index 0838d53f..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case2-result.csv +++ /dev/null @@ -1,30 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -9|400|11|57.30 -14|400|29|62.88 -21|400|30|63.48 -27|400|45|68.08 -33|400|60|73.02 -38|400|74|77.75 -44|400|75|78.30 -50|400|90|82.90 -112|399|90|82.77 -117|305|90|70.76 -123|301|90|70.25 -129|300|90|70.12 -213|214|90|59.14 -219|201|90|57.47 -224|200|90|57.35 -301|190|90|56.07 -307|108|90|45.59 -311|100|90|44.57 -393|188|90|55.81 -399|200|90|57.35 -491|300|90|70.12 -580|399|90|82.77 -588|400|90|82.90 -707|297|90|69.74 -712|165|90|52.88 -717|74|90|41.25 -721|9|90|32.94 -726|1|83|30.43 -729|0|0|4.24 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case2.log deleted file mode 100644 index 7dbbddbe..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_8/mnist-case2.log +++ /dev/null @@ -1,125 +0,0 @@ -9,57.30,11,5,0,1,0,400,11|0|0|0|0|0,4.05|0.00|0.00|0.00|0.00|0.00 -14,62.88,29,4,0,2,0,400,15|14|0|0|0|0,4.94|4.68|0.00|0.00|0.00|0.00 -21,63.48,30,3,1,2,0,400,15|15|0|0|0|0,4.94|4.94|0.34|0.00|0.00|0.00 -27,68.08,45,2,1,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.00|0.00|0.00 -33,73.02,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.00|0.00 -38,77.75,74,1,0,5,0,400,15|15|15|15|14|0,4.94|4.94|4.94|4.94|4.73|0.00 -44,78.30,75,0,1,5,0,400,15|15|15|15|15|0,4.94|4.94|4.94|4.94|4.94|0.34 -50,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -57,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -64,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -71,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -78,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -84,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -91,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -97,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -105,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -112,82.77,90,0,0,6,0,399,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -117,70.76,90,0,0,6,0,305,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -123,70.25,90,0,0,6,0,301,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -129,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -137,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -144,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -150,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -157,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -163,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -168,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -174,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -181,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -187,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -193,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -199,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -206,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -213,59.14,90,0,0,6,0,214,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -219,57.47,90,0,0,6,0,201,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -224,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -229,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -235,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -243,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -248,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -253,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -260,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -265,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -270,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -277,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -282,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -289,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -295,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -301,56.07,90,0,0,6,0,190,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -307,45.59,90,0,0,6,0,108,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -311,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -316,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -320,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -324,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -329,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -335,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -340,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -344,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -348,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -352,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -357,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -362,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -367,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -371,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -376,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -382,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -389,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -393,55.81,90,0,0,6,0,188,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -399,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -405,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -410,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -416,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -422,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -428,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -433,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -438,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -445,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -451,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -458,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -465,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -471,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -477,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -483,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -491,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -497,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -502,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -508,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -514,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -519,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -525,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -531,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -537,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -545,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -551,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -555,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -562,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -568,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -574,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -580,82.77,90,0,0,6,0,399,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -588,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -595,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -602,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -608,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -616,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -622,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -628,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -633,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -641,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -648,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -656,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -662,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -668,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -675,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -682,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -689,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -696,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -701,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -707,69.74,90,0,0,6,0,297,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -712,52.88,90,0,0,6,0,165,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -717,41.25,90,0,0,6,0,74,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -721,32.94,90,0,0,6,0,9,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -726,30.43,83,0,0,6,0,1,8|15|15|15|15|15,3.45|4.94|4.94|4.94|4.94|4.94 -729,4.24,0,0,0,0,6,0,0|0|0|0|0|0,0.04|0.00|0.34|0.85|0.17|0.68 -732,2.83,0,0,0,0,6,0,0|0|0|0|0|0,0.00|0.00|0.17|0.51|0.00|0.00 -734,2.66,0,0,0,0,5,0,0|0|0|0|0|0,0.00|0.00|0.17|0.34|0.00|0.00 -737,2.32,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.17|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case1-pass0.csv deleted file mode 100644 index d8a28c3f..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -701|1|721,711,706,696,690,685|63.07 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case1-result.csv deleted file mode 100644 index 5f81b335..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|701|1|721,711,706,696,690,685|63.07 -AVG|701|1|N/A|63.07 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case2-result.csv deleted file mode 100644 index e867740a..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case2-result.csv +++ /dev/null @@ -1,30 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -6|400|11|57.30 -11|400|15|58.54 -16|400|30|63.14 -21|400|44|67.82 -26|400|45|68.59 -31|400|60|73.02 -37|400|74|77.70 -45|400|76|79.20 -51|400|90|82.90 -116|360|90|77.79 -122|305|90|70.76 -129|300|90|70.12 -209|225|90|60.54 -214|206|90|58.11 -219|200|90|57.35 -301|132|90|48.66 -307|104|90|45.08 -311|100|90|44.57 -393|184|90|55.30 -400|200|90|57.35 -489|300|90|70.12 -580|400|90|82.90 -704|310|90|71.40 -709|198|90|57.09 -714|99|90|44.44 -718|18|90|34.09 -723|3|90|32.18 -727|0|9|9.48 -730|0|0|3.56 diff --git a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case2.log deleted file mode 100644 index 5f4c6747..00000000 --- a/doc/edl/experiment/result/case2-mnist-OFF-6-1-ON-400-round_9/mnist-case2.log +++ /dev/null @@ -1,131 +0,0 @@ -6,57.30,11,5,0,1,0,400,11|0|0|0|0|0,4.05|0.00|0.00|0.00|0.00|0.00 -11,58.54,15,4,1,1,0,400,15|0|0|0|0|0,4.94|0.34|0.00|0.00|0.00|0.00 -16,63.14,30,4,0,2,0,400,15|15|0|0|0|0,4.94|4.94|0.00|0.00|0.00|0.00 -21,67.82,44,3,0,3,0,400,15|15|14|0|0|0,4.94|4.94|4.68|0.00|0.00|0.00 -26,68.59,45,2,1,3,0,400,15|15|15|0|0|0,4.94|4.94|4.94|0.51|0.00|0.00 -31,73.02,60,2,0,4,0,400,15|15|15|15|0|0,4.94|4.94|4.94|4.94|0.00|0.00 -37,77.70,74,1,0,5,0,400,15|15|15|15|14|0,4.94|4.94|4.94|4.94|4.68|0.00 -45,79.20,76,0,0,6,0,400,15|15|15|15|15|1,4.94|4.94|4.94|4.94|4.94|1.24 -51,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -58,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -65,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -70,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -76,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -81,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -87,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -93,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -98,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -104,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -110,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -116,77.79,90,0,0,6,0,360,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -122,70.76,90,0,0,6,0,305,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -129,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -136,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -142,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -149,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -154,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -160,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -166,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -172,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -179,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -185,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -191,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -197,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -203,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -209,60.54,90,0,0,6,0,225,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -214,58.11,90,0,0,6,0,206,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -219,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -223,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -228,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -233,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -238,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -244,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -249,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -254,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -259,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -265,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -270,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -275,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -280,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -285,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -290,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -295,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -301,48.66,90,0,0,6,0,132,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -307,45.08,90,0,0,6,0,104,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -311,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -316,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -320,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -325,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -330,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -336,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -342,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -345,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -351,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -356,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -361,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -365,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -369,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -374,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -378,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -383,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -387,44.57,90,0,0,6,0,100,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -393,55.30,90,0,0,6,0,184,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -400,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -406,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -412,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -418,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -426,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -431,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -436,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -441,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -446,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -451,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -456,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -461,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -466,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -471,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -476,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -480,57.35,90,0,0,6,0,200,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -489,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -497,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -504,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -510,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -516,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -523,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -529,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -534,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -540,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -546,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -552,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -558,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -562,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -568,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -574,70.12,90,0,0,6,0,300,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -580,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -588,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -594,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -600,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -607,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -613,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -619,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -625,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -631,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -638,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -644,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -652,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -661,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -667,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -673,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -680,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -686,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -693,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -699,82.90,90,0,0,6,0,400,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -704,71.40,90,0,0,6,0,310,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -709,57.09,90,0,0,6,0,198,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -714,44.44,90,0,0,6,0,99,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -718,34.09,90,0,0,6,0,18,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -723,32.18,90,0,0,6,0,3,15|15|15|15|15|15,4.94|4.94|4.94|4.94|4.94|4.94 -727,9.48,9,0,0,1,5,0,0|0|0|0|0|9,0.00|0.51|0.72|1.02|1.41|3.66 -730,3.56,0,0,0,0,6,0,0|0|0|0|0|0,0.00|0.17|0.51|0.34|0.34|0.04 -733,3.05,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.17|0.17|0.17|0.34|0.04 -735,2.49,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.34|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case1-pass0.csv deleted file mode 100644 index f9466430..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -596|104|715,709,701,297,534,621|79.99 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case1-result.csv deleted file mode 100644 index 88016ede..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|33|9|71,69,62,0,0,0|75.69 -AVG|33|9|N/A|75.69 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case2-result.csv deleted file mode 100644 index 299afa40..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case2-result.csv +++ /dev/null @@ -1,67 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -2|400|0|53.26 -6|400|15|58.16 -12|400|27|62.46 -15|400|71|71.87 -19|400|90|77.28 -22|400|127|85.54 -65|400|125|88.14 -99|400|96|82.30 -103|400|97|82.69 -107|400|117|88.14 -110|328|117|78.94 -114|304|117|75.87 -117|303|117|75.75 -121|300|117|75.36 -138|300|115|74.94 -145|300|147|81.75 -149|300|160|84.52 -153|300|172|87.07 -185|300|161|85.24 -191|300|170|87.16 -199|300|172|87.59 -206|219|173|77.45 -212|203|183|77.53 -228|200|193|79.28 -232|200|195|79.71 -302|101|255|79.83 -306|100|258|80.35 -385|173|258|89.67 -389|178|258|90.31 -419|178|209|79.88 -423|178|219|82.01 -426|178|253|89.25 -430|178|258|90.31 -465|178|254|89.46 -472|178|255|89.67 -479|183|255|90.31 -513|184|206|80.00 -517|238|200|85.63 -520|240|206|87.16 -524|240|207|87.37 -547|267|207|90.82 -554|267|204|90.18 -558|267|205|90.40 -561|267|207|90.82 -605|289|154|82.35 -608|348|154|89.89 -612|349|154|90.01 -646|349|152|89.59 -650|349|145|88.10 -657|349|148|88.74 -680|349|153|89.80 -683|349|154|90.01 -695|349|153|89.80 -699|351|152|89.84 -703|304|152|83.84 -706|247|152|76.55 -709|184|152|68.51 -712|122|151|60.37 -715|65|151|53.09 -717|25|151|47.98 -719|16|142|44.91 -721|5|77|27.41 -723|3|49|19.95 -725|3|45|15.99 -726|2|1|4.92 -728|2|0|3.13 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case2.log deleted file mode 100644 index 100083a0..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_0/mnist-case2.log +++ /dev/null @@ -1,198 +0,0 @@ -2,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -6,58.16,15,5,0,1,0,400,15|0|0|0|0|0,4.90|0.00|0.00|0.00|0.00|0.00 -9,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -12,62.46,27,4,0,2,0,400,16|11|0|0|0|0,5.15|4.05|0.00|0.00|0.00|0.00 -15,71.87,71,4,0,2,0,400,56|15|0|0|0|0,13.67|4.94|0.00|0.00|0.00|0.00 -19,77.28,90,3,1,2,0,400,60|30|0|0|0|0,14.52|8.13|1.36|0.00|0.00|0.00 -22,85.54,127,3,0,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|0.00|0.00|0.00 -26,86.22,127,2,1,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|0.68|0.00|0.00 -30,87.29,127,2,1,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|0.00|0.00 -34,88.52,127,1,2,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.00 -38,88.52,127,1,2,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.00 -42,88.52,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.00 -45,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -49,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -53,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -57,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -61,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -65,88.14,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.04 -68,88.14,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.04 -72,88.48,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.38 -76,88.48,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.38 -80,88.48,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.38 -84,88.48,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.38 -87,88.48,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.38 -91,88.48,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.38 -95,88.48,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.38 -99,82.30,96,0,3,3,0,400,45|44|7|0|0|0,11.33|11.12|3.24|1.75|1.24|0.38 -103,82.69,97,0,3,3,0,400,45|45|7|0|0|0,11.33|11.33|3.24|1.75|1.24|0.55 -107,88.14,117,0,2,4,0,400,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -110,78.94,117,0,2,4,0,328,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -114,75.87,117,0,2,4,0,304,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -117,75.75,117,0,2,4,0,303,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -121,75.36,117,0,2,4,0,300,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -124,75.36,117,0,2,4,0,300,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -128,75.36,117,0,2,4,0,300,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -131,75.36,117,0,2,4,0,300,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -135,75.36,117,0,2,4,0,300,45|52|7|0|0|13,11.33|12.82|3.24|1.75|1.24|4.51 -138,74.94,115,0,2,4,0,300,44|51|7|0|0|13,11.12|12.61|3.24|1.75|1.24|4.51 -142,74.94,115,0,2,4,0,300,44|51|7|0|0|13,11.12|12.61|3.24|1.75|1.24|4.51 -145,81.75,147,0,2,4,0,300,59|60|15|0|0|13,14.31|14.52|4.94|1.75|1.24|4.51 -149,84.52,160,0,2,4,0,300,60|60|27|0|0|13,14.52|14.52|7.50|1.75|1.24|4.51 -153,87.07,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.24|4.51 -157,87.59,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.75|4.51 -160,87.59,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.75|4.51 -164,87.59,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.75|4.51 -168,87.59,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.75|4.51 -172,87.59,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.75|4.51 -176,87.59,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.75|4.51 -180,87.59,172,0,2,4,0,300,60|60|39|0|0|13,14.52|14.52|10.05|1.75|1.75|4.51 -185,85.24,161,0,2,4,0,300,55|54|39|0|0|13,13.46|13.25|10.05|1.75|1.75|4.51 -191,87.16,170,0,1,5,0,300,55|54|39|0|9|13,13.46|13.25|10.05|1.75|3.66|4.51 -199,87.59,172,0,1,5,0,300,55|54|39|0|11|13,13.46|13.25|10.05|1.75|4.09|4.51 -206,77.45,173,0,1,5,0,219,56|54|39|0|11|13,13.67|13.25|10.05|1.75|4.09|4.51 -212,77.53,183,0,1,5,0,203,60|60|39|0|11|13,14.52|14.52|10.05|1.75|4.09|4.51 -228,79.28,193,0,1,5,0,200,60|60|49|0|11|13,14.52|14.52|12.18|1.75|4.09|4.51 -232,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -236,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -239,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -243,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -246,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -249,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -253,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -256,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -260,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -263,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -268,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -273,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -278,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -282,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -287,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -298,79.71,195,0,1,5,0,200,60|60|49|0|13|13,14.52|14.52|12.18|1.75|4.51|4.51 -302,79.83,255,0,1,5,0,101,60|60|49|0|26|60,14.52|14.52|12.18|1.75|7.28|14.52 -306,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -310,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -313,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -316,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -320,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -324,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -327,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -330,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -334,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -338,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -341,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -345,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -348,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -351,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -355,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -358,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -361,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -365,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -368,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -371,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -375,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -378,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -381,80.35,258,0,1,5,0,100,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -385,89.67,258,0,1,5,0,173,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -389,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -393,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -397,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -401,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -404,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -408,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -412,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -416,90.31,258,0,1,5,0,178,60|60|49|0|29|60,14.52|14.52|12.18|1.75|7.92|14.52 -419,79.88,209,0,1,5,0,178,43|44|49|0|29|44,10.90|11.12|12.18|1.75|7.92|11.12 -423,82.01,219,0,1,5,0,178,43|44|49|0|39|44,10.90|11.12|12.18|1.75|10.05|11.12 -426,89.25,253,0,0,6,0,178,43|44|55|7|60|44,10.90|11.12|13.46|3.24|14.52|11.12 -430,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -433,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -437,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -440,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -444,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -447,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -451,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -454,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -458,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -461,90.31,258,0,0,6,0,178,43|44|59|8|60|44,10.90|11.12|14.31|3.45|14.52|11.12 -465,89.46,254,0,0,6,0,178,43|44|59|8|56|44,10.90|11.12|14.31|3.45|13.67|11.12 -468,89.46,254,0,0,6,0,178,43|44|59|8|56|44,10.90|11.12|14.31|3.45|13.67|11.12 -472,89.67,255,0,0,6,0,178,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -475,89.67,255,0,0,6,0,178,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -479,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -483,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -487,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -490,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -494,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -498,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -502,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -506,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -510,90.31,255,0,0,6,0,183,43|44|59|8|57|44,10.90|11.12|14.31|3.45|13.88|11.12 -513,80.00,206,0,0,6,0,184,43|44|59|8|8|44,10.90|11.12|14.31|3.45|3.45|11.12 -517,85.63,200,0,0,6,0,238,43|44|59|8|2|44,10.90|11.12|14.31|3.45|2.17|11.12 -520,87.16,206,0,0,6,0,240,43|44|59|14|2|44,10.90|11.12|14.31|4.73|2.17|11.12 -524,87.37,207,0,0,6,0,240,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -528,87.37,207,0,0,6,0,240,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -531,87.37,207,0,0,6,0,240,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -535,87.37,207,0,0,6,0,240,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -539,87.37,207,0,0,6,0,240,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -543,87.37,207,0,0,6,0,240,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -547,90.82,207,0,0,6,0,267,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -550,90.82,207,0,0,6,0,267,43|44|59|15|2|44,10.90|11.12|14.31|4.94|2.17|11.12 -554,90.18,204,0,0,6,0,267,43|44|59|12|2|44,10.90|11.12|14.31|4.30|2.17|11.12 -558,90.40,205,0,0,6,0,267,43|47|60|9|2|44,10.90|11.75|14.52|3.66|2.17|11.12 -561,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -565,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -569,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -573,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -577,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -581,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -585,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -589,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -593,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -597,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -601,90.82,207,0,0,6,0,267,44|48|60|9|2|44,11.12|11.97|14.52|3.66|2.17|11.12 -605,82.35,154,0,0,6,0,289,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -608,89.89,154,0,0,6,0,348,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -612,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -616,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -620,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -624,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -627,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -631,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -635,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -638,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -642,90.01,154,0,0,6,0,349,44|25|37|2|2|44,11.12|7.07|9.63|2.17|2.17|11.12 -646,89.59,152,0,0,6,0,349,44|24|36|2|2|44,11.12|6.86|9.41|2.17|2.17|11.12 -650,88.10,145,0,0,6,0,349,44|21|32|2|2|44,11.12|6.22|8.56|2.17|2.17|11.12 -653,88.10,145,0,0,6,0,349,44|21|32|2|2|44,11.12|6.22|8.56|2.17|2.17|11.12 -657,88.74,148,0,0,6,0,349,44|22|33|3|2|44,11.12|6.43|8.77|2.39|2.17|11.12 -661,88.74,148,0,0,6,0,349,44|22|33|3|2|44,11.12|6.43|8.77|2.39|2.17|11.12 -665,88.74,148,0,0,6,0,349,44|22|33|3|2|44,11.12|6.43|8.77|2.39|2.17|11.12 -668,88.74,148,0,0,6,0,349,44|22|33|3|2|44,11.12|6.43|8.77|2.39|2.17|11.12 -672,88.74,148,0,0,6,0,349,44|22|33|3|2|44,11.12|6.43|8.77|2.39|2.17|11.12 -676,88.74,148,0,0,6,0,349,44|22|33|3|2|44,11.12|6.43|8.77|2.39|2.17|11.12 -680,89.80,153,0,0,6,0,349,47|22|33|3|2|46,11.75|6.43|8.77|2.39|2.17|11.54 -683,90.01,154,0,0,6,0,349,47|22|33|3|2|47,11.75|6.43|8.77|2.39|2.17|11.75 -687,90.01,154,0,0,6,0,349,47|22|33|3|2|47,11.75|6.43|8.77|2.39|2.17|11.75 -691,90.01,154,0,0,6,0,349,47|22|33|3|2|47,11.75|6.43|8.77|2.39|2.17|11.75 -695,89.80,153,0,0,6,0,349,47|21|32|3|2|48,11.75|6.22|8.56|2.39|2.17|11.97 -699,89.84,152,0,0,6,0,351,47|21|32|2|2|48,11.75|6.22|8.56|2.17|2.17|11.97 -703,83.84,152,0,0,6,0,304,47|21|32|2|2|48,11.75|6.22|8.56|2.17|2.17|11.97 -706,76.55,152,0,0,6,0,247,47|21|32|2|2|48,11.75|6.22|8.56|2.17|2.17|11.97 -709,68.51,152,0,0,6,0,184,47|21|32|2|2|48,11.75|6.22|8.56|2.17|2.17|11.97 -712,60.37,151,0,0,6,0,122,46|21|32|2|2|48,11.54|6.22|8.56|2.17|2.17|11.97 -715,53.09,151,0,0,6,0,65,46|21|32|2|2|48,11.54|6.22|8.56|2.17|2.17|11.97 -717,47.98,151,0,0,6,0,25,46|21|32|2|2|48,11.54|6.22|8.56|2.17|2.17|11.97 -719,44.91,142,0,0,6,0,16,37|21|32|2|2|48,9.63|6.22|8.56|2.17|2.17|11.97 -721,27.41,77,0,0,4,2,5,0|0|25|2|2|48,0.00|1.24|7.07|2.17|2.17|11.97 -723,19.95,49,0,0,2,4,3,0|0|0|0|1|48,0.00|0.89|0.85|1.75|1.96|11.97 -725,15.99,45,0,0,1,4,3,0|0|0|0|0|45,0.00|0.72|0.34|0.21|0.85|11.33 -726,4.92,1,0,0,1,3,2,0|0|0|0|0|1,0.00|0.34|0.34|0.04|0.17|1.62 -728,3.13,0,0,0,0,4,2,0|0|0|0|0|0,0.00|0.17|0.17|0.04|0.00|0.34 -729,2.79,0,0,0,0,4,2,0|0|0|0|0|0,0.00|0.00|0.00|0.04|0.00|0.34 -730,2.75,0,0,0,0,3,2,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.34 -732,2.75,0,0,0,0,1,2,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.34 -733,2.75,0,0,0,0,1,2,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.34 -734,2.58,0,0,0,0,1,2,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.17 -736,2.41,0,0,0,0,0,2,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case1-pass0.csv deleted file mode 100644 index 76a21e2a..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -662|38|716,710,701,663,564,622|78.52 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case1-result.csv deleted file mode 100644 index 44956414..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|662|38|716,710,701,663,564,622|78.52 -AVG|662|38|N/A|78.52 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case2-result.csv deleted file mode 100644 index 2a4ad438..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case2-result.csv +++ /dev/null @@ -1,77 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -3|400|0|53.26 -6|400|15|58.20 -12|400|49|67.14 -15|400|75|72.72 -22|400|128|85.75 -26|400|129|86.14 -58|400|113|84.90 -62|400|126|87.67 -66|400|127|88.22 -101|400|107|83.97 -105|400|99|83.97 -108|393|106|84.56 -112|312|106|74.21 -116|303|106|73.06 -120|300|161|84.39 -143|300|152|82.47 -146|300|158|83.75 -150|300|159|83.97 -153|300|172|86.73 -157|300|163|85.67 -161|300|172|87.59 -188|300|171|87.37 -192|300|172|87.59 -203|220|172|77.36 -206|208|172|75.83 -210|202|172|75.06 -213|200|172|74.81 -216|200|195|79.71 -294|130|195|70.76 -298|109|211|71.49 -301|101|221|72.59 -305|100|258|80.35 -309|100|263|81.41 -312|100|264|81.62 -346|100|260|80.77 -349|100|263|81.41 -353|100|264|81.62 -387|115|264|83.54 -391|170|264|90.57 -426|170|191|75.02 -437|170|225|82.26 -441|170|231|83.54 -455|200|231|87.37 -470|200|234|88.01 -474|200|232|87.59 -478|200|234|88.01 -482|206|234|88.78 -512|206|192|79.83 -516|260|191|86.52 -520|278|191|88.82 -547|278|170|84.35 -551|300|163|85.67 -555|300|149|82.69 -559|300|172|87.59 -571|302|172|87.84 -575|311|172|88.99 -591|311|165|87.50 -596|311|172|88.99 -628|311|129|79.83 -632|311|84|70.25 -640|387|115|86.56 -643|398|115|87.97 -674|398|114|87.76 -681|398|115|87.97 -701|365|115|83.75 -704|301|115|75.58 -707|224|115|65.74 -710|161|115|57.69 -713|99|115|49.77 -715|49|115|43.38 -717|12|115|38.65 -719|9|114|38.05 -722|4|109|34.95 -723|1|33|15.78 -725|1|22|10.63 -727|0|0|4.37 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case2.log deleted file mode 100644 index 25c58ccd..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_1/mnist-case2.log +++ /dev/null @@ -1,200 +0,0 @@ -3,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -6,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -9,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -12,67.14,49,4,0,2,0,400,45|4|0|0|0|0,11.33|2.56|0.00|0.00|0.00|0.00 -15,72.72,75,4,0,2,0,400,60|15|0|0|0|0,14.52|4.94|0.00|0.00|0.00|0.00 -19,73.57,75,3,1,2,0,400,60|15|0|0|0|0,14.52|4.94|0.85|0.00|0.00|0.00 -22,85.75,128,3,0,3,0,400,60|53|15|0|0|0,14.52|13.03|4.94|0.00|0.00|0.00 -26,86.14,129,2,1,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|0.17|0.00|0.00 -30,87.71,129,2,1,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|1.75|0.00|0.00 -34,88.27,129,1,2,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|1.75|0.55|0.00 -38,88.27,129,1,2,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|1.75|0.55|0.00 -42,88.27,129,0,3,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|1.75|0.55|0.00 -46,88.31,129,0,3,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|1.75|0.55|0.04 -50,88.31,129,0,3,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|1.75|0.55|0.04 -54,88.31,129,0,3,3,0,400,60|54|15|0|0|0,14.52|13.25|4.94|1.75|0.55|0.04 -58,84.90,113,0,3,3,0,400,44|54|15|0|0|0,11.12|13.25|4.94|1.75|0.55|0.04 -62,87.67,126,0,2,4,0,400,38|54|26|8|0|0,9.84|13.25|7.28|3.45|0.55|0.04 -66,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -70,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -74,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -78,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -82,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -86,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -90,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -93,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -97,88.22,127,0,2,4,0,400,38|54|27|8|0|0,9.84|13.25|7.50|3.45|0.89|0.04 -101,83.97,107,0,2,4,0,400,18|54|27|8|0|0,5.58|13.25|7.50|3.45|0.89|0.04 -105,83.97,99,0,1,5,0,400,2|54|27|8|0|8,2.17|13.25|7.50|3.45|0.89|3.45 -108,84.56,106,0,1,5,0,393,2|54|27|8|0|15,2.17|13.25|7.50|3.45|0.89|4.94 -112,74.21,106,0,1,5,0,312,2|54|27|8|0|15,2.17|13.25|7.50|3.45|0.89|4.94 -116,73.06,106,0,1,5,0,303,2|54|27|8|0|15,2.17|13.25|7.50|3.45|0.89|4.94 -120,84.39,161,0,1,5,0,300,57|54|27|8|0|15,13.88|13.25|7.50|3.45|0.89|4.94 -124,84.39,161,0,1,5,0,300,57|54|27|8|0|15,13.88|13.25|7.50|3.45|0.89|4.94 -128,84.39,161,0,1,5,0,300,57|54|27|8|0|15,13.88|13.25|7.50|3.45|0.89|4.94 -132,84.39,161,0,1,5,0,300,57|54|27|8|0|15,13.88|13.25|7.50|3.45|0.89|4.94 -135,84.39,161,0,1,5,0,300,57|54|27|8|0|15,13.88|13.25|7.50|3.45|0.89|4.94 -139,84.39,161,0,1,5,0,300,57|54|27|8|0|15,13.88|13.25|7.50|3.45|0.89|4.94 -143,82.47,152,0,1,5,0,300,57|54|27|8|0|6,13.88|13.25|7.50|3.45|0.89|3.02 -146,83.75,158,0,1,5,0,300,57|60|27|8|0|6,13.88|14.52|7.50|3.45|0.89|3.02 -150,83.97,159,0,1,5,0,300,57|60|28|8|0|6,13.88|14.52|7.71|3.45|0.89|3.02 -153,86.73,172,0,1,5,0,300,57|60|41|8|0|6,13.88|14.52|10.48|3.45|0.89|3.02 -157,85.67,163,0,1,5,0,300,48|60|41|8|0|6,11.97|14.52|10.48|3.45|1.75|3.02 -161,87.59,172,0,0,6,0,300,48|60|42|8|8|6,11.97|14.52|10.69|3.45|3.45|3.02 -165,87.59,172,0,0,6,0,300,48|60|42|8|8|6,11.97|14.52|10.69|3.45|3.45|3.02 -169,87.59,172,0,0,6,0,300,48|60|42|8|8|6,11.97|14.52|10.69|3.45|3.45|3.02 -173,87.59,172,0,0,6,0,300,48|60|42|8|8|6,11.97|14.52|10.69|3.45|3.45|3.02 -177,87.59,172,0,0,6,0,300,48|60|42|8|8|6,11.97|14.52|10.69|3.45|3.45|3.02 -180,87.59,172,0,0,6,0,300,48|60|42|8|8|6,11.97|14.52|10.69|3.45|3.45|3.02 -184,87.59,172,0,0,6,0,300,48|60|42|8|8|6,11.97|14.52|10.69|3.45|3.45|3.02 -188,87.37,171,0,0,6,0,300,48|59|42|8|8|6,11.97|14.31|10.69|3.45|3.45|3.02 -192,87.59,172,0,0,6,0,300,48|59|42|8|9|6,11.97|14.31|10.69|3.45|3.66|3.02 -196,87.59,172,0,0,6,0,300,48|59|42|8|9|6,11.97|14.31|10.69|3.45|3.66|3.02 -200,87.59,172,0,0,6,0,300,48|59|42|8|9|6,11.97|14.31|10.69|3.45|3.66|3.02 -203,77.36,172,0,0,6,0,220,48|59|42|8|9|6,11.97|14.31|10.69|3.45|3.66|3.02 -206,75.83,172,0,0,6,0,208,48|59|42|8|9|6,11.97|14.31|10.69|3.45|3.66|3.02 -210,75.06,172,0,0,6,0,202,48|59|42|8|9|6,11.97|14.31|10.69|3.45|3.66|3.02 -213,74.81,172,0,0,6,0,200,48|59|42|8|9|6,11.97|14.31|10.69|3.45|3.66|3.02 -216,79.71,195,0,0,6,0,200,48|59|60|10|9|9,11.97|14.31|14.52|3.88|3.66|3.66 -220,79.71,195,0,0,6,0,200,48|59|60|10|9|9,11.97|14.31|14.52|3.88|3.66|3.66 -223,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -227,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -230,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -234,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -237,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -240,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -244,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -247,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -250,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -253,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -257,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -260,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -263,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -267,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -270,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -274,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -277,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -280,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -284,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -287,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -291,79.71,195,0,0,6,0,200,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -294,70.76,195,0,0,6,0,130,48|58|60|10|9|10,11.97|14.10|14.52|3.88|3.66|3.88 -298,71.49,211,0,0,6,0,109,58|58|60|10|15|10,14.10|14.10|14.52|3.88|4.94|3.88 -301,72.59,221,0,0,6,0,101,59|58|60|10|24|10,14.31|14.10|14.52|3.88|6.86|3.88 -305,80.35,258,0,0,6,0,100,60|58|60|10|60|10,14.52|14.10|14.52|3.88|14.52|3.88 -309,81.41,263,0,0,6,0,100,60|58|60|15|60|10,14.52|14.10|14.52|4.94|14.52|3.88 -312,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -316,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -320,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -324,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -327,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -331,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -335,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -338,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -342,81.62,264,0,0,6,0,100,60|58|60|16|60|10,14.52|14.10|14.52|5.15|14.52|3.88 -346,80.77,260,0,0,6,0,100,59|58|58|16|59|10,14.31|14.10|14.10|5.15|14.31|3.88 -349,81.41,263,0,0,6,0,100,58|58|58|16|58|15,14.10|14.10|14.10|5.15|14.10|4.94 -353,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -356,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -360,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -363,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -367,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -371,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -375,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -379,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -383,81.62,264,0,0,6,0,100,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -387,83.54,264,0,0,6,0,115,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -391,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -396,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -400,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -404,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -408,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -412,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -416,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -420,90.57,264,0,0,6,0,170,58|58|58|16|58|16,14.10|14.10|14.10|5.15|14.10|5.15 -426,75.02,191,0,0,6,0,170,22|58|21|16|58|16,6.43|14.10|6.22|5.15|14.10|5.15 -429,75.02,191,0,0,6,0,170,22|58|21|16|58|16,6.43|14.10|6.22|5.15|14.10|5.15 -433,75.02,191,0,0,6,0,170,22|58|21|16|58|16,6.43|14.10|6.22|5.15|14.10|5.15 -437,82.26,225,0,0,6,0,170,29|58|25|39|58|16,7.92|14.10|7.07|10.05|14.10|5.15 -441,83.54,231,0,0,6,0,170,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -444,83.54,231,0,0,6,0,170,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -448,83.54,231,0,0,6,0,170,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -451,83.54,231,0,0,6,0,170,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -455,87.37,231,0,0,6,0,200,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -459,87.37,231,0,0,6,0,200,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -463,87.37,231,0,0,6,0,200,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -466,87.37,231,0,0,6,0,200,30|58|29|40|58|16,8.13|14.10|7.92|10.26|14.10|5.15 -470,88.01,234,0,0,6,0,200,30|58|29|40|58|19,8.13|14.10|7.92|10.26|14.10|5.79 -474,87.59,232,0,0,6,0,200,29|60|28|38|58|19,7.92|14.52|7.71|9.84|14.10|5.79 -478,88.01,234,0,0,6,0,200,29|60|28|38|59|20,7.92|14.52|7.71|9.84|14.31|6.01 -482,88.78,234,0,0,6,0,206,29|60|28|38|59|20,7.92|14.52|7.71|9.84|14.31|6.01 -486,88.78,234,0,0,6,0,206,29|60|28|38|59|20,7.92|14.52|7.71|9.84|14.31|6.01 -490,88.78,234,0,0,6,0,206,29|60|28|38|59|20,7.92|14.52|7.71|9.84|14.31|6.01 -494,88.78,234,0,0,6,0,206,29|60|28|38|59|20,7.92|14.52|7.71|9.84|14.31|6.01 -502,88.78,234,0,0,6,0,206,29|60|28|38|59|20,7.92|14.52|7.71|9.84|14.31|6.01 -508,88.78,234,0,0,6,0,206,29|60|28|38|59|20,7.92|14.52|7.71|9.84|14.31|6.01 -512,79.83,192,0,0,6,0,206,19|49|28|28|48|20,5.79|12.18|7.71|7.71|11.97|6.01 -516,86.52,191,0,0,6,0,260,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -520,88.82,191,0,0,6,0,278,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -523,88.82,191,0,0,6,0,278,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -527,88.82,191,0,0,6,0,278,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -531,88.82,191,0,0,6,0,278,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -535,88.82,191,0,0,6,0,278,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -539,88.82,191,0,0,6,0,278,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -543,88.82,191,0,0,6,0,278,19|49|28|27|48|20,5.79|12.18|7.71|7.50|11.97|6.01 -547,84.35,170,0,0,6,0,278,19|28|28|27|48|20,5.79|7.71|7.71|7.50|11.97|6.01 -551,85.67,163,0,0,6,0,300,18|28|28|25|44|20,5.58|7.71|7.71|7.07|11.12|6.01 -555,82.69,149,0,0,6,0,300,12|28|28|20|41|20,4.30|7.71|7.71|6.01|10.48|6.01 -559,87.59,172,0,0,6,0,300,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -563,87.59,172,0,0,6,0,300,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -566,87.59,172,0,0,6,0,300,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -571,87.84,172,0,0,6,0,302,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -575,88.99,172,0,0,6,0,311,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -579,88.99,172,0,0,6,0,311,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -583,88.99,172,0,0,6,0,311,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -587,88.99,172,0,0,6,0,311,23|28|28|22|51|20,6.64|7.71|7.71|6.43|12.61|6.01 -591,87.50,165,0,0,6,0,311,21|26|28|22|48|20,6.22|7.28|7.71|6.43|11.97|6.01 -596,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -600,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -604,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -608,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -612,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -616,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -620,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -624,88.99,172,0,0,6,0,311,21|26|28|22|48|27,6.22|7.28|7.71|6.43|11.97|7.50 -628,79.83,129,0,0,6,0,311,2|2|28|22|48|27,2.17|2.17|7.71|6.43|11.97|7.50 -632,70.25,84,0,0,6,0,311,2|2|28|22|3|27,2.17|2.17|7.71|6.43|2.39|7.50 -636,70.25,84,0,0,6,0,311,2|2|29|22|2|27,2.17|2.17|7.92|6.43|2.17|7.50 -640,86.56,115,0,0,6,0,387,2|2|60|22|2|27,2.17|2.17|14.52|6.43|2.17|7.50 -643,87.97,115,0,0,6,0,398,2|2|60|22|2|27,2.17|2.17|14.52|6.43|2.17|7.50 -647,87.97,115,0,0,6,0,398,2|2|60|22|2|27,2.17|2.17|14.52|6.43|2.17|7.50 -651,87.97,115,0,0,6,0,398,2|2|60|22|2|27,2.17|2.17|14.52|6.43|2.17|7.50 -655,87.97,115,0,0,6,0,398,2|2|60|22|2|27,2.17|2.17|14.52|6.43|2.17|7.50 -659,87.97,115,0,0,6,0,398,2|2|60|22|2|27,2.17|2.17|14.52|6.43|2.17|7.50 -669,87.97,115,0,0,6,0,398,2|2|60|22|2|27,2.17|2.17|14.52|6.43|2.17|7.50 -674,87.76,114,0,0,6,0,398,2|2|59|22|2|27,2.17|2.17|14.31|6.43|2.17|7.50 -678,87.76,114,0,0,6,0,398,2|2|59|22|2|27,2.17|2.17|14.31|6.43|2.17|7.50 -681,87.97,115,0,0,6,0,398,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -685,87.97,115,0,0,6,0,398,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -689,87.97,115,0,0,6,0,398,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -693,87.97,115,0,0,6,0,398,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -697,87.97,115,0,0,6,0,398,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -701,83.75,115,0,0,6,0,365,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -704,75.58,115,0,0,6,0,301,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -707,65.74,115,0,0,6,0,224,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -710,57.69,115,0,0,6,0,161,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -713,49.77,115,0,0,6,0,99,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -715,43.38,115,0,0,6,0,49,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -717,38.65,115,0,0,6,0,12,2|2|59|23|2|27,2.17|2.17|14.31|6.64|2.17|7.50 -719,38.05,114,0,0,6,0,9,1|2|59|23|2|27,1.96|2.17|14.31|6.64|2.17|7.50 -722,34.95,109,0,0,4,2,4,0|0|57|23|2|27,0.72|1.36|13.88|6.64|2.17|7.50 -723,15.78,33,0,0,3,2,1,0|0|0|4|2|27,0.00|0.00|1.24|2.60|2.17|7.50 -725,10.63,22,0,0,1,4,1,0|0|0|0|0|22,0.00|0.00|0.34|0.34|1.24|6.43 -727,4.37,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.34|0.17|0.34|1.36 -728,3.17,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.17|0.17|0.17|0.51 -730,2.66,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.17|0.34 -731,2.66,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.17|0.34 -732,2.49,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.34 -734,2.15,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -735,2.15,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -736,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case1-pass0.csv deleted file mode 100644 index 1ba9f63b..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -674|29|717,708,706,665,629,623|79.19 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case1-result.csv deleted file mode 100644 index 0992af9f..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|674|29|717,708,706,665,629,623|79.19 -AVG|674|29|N/A|79.19 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case2-result.csv deleted file mode 100644 index 2c5868c4..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case2-result.csv +++ /dev/null @@ -1,81 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -2|400|0|53.26 -5|400|15|58.16 -11|400|28|62.67 -14|400|74|72.51 -18|400|75|73.91 -21|400|119|83.84 -25|400|127|85.54 -58|400|122|87.50 -62|400|127|88.57 -99|400|90|80.69 -107|400|105|85.58 -111|325|105|76.00 -115|306|105|73.57 -119|303|152|83.20 -122|300|160|84.52 -142|300|156|83.67 -146|300|163|85.16 -149|300|165|85.58 -153|300|170|86.65 -157|300|161|85.24 -161|300|170|87.16 -176|300|166|86.31 -180|300|165|86.09 -184|300|170|87.16 -206|228|170|77.96 -209|205|170|75.02 -213|203|170|74.77 -216|200|195|79.71 -220|200|197|80.13 -297|139|197|72.34 -300|107|202|69.31 -303|102|205|69.31 -306|100|208|69.70 -310|100|212|70.55 -313|100|257|80.13 -316|100|264|81.62 -352|100|242|76.94 -359|100|247|78.00 -375|100|248|78.22 -382|100|264|81.62 -390|168|264|90.31 -393|170|263|90.35 -397|170|262|90.14 -405|172|262|90.40 -413|172|261|90.18 -421|174|261|90.44 -428|174|210|79.58 -435|174|209|79.37 -438|174|164|69.78 -442|174|185|74.26 -446|174|253|88.74 -450|174|205|78.51 -454|174|260|90.23 -458|174|261|90.44 -488|179|246|87.88 -493|201|246|90.69 -524|201|175|75.58 -528|224|193|82.35 -532|227|193|82.73 -546|269|193|88.10 -550|278|193|89.25 -562|278|188|88.18 -567|278|183|87.12 -571|280|184|87.59 -575|282|190|89.12 -609|305|150|83.54 -613|318|159|87.12 -617|318|161|87.54 -639|331|161|89.20 -705|281|161|82.82 -708|254|161|79.37 -712|185|161|70.55 -715|113|161|61.35 -717|56|161|54.07 -720|19|159|48.91 -722|12|108|36.27 -724|10|93|30.94 -727|5|60|22.25 -728|1|1|7.05 -730|1|0|4.37 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case2.log deleted file mode 100644 index 13e40036..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_2/mnist-case2.log +++ /dev/null @@ -1,194 +0,0 @@ -2,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -5,58.16,15,5,0,1,0,400,15|0|0|0|0|0,4.90|0.00|0.00|0.00|0.00|0.00 -8,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -11,62.67,28,4,1,1,0,400,28|0|0|0|0|0,7.71|1.70|0.00|0.00|0.00|0.00 -14,72.51,74,4,0,2,0,400,59|15|0|0|0|0,14.31|4.94|0.00|0.00|0.00|0.00 -18,73.91,75,3,1,2,0,400,60|15|0|0|0|0,14.52|4.94|1.19|0.00|0.00|0.00 -21,83.84,119,3,0,3,0,400,60|44|15|0|0|0,14.52|11.12|4.94|0.00|0.00|0.00 -25,85.54,127,2,1,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|0.00|0.00|0.00 -29,87.29,127,2,1,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|1.75|0.00|0.00 -33,87.46,127,1,2,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|1.75|0.17|0.00 -37,88.52,127,1,2,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|1.75|1.24|0.00 -41,88.52,127,0,3,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|1.75|1.24|0.00 -45,88.57,127,0,3,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|1.75|1.24|0.04 -49,88.57,127,0,3,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|1.75|1.24|0.04 -53,88.57,127,0,3,3,0,400,60|52|15|0|0|0,14.52|12.82|4.94|1.75|1.24|0.04 -58,87.50,122,0,3,3,0,400,55|52|15|0|0|0,13.46|12.82|4.94|1.75|1.24|0.04 -62,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -66,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -70,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -74,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -78,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -82,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -86,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -90,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -95,88.57,127,0,2,4,0,400,47|52|27|1|0|0,11.75|12.82|7.50|1.96|1.24|0.04 -99,80.69,90,0,1,5,0,400,2|52|27|1|8|0,2.17|12.82|7.50|1.96|2.94|0.04 -103,80.86,90,0,1,5,0,400,2|52|27|1|8|0,2.17|12.82|7.50|1.96|2.94|0.21 -107,85.58,105,0,0,6,0,400,2|52|27|1|8|15,2.17|12.82|7.50|1.96|2.94|4.94 -111,76.00,105,0,0,6,0,325,2|52|27|1|8|15,2.17|12.82|7.50|1.96|2.94|4.94 -115,73.57,105,0,0,6,0,306,2|52|27|1|8|15,2.17|12.82|7.50|1.96|2.94|4.94 -119,83.20,152,0,0,6,0,303,49|52|27|1|8|15,12.18|12.82|7.50|1.96|2.94|4.94 -122,84.52,160,0,0,6,0,300,57|52|27|1|8|15,13.88|12.82|7.50|1.96|2.94|4.94 -126,84.52,160,0,0,6,0,300,57|52|27|1|8|15,13.88|12.82|7.50|1.96|2.94|4.94 -130,84.52,160,0,0,6,0,300,57|52|27|1|8|15,13.88|12.82|7.50|1.96|2.94|4.94 -134,84.52,160,0,0,6,0,300,57|52|27|1|8|15,13.88|12.82|7.50|1.96|2.94|4.94 -138,84.52,160,0,0,6,0,300,57|52|27|1|8|15,13.88|12.82|7.50|1.96|2.94|4.94 -142,83.67,156,0,0,6,0,300,57|52|27|1|8|11,13.88|12.82|7.50|1.96|2.94|4.09 -146,85.16,163,0,0,6,0,300,57|59|27|1|8|11,13.88|14.31|7.50|1.96|2.94|4.09 -149,85.58,165,0,0,6,0,300,57|60|28|1|8|11,13.88|14.52|7.71|1.96|2.94|4.09 -153,86.65,170,0,0,6,0,300,57|60|32|2|8|11,13.88|14.52|8.56|2.17|2.94|4.09 -157,85.24,161,0,0,6,0,300,48|60|32|2|8|11,11.97|14.52|8.56|2.17|3.45|4.09 -161,87.16,170,0,0,6,0,300,48|60|40|2|9|11,11.97|14.52|10.26|2.17|3.66|4.09 -165,87.16,170,0,0,6,0,300,48|60|40|2|9|11,11.97|14.52|10.26|2.17|3.66|4.09 -169,87.16,170,0,0,6,0,300,48|60|40|2|9|11,11.97|14.52|10.26|2.17|3.66|4.09 -173,87.16,170,0,0,6,0,300,48|60|40|2|9|11,11.97|14.52|10.26|2.17|3.66|4.09 -176,86.31,166,0,0,6,0,300,48|60|40|2|9|7,11.97|14.52|10.26|2.17|3.66|3.24 -180,86.09,165,0,0,6,0,300,48|59|40|2|9|7,11.97|14.31|10.26|2.17|3.66|3.24 -184,87.16,170,0,0,6,0,300,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -187,87.16,170,0,0,6,0,300,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -191,87.16,170,0,0,6,0,300,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -195,87.16,170,0,0,6,0,300,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -199,87.16,170,0,0,6,0,300,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -202,87.16,170,0,0,6,0,300,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -206,77.96,170,0,0,6,0,228,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -209,75.02,170,0,0,6,0,205,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -213,74.77,170,0,0,6,0,203,48|56|43|4|9|10,11.97|13.67|10.90|2.60|3.66|3.88 -216,79.71,195,0,0,6,0,200,48|56|60|12|9|10,11.97|13.67|14.52|4.30|3.66|3.88 -220,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -224,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -228,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -231,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -235,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -239,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -242,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -246,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -250,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -254,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -258,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -262,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -266,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -269,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -273,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -276,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -280,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -283,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -287,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -290,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -294,80.13,197,0,0,6,0,200,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -297,72.34,197,0,0,6,0,139,48|56|60|13|9|11,11.97|13.67|14.52|4.51|3.66|4.09 -300,69.31,202,0,0,6,0,107,53|56|60|13|9|11,13.03|13.67|14.52|4.51|3.66|4.09 -303,69.31,205,0,0,6,0,102,56|56|60|13|9|11,13.67|13.67|14.52|4.51|3.66|4.09 -306,69.70,208,0,0,6,0,100,57|56|60|15|9|11,13.88|13.67|14.52|4.94|3.66|4.09 -310,70.55,212,0,0,6,0,100,60|57|60|15|9|11,14.52|13.88|14.52|4.94|3.66|4.09 -313,80.13,257,0,0,6,0,100,60|58|60|53|14|12,14.52|14.10|14.52|13.03|4.73|4.30 -316,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -326,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -331,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -335,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -338,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -342,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -345,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -349,81.62,264,0,0,6,0,100,60|58|60|59|15|12,14.52|14.10|14.52|14.31|4.94|4.30 -352,76.94,242,0,0,6,0,100,49|58|49|59|15|12,12.18|14.10|12.18|14.31|4.94|4.30 -355,76.94,242,0,0,6,0,100,49|58|49|59|15|12,12.18|14.10|12.18|14.31|4.94|4.30 -359,78.00,247,0,0,6,0,100,54|58|49|59|15|12,13.25|14.10|12.18|14.31|4.94|4.30 -362,78.00,247,0,0,6,0,100,54|58|49|59|15|12,13.25|14.10|12.18|14.31|4.94|4.30 -365,78.00,247,0,0,6,0,100,54|58|49|59|15|12,13.25|14.10|12.18|14.31|4.94|4.30 -369,78.00,247,0,0,6,0,100,54|58|49|59|15|12,13.25|14.10|12.18|14.31|4.94|4.30 -372,78.00,247,0,0,6,0,100,54|58|49|59|15|12,13.25|14.10|12.18|14.31|4.94|4.30 -375,78.22,248,0,0,6,0,100,54|58|49|60|15|12,13.25|14.10|12.18|14.52|4.94|4.30 -379,78.22,248,0,0,6,0,100,54|58|49|60|15|12,13.25|14.10|12.18|14.52|4.94|4.30 -382,81.62,264,0,0,6,0,100,54|58|49|60|31|12,13.25|14.10|12.18|14.52|8.35|4.30 -386,81.62,264,0,0,6,0,100,54|58|49|60|31|12,13.25|14.10|12.18|14.52|8.35|4.30 -390,90.31,264,0,0,6,0,168,54|58|49|60|31|12,13.25|14.10|12.18|14.52|8.35|4.30 -393,90.35,263,0,0,6,0,170,53|58|49|60|31|12,13.03|14.10|12.18|14.52|8.35|4.30 -397,90.14,262,0,0,6,0,170,53|58|48|60|31|12,13.03|14.10|11.97|14.52|8.35|4.30 -401,90.14,262,0,0,6,0,170,53|58|48|60|31|12,13.03|14.10|11.97|14.52|8.35|4.30 -405,90.40,262,0,0,6,0,172,53|58|48|60|31|12,13.03|14.10|11.97|14.52|8.35|4.30 -409,90.40,262,0,0,6,0,172,53|58|48|60|31|12,13.03|14.10|11.97|14.52|8.35|4.30 -413,90.18,261,0,0,6,0,172,53|58|48|59|31|12,13.03|14.10|11.97|14.31|8.35|4.30 -417,90.18,261,0,0,6,0,172,53|58|48|59|31|12,13.03|14.10|11.97|14.31|8.35|4.30 -421,90.44,261,0,0,6,0,174,53|58|48|59|31|12,13.03|14.10|11.97|14.31|8.35|4.30 -424,90.44,261,0,0,6,0,174,53|58|48|59|31|12,13.03|14.10|11.97|14.31|8.35|4.30 -428,79.58,210,0,0,6,0,174,2|58|48|59|31|12,2.17|14.10|11.97|14.31|8.35|4.30 -431,79.58,210,0,0,6,0,174,2|58|48|59|31|12,2.17|14.10|11.97|14.31|8.35|4.30 -435,79.37,209,0,0,6,0,174,2|58|47|59|31|12,2.17|14.10|11.75|14.31|8.35|4.30 -438,69.78,164,0,0,6,0,174,2|58|2|59|31|12,2.17|14.10|2.17|14.31|8.35|4.30 -442,74.26,185,0,0,6,0,174,15|58|2|59|39|12,4.94|14.10|2.17|14.31|10.05|4.30 -446,88.74,253,0,0,6,0,174,50|60|2|55|57|29,12.39|14.52|2.17|13.46|13.88|7.92 -450,78.51,205,0,0,6,0,174,51|60|2|2|58|32,12.61|14.52|2.17|2.17|14.10|8.56 -454,90.23,260,0,0,6,0,174,51|60|34|2|58|55,12.61|14.52|8.99|2.17|14.10|13.46 -458,90.44,261,0,0,6,0,174,51|60|35|2|58|55,12.61|14.52|9.20|2.17|14.10|13.46 -462,90.44,261,0,0,6,0,174,51|60|35|2|58|55,12.61|14.52|9.20|2.17|14.10|13.46 -468,90.44,261,0,0,6,0,174,51|60|35|2|58|55,12.61|14.52|9.20|2.17|14.10|13.46 -472,90.44,261,0,0,6,0,174,51|60|35|2|58|55,12.61|14.52|9.20|2.17|14.10|13.46 -476,90.44,261,0,0,6,0,174,51|60|35|2|58|55,12.61|14.52|9.20|2.17|14.10|13.46 -479,90.44,261,0,0,6,0,174,51|60|35|2|58|55,12.61|14.52|9.20|2.17|14.10|13.46 -483,90.44,261,0,0,6,0,174,51|60|35|2|58|55,12.61|14.52|9.20|2.17|14.10|13.46 -488,87.88,246,0,0,6,0,179,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -493,90.69,246,0,0,6,0,201,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -499,90.69,246,0,0,6,0,201,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -504,90.69,246,0,0,6,0,201,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -508,90.69,246,0,0,6,0,201,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -511,90.69,246,0,0,6,0,201,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -516,90.69,246,0,0,6,0,201,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -520,90.69,246,0,0,6,0,201,51|52|35|2|58|48,12.61|12.82|9.20|2.17|14.10|11.97 -524,75.58,175,0,0,6,0,201,51|16|35|2|58|13,12.61|5.15|9.20|2.17|14.10|4.51 -528,82.35,193,0,0,6,0,224,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -532,82.73,193,0,0,6,0,227,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -536,82.73,193,0,0,6,0,227,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -539,82.73,193,0,0,6,0,227,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -543,82.73,193,0,0,6,0,227,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -546,88.10,193,0,0,6,0,269,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -550,89.25,193,0,0,6,0,278,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -554,89.25,193,0,0,6,0,278,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -558,89.25,193,0,0,6,0,278,51|16|35|20|58|13,12.61|5.15|9.20|6.01|14.10|4.51 -562,88.18,188,0,0,6,0,278,51|16|35|15|58|13,12.61|5.15|9.20|4.94|14.10|4.51 -567,87.12,183,0,0,6,0,278,51|13|35|15|58|11,12.61|4.51|9.20|4.94|14.10|4.09 -571,87.59,184,0,0,6,0,280,51|13|35|16|58|11,12.61|4.51|9.20|5.15|14.10|4.09 -575,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -579,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -583,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -588,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -592,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -596,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -600,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -604,89.12,190,0,0,6,0,282,51|15|35|18|58|13,12.61|4.94|9.20|5.58|14.10|4.51 -609,83.54,150,0,0,6,0,305,51|2|35|2|58|2,12.61|2.17|9.20|2.17|14.10|2.17 -613,87.12,159,0,0,6,0,318,51|2|44|2|58|2,12.61|2.17|11.12|2.17|14.10|2.17 -617,87.54,161,0,0,6,0,318,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -621,87.54,161,0,0,6,0,318,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -626,87.54,161,0,0,6,0,318,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -630,87.54,161,0,0,6,0,318,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -634,87.54,161,0,0,6,0,318,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -639,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -643,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -647,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -650,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -654,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -664,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -675,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -680,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -684,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -688,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -693,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -697,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -701,89.20,161,0,0,6,0,331,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -705,82.82,161,0,0,6,0,281,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -708,79.37,161,0,0,6,0,254,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -712,70.55,161,0,0,6,0,185,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -715,61.35,161,0,0,6,0,113,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -717,54.07,161,0,0,6,0,56,51|2|46|2|58|2,12.61|2.17|11.54|2.17|14.10|2.17 -720,48.91,159,0,0,6,0,19,49|2|46|2|58|2,12.18|2.17|11.54|2.17|14.10|2.17 -722,36.27,108,0,0,4,2,12,0|0|46|2|58|2,1.06|1.53|11.54|2.17|14.10|2.17 -724,30.94,93,0,0,4,1,10,0|0|31|2|58|2,0.21|0.51|8.35|2.17|14.10|2.17 -727,22.25,60,0,0,2,3,5,0|0|0|0|58|2,0.21|0.51|0.89|1.58|14.10|2.17 -728,7.05,1,0,0,1,4,1,0|0|0|0|0|1,0.21|0.17|0.55|0.51|1.36|1.96 -730,4.37,0,0,0,0,4,1,0|0|0|0|0|0,0.00|0.17|0.38|0.51|0.17|0.85 -731,3.51,0,0,0,0,3,1,0|0|0|0|0|0,0.00|0.00|0.04|0.34|0.00|0.85 -733,3.17,0,0,0,0,3,1,0|0|0|0|0|0,0.00|0.00|0.04|0.17|0.00|0.68 -734,3.00,0,0,0,0,3,1,0|0|0|0|0|0,0.00|0.00|0.04|0.17|0.00|0.51 -735,2.79,0,0,0,0,1,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.51 -737,2.45,0,0,0,0,1,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.17 -738,2.28,0,0,0,0,0,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case1-pass0.csv deleted file mode 100644 index c369902c..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -673|22|703,699,696,660,658,625|78.61 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case1-result.csv deleted file mode 100644 index 3613ec29..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|673|22|703,699,696,660,658,625|78.61 -AVG|673|22|N/A|78.61 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case2-result.csv deleted file mode 100644 index c51e4126..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case2-result.csv +++ /dev/null @@ -1,72 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -4|400|4|54.79 -8|400|20|59.26 -11|400|74|72.51 -16|400|85|76.55 -21|400|126|85.67 -51|400|124|88.10 -55|400|121|87.46 -59|400|124|88.44 -95|400|79|78.85 -99|351|92|75.36 -102|307|92|69.74 -105|305|92|69.49 -109|301|106|71.96 -113|300|148|80.77 -142|300|158|82.90 -146|300|179|87.37 -151|300|174|86.31 -155|300|179|89.08 -177|300|174|88.01 -181|300|176|88.44 -186|300|179|89.08 -190|288|179|87.54 -194|206|179|77.07 -198|202|179|76.55 -202|201|189|78.56 -206|200|201|80.98 -210|200|203|81.41 -283|139|208|74.68 -286|106|212|71.32 -290|101|252|79.20 -294|100|258|80.35 -298|100|259|80.56 -373|152|259|87.20 -377|177|259|90.40 -406|187|253|90.40 -410|189|253|90.65 -439|189|222|84.05 -447|189|228|85.33 -451|189|248|89.59 -455|189|253|90.65 -492|189|251|90.23 -496|190|251|90.35 -501|193|251|90.74 -526|193|177|74.98 -530|221|187|80.69 -533|300|187|90.78 -558|308|187|91.80 -570|308|182|90.74 -574|317|182|91.89 -604|317|123|79.32 -608|317|113|77.19 -612|317|121|78.90 -616|317|140|82.94 -620|326|140|84.09 -624|363|140|88.82 -651|363|135|87.76 -655|363|136|87.97 -659|363|140|88.82 -692|362|140|88.69 -695|286|140|78.98 -699|248|140|74.13 -702|180|140|65.44 -705|114|137|56.37 -707|55|132|46.36 -710|20|73|29.15 -712|9|54|21.74 -714|6|41|17.57 -715|3|34|14.33 -717|2|27|11.65 -719|1|15|7.77 -720|0|0|2.70 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case2.log deleted file mode 100644 index 0ab57b4c..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_3/mnist-case2.log +++ /dev/null @@ -1,192 +0,0 @@ -4,54.79,4,5,0,1,0,400,4|0|0|0|0|0,1.53|0.00|0.00|0.00|0.00|0.00 -8,59.26,20,4,1,1,0,400,20|0|0|0|0|0,6.01|0.00|0.00|0.00|0.00|0.00 -11,72.51,74,4,0,2,0,400,60|14|0|0|0|0,14.52|4.73|0.00|0.00|0.00|0.00 -16,76.55,85,3,0,3,0,400,60|16|9|0|0|0,14.52|5.15|3.62|0.00|0.00|0.00 -21,85.67,126,2,1,3,0,400,60|51|15|0|0|0,14.52|12.61|4.94|0.34|0.00|0.00 -25,87.07,126,1,2,3,0,400,60|51|15|0|0|0,14.52|12.61|4.94|1.75|0.00|0.00 -29,88.48,126,1,2,3,0,400,60|51|15|0|0|0,14.52|12.61|4.94|1.75|1.41|0.00 -34,88.52,126,0,3,3,0,400,60|51|15|0|0|0,14.52|12.61|4.94|1.75|1.41|0.04 -38,88.52,126,0,3,3,0,400,60|51|15|0|0|0,14.52|12.61|4.94|1.75|1.41|0.04 -42,88.52,126,0,3,3,0,400,60|51|15|0|0|0,14.52|12.61|4.94|1.75|1.41|0.04 -47,88.52,126,0,3,3,0,400,60|51|15|0|0|0,14.52|12.61|4.94|1.75|1.41|0.04 -51,88.10,124,0,3,3,0,400,58|51|15|0|0|0,14.10|12.61|4.94|1.75|1.41|0.04 -55,87.46,121,0,2,4,0,400,48|51|17|5|0|0,11.97|12.61|5.37|2.81|1.41|0.04 -59,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -63,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -67,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -71,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -75,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -79,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -83,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -87,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -91,88.44,124,0,1,5,0,400,48|51|17|5|3|0,11.97|12.61|5.37|2.81|2.39|0.04 -95,78.85,79,0,0,6,0,400,2|51|17|5|3|1,2.17|12.61|5.37|2.81|2.39|0.26 -99,75.36,92,0,0,6,0,351,2|51|17|5|3|14,2.17|12.61|5.37|2.81|2.39|3.02 -102,69.74,92,0,0,6,0,307,2|51|17|5|3|14,2.17|12.61|5.37|2.81|2.39|3.02 -105,69.49,92,0,0,6,0,305,2|51|17|5|3|14,2.17|12.61|5.37|2.81|2.39|3.02 -109,71.96,106,0,0,6,0,301,16|51|17|5|3|14,5.15|12.61|5.37|2.81|2.39|3.02 -113,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -117,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -120,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -124,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -128,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -131,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -135,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -139,80.77,148,0,0,6,0,300,58|51|17|5|3|14,14.10|12.61|5.37|2.81|2.39|3.02 -142,82.90,158,0,0,6,0,300,58|60|18|5|3|14,14.10|14.52|5.58|2.81|2.39|3.02 -146,87.37,179,0,0,6,0,300,58|60|39|5|3|14,14.10|14.52|10.05|2.81|2.39|3.02 -151,86.31,174,0,0,6,0,300,48|60|40|5|7|14,11.97|14.52|10.26|2.81|3.24|3.02 -155,89.08,179,0,0,6,0,300,48|60|41|5|11|14,11.97|14.52|10.48|2.81|4.09|4.73 -159,89.08,179,0,0,6,0,300,48|60|41|5|11|14,11.97|14.52|10.48|2.81|4.09|4.73 -163,89.08,179,0,0,6,0,300,48|60|41|5|11|14,11.97|14.52|10.48|2.81|4.09|4.73 -168,89.08,179,0,0,6,0,300,48|60|41|5|11|14,11.97|14.52|10.48|2.81|4.09|4.73 -173,89.08,179,0,0,6,0,300,48|60|41|5|11|14,11.97|14.52|10.48|2.81|4.09|4.73 -177,88.01,174,0,0,6,0,300,48|50|44|7|11|14,11.97|12.39|11.12|3.24|4.09|4.73 -181,88.44,176,0,0,6,0,300,48|50|44|7|13|14,11.97|12.39|11.12|3.24|4.51|4.73 -186,89.08,179,0,0,6,0,300,48|50|44|7|16|14,11.97|12.39|11.12|3.24|5.15|4.73 -190,87.54,179,0,0,6,0,288,48|50|44|7|16|14,11.97|12.39|11.12|3.24|5.15|4.73 -194,77.07,179,0,0,6,0,206,48|50|44|7|16|14,11.97|12.39|11.12|3.24|5.15|4.73 -198,76.55,179,0,0,6,0,202,48|50|44|7|16|14,11.97|12.39|11.12|3.24|5.15|4.73 -202,78.56,189,0,0,6,0,201,48|55|44|7|21|14,11.97|13.46|11.12|3.24|6.22|4.73 -206,80.98,201,0,0,6,0,200,48|55|44|7|33|14,11.97|13.46|11.12|3.24|8.77|4.73 -210,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -214,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -218,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -222,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -226,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -230,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -234,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -238,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -242,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -246,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -250,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -254,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -258,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -262,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -266,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -270,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -275,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -279,81.41,203,0,0,6,0,200,48|55|44|7|35|14,11.97|13.46|11.12|3.24|9.20|4.73 -283,74.68,208,0,0,6,0,139,48|55|46|10|35|14,11.97|13.46|11.54|3.88|9.20|4.73 -286,71.32,212,0,0,6,0,106,51|55|46|10|35|15,12.61|13.46|11.54|3.88|9.20|4.94 -290,79.20,252,0,0,6,0,101,51|55|46|10|35|55,12.61|13.46|11.54|3.88|9.20|13.46 -294,80.35,258,0,0,6,0,100,52|55|46|10|35|60,12.82|13.46|11.54|3.88|9.20|14.52 -298,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -301,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -305,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -309,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -312,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -316,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -320,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -324,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -328,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -332,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -335,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -339,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -343,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -346,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -350,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -354,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -357,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -361,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -365,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -369,80.56,259,0,0,6,0,100,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -373,87.20,259,0,0,6,0,152,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -377,90.40,259,0,0,6,0,177,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -381,90.40,259,0,0,6,0,177,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -385,90.40,259,0,0,6,0,177,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -389,90.40,259,0,0,6,0,177,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -393,90.40,259,0,0,6,0,177,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -397,90.40,259,0,0,6,0,177,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -402,90.40,259,0,0,6,0,177,53|55|46|10|35|60,13.03|13.46|11.54|3.88|9.20|14.52 -406,90.40,253,0,0,6,0,187,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -410,90.65,253,0,0,6,0,189,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -414,90.65,253,0,0,6,0,189,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -418,90.65,253,0,0,6,0,189,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -423,90.65,253,0,0,6,0,189,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -427,90.65,253,0,0,6,0,189,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -431,90.65,253,0,0,6,0,189,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -435,90.65,253,0,0,6,0,189,53|55|50|14|35|46,13.03|13.46|12.39|4.73|9.20|11.54 -439,84.05,222,0,0,6,0,189,53|55|50|14|35|15,13.03|13.46|12.39|4.73|9.20|4.94 -443,84.05,222,0,0,6,0,189,54|55|50|14|35|14,13.25|13.46|12.39|4.73|9.20|4.73 -447,85.33,228,0,0,6,0,189,60|55|50|14|35|14,14.52|13.46|12.39|4.73|9.20|4.73 -451,89.59,248,0,0,6,0,189,60|55|50|14|55|14,14.52|13.46|12.39|4.73|13.46|4.73 -455,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -459,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -463,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -467,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -471,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -476,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -480,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -484,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -488,90.65,253,0,0,6,0,189,60|55|50|14|60|14,14.52|13.46|12.39|4.73|14.52|4.73 -492,90.23,251,0,0,6,0,189,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -496,90.35,251,0,0,6,0,190,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -501,90.74,251,0,0,6,0,193,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -505,90.74,251,0,0,6,0,193,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -509,90.74,251,0,0,6,0,193,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -513,90.74,251,0,0,6,0,193,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -517,90.74,251,0,0,6,0,193,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -522,90.74,251,0,0,6,0,193,59|55|50|14|59|14,14.31|13.46|12.39|4.73|14.31|4.73 -526,74.98,177,0,0,6,0,193,22|55|50|14|22|14,6.43|13.46|12.39|4.73|6.43|4.73 -530,80.69,187,0,0,6,0,221,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -533,90.78,187,0,0,6,0,300,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -537,90.78,187,0,0,6,0,300,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -542,90.78,187,0,0,6,0,300,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -546,90.78,187,0,0,6,0,300,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -550,90.78,187,0,0,6,0,300,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -553,90.78,187,0,0,6,0,300,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -558,91.80,187,0,0,6,0,308,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -562,91.80,187,0,0,6,0,308,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -566,91.80,187,0,0,6,0,308,21|55|60|15|22|14,6.22|13.46|14.52|4.94|6.43|4.73 -570,90.74,182,0,0,6,0,308,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -574,91.89,182,0,0,6,0,317,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -579,91.89,182,0,0,6,0,317,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -583,91.89,182,0,0,6,0,317,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -588,91.89,182,0,0,6,0,317,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -592,91.89,182,0,0,6,0,317,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -596,91.89,182,0,0,6,0,317,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -600,91.89,182,0,0,6,0,317,20|55|58|15|20|14,6.01|13.46|14.10|4.94|6.01|4.73 -604,79.32,123,0,0,6,0,317,2|55|35|15|2|14,2.17|13.46|9.20|4.94|2.17|4.73 -608,77.19,113,0,0,6,0,317,2|60|20|15|2|14,2.17|14.52|6.01|4.94|2.17|4.73 -612,78.90,121,0,0,6,0,317,2|60|20|15|2|22,2.17|14.52|6.01|4.94|2.17|6.43 -616,82.94,140,0,0,6,0,317,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -620,84.09,140,0,0,6,0,326,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -624,88.82,140,0,0,6,0,363,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -628,88.82,140,0,0,6,0,363,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -632,88.82,140,0,0,6,0,363,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -636,88.82,140,0,0,6,0,363,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -639,88.82,140,0,0,6,0,363,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -643,88.82,140,0,0,6,0,363,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -647,88.82,140,0,0,6,0,363,9|60|20|15|8|28,3.66|14.52|6.01|4.94|3.45|7.71 -651,87.76,135,0,0,6,0,363,8|59|19|15|7|27,3.45|14.31|5.79|4.94|3.24|7.50 -655,87.97,136,0,0,6,0,363,8|59|19|15|8|27,3.45|14.31|5.79|4.94|3.45|7.50 -659,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -664,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -668,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -672,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -676,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -680,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -684,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -688,88.82,140,0,0,6,0,363,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -692,88.69,140,0,0,6,0,362,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -695,78.98,140,0,0,6,0,286,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -699,74.13,140,0,0,6,0,248,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -702,65.44,140,0,0,6,0,180,8|59|19|19|8|27,3.45|14.31|5.79|5.79|3.45|7.50 -705,56.37,137,0,0,6,0,114,5|59|19|19|8|27,2.81|14.31|5.79|5.79|3.45|7.50 -707,46.36,132,0,0,5,0,55,0|59|19|19|8|27,0.34|14.31|5.79|5.79|3.45|7.50 -710,29.15,73,0,0,4,1,20,0|0|19|19|8|27,0.17|1.75|5.79|5.79|3.45|7.50 -712,21.74,54,0,0,3,2,9,0|0|0|19|8|27,0.17|0.68|0.85|5.79|3.45|7.50 -714,17.57,41,0,0,3,2,6,0|0|0|6|8|27,0.00|0.51|0.17|3.02|3.45|7.50 -715,14.33,34,0,0,2,3,3,0|0|0|0|7|27,0.00|0.51|0.00|0.55|3.24|7.50 -717,11.65,27,0,0,1,4,2,0|0|0|0|0|27,0.00|0.17|0.00|0.21|1.36|7.50 -719,7.77,15,0,0,1,3,1,0|0|0|0|0|15,0.00|0.00|0.00|0.21|0.34|4.94 -720,2.70,0,0,0,0,4,0,0|0|0|0|0|0,0.00|0.00|0.00|0.21|0.17|0.17 -721,2.66,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.17|0.17|0.17 -723,2.49,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.17|0.00|0.17 -724,2.32,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.17|0.00|0.00 -725,2.15,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -726,2.15,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -728,2.15,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -729,2.15,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -730,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case1-pass0.csv deleted file mode 100644 index 845bcb84..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -643|62|722,716,710,516,571,626|79.89 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case1-result.csv deleted file mode 100644 index a302c46c..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|643|62|722,716,710,516,571,626|79.89 -AVG|643|62|N/A|79.89 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case2-result.csv deleted file mode 100644 index 8d283971..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case2-result.csv +++ /dev/null @@ -1,56 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|54.28 -11|400|27|60.75 -17|400|75|72.72 -23|400|122|84.43 -30|400|130|86.18 -72|400|128|87.59 -107|400|99|81.75 -114|400|92|81.62 -122|305|127|76.94 -129|300|178|87.16 -136|300|180|87.59 -166|300|178|88.86 -209|251|178|82.60 -214|208|179|77.32 -221|200|194|79.49 -227|200|195|79.71 -233|200|196|79.92 -304|114|196|68.93 -309|101|197|67.48 -315|100|201|68.21 -322|100|228|73.96 -331|100|263|81.41 -395|166|263|89.84 -430|166|213|79.20 -437|166|217|80.05 -442|166|226|81.96 -450|166|229|82.60 -458|171|230|83.45 -465|200|233|87.80 -479|200|234|88.01 -485|212|232|89.12 -500|212|228|88.27 -508|220|228|89.29 -522|220|176|78.22 -534|220|169|76.73 -541|220|206|84.60 -549|220|216|86.73 -556|237|216|88.91 -585|243|212|88.82 -593|246|210|88.78 -624|329|146|85.75 -632|329|150|86.61 -652|346|150|88.78 -660|346|145|87.71 -667|346|146|87.93 -674|346|147|88.14 -689|346|150|88.78 -704|346|149|88.57 -711|347|148|88.48 -717|255|146|76.30 -724|134|145|60.63 -729|22|145|46.32 -733|3|65|22.51 -737|1|2|5.77 -740|1|0|3.13 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case2.log deleted file mode 100644 index 79ad7c58..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_4/mnist-case2.log +++ /dev/null @@ -1,110 +0,0 @@ -5,54.28,0,5,1,0,0,400,0|0|0|0|0|0,1.02|0.00|0.00|0.00|0.00|0.00 -11,60.75,27,5,0,1,0,400,27|0|0|0|0|0,7.50|0.00|0.00|0.00|0.00|0.00 -17,72.72,75,4,0,2,0,400,60|15|0|0|0|0,14.52|4.94|0.00|0.00|0.00|0.00 -23,84.43,122,3,0,3,0,400,60|57|5|0|0|0,14.52|13.88|2.77|0.00|0.00|0.00 -30,86.18,130,3,0,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|0.00|0.00|0.00 -36,87.93,130,2,1,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.00|0.00 -43,87.97,130,1,2,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.04|0.00 -52,88.01,130,0,3,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.04|0.04 -58,88.01,130,0,3,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.04|0.04 -64,88.01,130,0,3,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.04|0.04 -72,87.59,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.04|0.04 -82,87.76,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.04|0.21 -88,87.93,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.04|0.38 -94,87.93,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.04|0.38 -100,87.93,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.04|0.38 -107,81.75,99,0,3,3,0,400,59|30|10|0|0|0,14.31|8.13|3.88|1.75|0.04|0.38 -114,81.62,92,0,2,4,0,400,30|37|10|0|0|15,8.13|9.63|3.88|1.75|0.04|4.94 -122,76.94,127,0,2,4,0,305,31|54|10|0|0|32,8.35|13.25|3.88|1.75|0.04|8.56 -129,87.16,178,0,2,4,0,300,60|56|10|0|0|52,14.52|13.67|3.88|1.75|0.04|12.82 -136,87.59,180,0,2,4,0,300,60|57|10|0|0|53,14.52|13.88|3.88|1.75|0.04|13.03 -145,87.59,180,0,2,4,0,300,60|57|10|0|0|53,14.52|13.88|3.88|1.75|0.04|13.03 -151,87.59,180,0,2,4,0,300,60|57|10|0|0|53,14.52|13.88|3.88|1.75|0.04|13.03 -158,87.59,180,0,2,4,0,300,60|57|10|0|0|53,14.52|13.88|3.88|1.75|0.04|13.03 -166,88.86,178,0,1,5,0,300,55|57|10|0|3|53,13.46|13.88|3.88|1.75|2.39|13.03 -173,88.86,178,0,1,5,0,300,55|57|10|0|3|53,13.46|13.88|3.88|1.75|2.39|13.03 -180,88.86,178,0,1,5,0,300,55|57|10|0|3|53,13.46|13.88|3.88|1.75|2.39|13.03 -187,88.86,178,0,1,5,0,300,55|57|10|0|3|53,13.46|13.88|3.88|1.75|2.39|13.03 -195,88.86,178,0,1,5,0,300,55|57|10|0|3|53,13.46|13.88|3.88|1.75|2.39|13.03 -203,88.86,178,0,1,5,0,300,55|57|10|0|3|53,13.46|13.88|3.88|1.75|2.39|13.03 -209,82.60,178,0,1,5,0,251,55|57|10|0|3|53,13.46|13.88|3.88|1.75|2.39|13.03 -214,77.32,179,0,1,5,0,208,55|57|11|0|3|53,13.46|13.88|4.09|1.75|2.39|13.03 -221,79.49,194,0,0,6,0,200,55|57|11|15|3|53,13.46|13.88|4.09|4.94|2.39|13.03 -227,79.71,195,0,0,6,0,200,55|57|11|15|4|53,13.46|13.88|4.09|4.94|2.60|13.03 -233,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -242,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -249,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -255,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -262,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -269,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -275,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -281,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -287,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -292,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -298,79.92,196,0,0,6,0,200,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -304,68.93,196,0,0,6,0,114,55|57|11|15|5|53,13.46|13.88|4.09|4.94|2.81|13.03 -309,67.48,197,0,0,6,0,101,56|57|11|15|5|53,13.67|13.88|4.09|4.94|2.81|13.03 -315,68.21,201,0,0,6,0,100,56|60|11|15|5|54,13.67|14.52|4.09|4.94|2.81|13.25 -322,73.96,228,0,0,6,0,100,60|60|11|15|22|60,14.52|14.52|4.09|4.94|6.43|14.52 -331,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -339,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -345,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -352,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -359,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -366,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -373,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -380,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -388,81.41,263,0,0,6,0,100,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -395,89.84,263,0,0,6,0,166,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -402,89.84,263,0,0,6,0,166,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -409,89.84,263,0,0,6,0,166,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -415,89.84,263,0,0,6,0,166,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -422,89.84,263,0,0,6,0,166,60|60|11|15|57|60,14.52|14.52|4.09|4.94|13.88|14.52 -430,79.20,213,0,0,6,0,166,43|43|11|15|57|44,10.90|10.90|4.09|4.94|13.88|11.12 -437,80.05,217,0,0,6,0,166,43|43|11|15|57|48,10.90|10.90|4.09|4.94|13.88|11.97 -442,81.96,226,0,0,6,0,166,43|43|11|15|57|57,10.90|10.90|4.09|4.94|13.88|13.88 -450,82.60,229,0,0,6,0,166,43|43|11|15|60|57,10.90|10.90|4.09|4.94|14.52|13.88 -458,83.45,230,0,0,6,0,171,43|43|12|15|60|57,10.90|10.90|4.30|4.94|14.52|13.88 -465,87.80,233,0,0,6,0,200,43|43|15|15|60|57,10.90|10.90|4.94|4.94|14.52|13.88 -473,87.80,233,0,0,6,0,200,43|43|15|15|60|57,10.90|10.90|4.94|4.94|14.52|13.88 -479,88.01,234,0,0,6,0,200,42|42|15|20|60|55,10.69|10.69|4.94|6.01|14.52|13.46 -485,89.12,232,0,0,6,0,212,42|42|15|22|56|55,10.69|10.69|4.94|6.43|13.67|13.46 -493,89.12,232,0,0,6,0,212,42|42|15|22|56|55,10.69|10.69|4.94|6.43|13.67|13.46 -500,88.27,228,0,0,6,0,212,42|42|11|22|56|55,10.69|10.69|4.09|6.43|13.67|13.46 -508,89.29,228,0,0,6,0,220,42|42|11|22|56|55,10.69|10.69|4.09|6.43|13.67|13.46 -515,89.29,228,0,0,6,0,220,42|42|11|22|56|55,10.69|10.69|4.09|6.43|13.67|13.46 -522,78.22,176,0,0,6,0,220,42|43|11|22|2|56,10.69|10.90|4.09|6.43|2.17|13.67 -528,78.22,176,0,0,6,0,220,42|43|11|22|2|56,10.69|10.90|4.09|6.43|2.17|13.67 -534,76.73,169,0,0,6,0,220,42|43|4|22|2|56,10.69|10.90|2.60|6.43|2.17|13.67 -541,84.60,206,0,0,6,0,220,42|44|2|58|3|57,10.69|11.12|2.17|14.10|2.39|13.88 -549,86.73,216,0,0,6,0,220,42|46|4|60|5|59,10.69|11.54|2.60|14.52|2.81|14.31 -556,88.91,216,0,0,6,0,237,42|46|4|60|5|59,10.69|11.54|2.60|14.52|2.81|14.31 -562,88.91,216,0,0,6,0,237,42|46|4|60|5|59,10.69|11.54|2.60|14.52|2.81|14.31 -568,88.91,216,0,0,6,0,237,42|46|4|60|5|59,10.69|11.54|2.60|14.52|2.81|14.31 -576,88.91,216,0,0,6,0,237,42|46|4|60|5|59,10.69|11.54|2.60|14.52|2.81|14.31 -585,88.82,212,0,0,6,0,243,42|45|4|59|4|58,10.69|11.33|2.60|14.31|2.60|14.10 -593,88.78,210,0,0,6,0,246,42|45|2|59|4|58,10.69|11.33|2.17|14.31|2.60|14.10 -600,88.78,210,0,0,6,0,246,42|45|2|59|4|58,10.69|11.33|2.17|14.31|2.60|14.10 -607,88.78,210,0,0,6,0,246,42|45|2|59|4|58,10.69|11.33|2.17|14.31|2.60|14.10 -616,88.78,210,0,0,6,0,246,42|45|2|59|4|58,10.69|11.33|2.17|14.31|2.60|14.10 -624,85.75,146,0,0,6,0,329,43|22|3|35|8|35,10.90|6.43|2.39|9.20|3.45|9.20 -632,86.61,150,0,0,6,0,329,43|22|3|35|12|35,10.90|6.43|2.39|9.20|4.30|9.20 -638,86.61,150,0,0,6,0,329,43|22|3|35|12|35,10.90|6.43|2.39|9.20|4.30|9.20 -646,86.61,150,0,0,6,0,329,43|22|3|35|12|35,10.90|6.43|2.39|9.20|4.30|9.20 -652,88.78,150,0,0,6,0,346,43|22|3|35|12|35,10.90|6.43|2.39|9.20|4.30|9.20 -660,87.71,145,0,0,6,0,346,40|22|3|35|10|35,10.26|6.43|2.39|9.20|3.88|9.20 -667,87.93,146,0,0,6,0,346,42|22|3|34|11|34,10.69|6.43|2.39|8.99|4.09|8.99 -674,88.14,147,0,0,6,0,346,42|22|3|34|12|34,10.69|6.43|2.39|8.99|4.30|8.99 -681,88.14,147,0,0,6,0,346,42|22|3|34|12|34,10.69|6.43|2.39|8.99|4.30|8.99 -689,88.78,150,0,0,6,0,346,42|22|6|34|12|34,10.69|6.43|3.02|8.99|4.30|8.99 -697,88.78,150,0,0,6,0,346,42|22|6|34|12|34,10.69|6.43|3.02|8.99|4.30|8.99 -704,88.57,149,0,0,6,0,346,41|22|6|34|12|34,10.48|6.43|3.02|8.99|4.30|8.99 -711,88.48,148,0,0,6,0,347,41|22|6|33|12|34,10.48|6.43|3.02|8.77|4.30|8.99 -717,76.30,146,0,0,6,0,255,41|21|6|33|12|33,10.48|6.22|3.02|8.77|4.30|8.77 -724,60.63,145,0,0,6,0,134,41|21|6|33|11|33,10.48|6.22|3.02|8.77|4.09|8.77 -729,46.32,145,0,0,6,0,22,41|21|6|33|11|33,10.48|6.22|3.02|8.77|4.09|8.77 -733,22.51,65,0,0,3,3,3,0|0|0|21|11|33,0.21|0.34|0.34|6.22|4.09|8.77 -737,5.77,2,0,0,1,5,1,0|0|0|0|0|2,0.00|0.17|0.17|0.68|0.51|1.96 -740,3.13,0,0,0,0,5,1,0|0|0|0|0|0,0.00|0.00|0.00|0.17|0.51|0.17 -743,2.45,0,0,0,0,3,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.17|0.00 -746,2.28,0,0,0,0,0,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case1-pass0.csv deleted file mode 100644 index aa246178..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -688|21|725,719,714,669,671,632|80.26 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case1-result.csv deleted file mode 100644 index f762d4f2..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|688|21|725,719,714,669,671,632|80.26 -AVG|688|21|N/A|80.26 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case2-result.csv deleted file mode 100644 index 7d65d83e..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case2-result.csv +++ /dev/null @@ -1,61 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -6|400|8|56.67 -11|400|15|58.20 -16|400|74|72.51 -21|400|85|76.55 -27|400|130|86.18 -66|400|104|82.65 -73|400|119|87.37 -106|400|115|87.54 -112|400|92|83.33 -120|309|106|74.68 -129|302|153|83.80 -136|300|153|83.54 -153|300|158|84.60 -159|300|168|86.73 -165|300|170|87.16 -199|300|169|86.95 -214|211|169|75.58 -220|200|195|79.71 -227|200|197|80.13 -273|200|188|78.22 -279|200|197|80.13 -305|110|197|68.63 -310|100|208|69.70 -316|100|254|79.49 -322|100|261|80.98 -369|100|259|80.56 -384|100|261|80.98 -399|172|261|90.18 -419|172|259|89.76 -428|172|261|90.18 -455|172|188|74.64 -460|200|187|78.00 -468|200|216|84.18 -481|200|234|88.01 -488|226|234|91.33 -501|227|229|90.40 -507|233|230|91.38 -538|233|159|76.26 -544|233|189|82.65 -550|248|219|90.95 -577|248|213|89.67 -584|256|209|89.84 -591|263|209|90.74 -613|263|202|89.25 -622|344|162|91.08 -630|345|150|88.65 -637|345|162|91.21 -661|345|146|87.80 -668|345|157|90.14 -675|349|157|90.65 -683|353|157|91.16 -704|353|154|90.52 -710|361|152|91.12 -716|358|152|90.74 -722|233|152|74.77 -726|145|152|63.52 -731|63|147|51.64 -735|12|78|26.55 -740|2|78|22.72 -744|0|0|3.94 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case2.log deleted file mode 100644 index fa504b73..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_5/mnist-case2.log +++ /dev/null @@ -1,112 +0,0 @@ -6,56.67,8,5,0,1,0,400,8|0|0|0|0|0,3.41|0.00|0.00|0.00|0.00|0.00 -11,58.20,15,4,1,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -16,72.51,74,4,0,2,0,400,60|14|0|0|0|0,14.52|4.73|0.00|0.00|0.00|0.00 -21,76.55,85,3,0,3,0,400,60|16|9|0|0|0,14.52|5.15|3.62|0.00|0.00|0.00 -27,86.18,130,3,0,3,0,400,60|55|15|0|0|0,14.52|13.46|4.94|0.00|0.00|0.00 -35,87.93,130,2,1,3,0,400,60|55|15|0|0|0,14.52|13.46|4.94|1.75|0.00|0.00 -43,88.14,130,1,2,3,0,400,60|55|15|0|0|0,14.52|13.46|4.94|1.75|0.21|0.00 -49,88.18,130,0,3,3,0,400,60|55|15|0|0|0,14.52|13.46|4.94|1.75|0.21|0.04 -58,88.18,130,0,3,3,0,400,60|55|15|0|0|0,14.52|13.46|4.94|1.75|0.21|0.04 -66,82.65,104,0,2,4,0,400,31|55|15|3|0|0,8.35|13.46|4.94|2.39|0.21|0.04 -73,87.37,119,0,1,5,0,400,31|55|15|3|15|0,8.35|13.46|4.94|2.39|4.94|0.04 -83,88.39,119,0,1,5,0,400,31|55|15|3|15|0,8.35|13.46|4.94|2.39|4.94|1.06 -91,88.39,119,0,1,5,0,400,31|55|15|3|15|0,8.35|13.46|4.94|2.39|4.94|1.06 -97,88.39,119,0,1,5,0,400,31|55|15|3|15|0,8.35|13.46|4.94|2.39|4.94|1.06 -106,87.54,115,0,1,5,0,400,31|55|15|3|11|0,8.35|13.46|4.94|2.39|4.09|1.06 -112,83.33,92,0,0,6,0,400,2|55|15|3|2|15,2.17|13.46|4.94|2.39|2.17|4.94 -120,74.68,106,0,0,6,0,309,2|55|15|3|11|20,2.17|13.46|4.94|2.39|4.09|6.01 -129,83.80,153,0,0,6,0,302,9|55|15|3|29|42,3.66|13.46|4.94|2.39|7.92|10.69 -136,83.54,153,0,0,6,0,300,9|55|15|3|29|42,3.66|13.46|4.94|2.39|7.92|10.69 -144,83.54,153,0,0,6,0,300,9|55|15|3|29|42,3.66|13.46|4.94|2.39|7.92|10.69 -153,84.60,158,0,0,6,0,300,9|60|15|3|29|42,3.66|14.52|4.94|2.39|7.92|10.69 -159,86.73,168,0,0,6,0,300,9|60|27|3|28|41,3.66|14.52|7.50|2.39|7.71|10.48 -165,87.16,170,0,0,6,0,300,9|60|28|4|28|41,3.66|14.52|7.71|2.60|7.71|10.48 -172,87.16,170,0,0,6,0,300,9|60|28|4|28|41,3.66|14.52|7.71|2.60|7.71|10.48 -180,87.16,170,0,0,6,0,300,9|60|28|4|28|41,3.66|14.52|7.71|2.60|7.71|10.48 -187,87.16,170,0,0,6,0,300,9|60|28|4|28|41,3.66|14.52|7.71|2.60|7.71|10.48 -193,87.16,170,0,0,6,0,300,9|60|28|4|28|41,3.66|14.52|7.71|2.60|7.71|10.48 -199,86.95,169,0,0,6,0,300,9|59|28|4|28|41,3.66|14.31|7.71|2.60|7.71|10.48 -206,86.95,169,0,0,6,0,300,9|59|28|4|28|41,3.66|14.31|7.71|2.60|7.71|10.48 -214,75.58,169,0,0,6,0,211,9|59|28|4|28|41,3.66|14.31|7.71|2.60|7.71|10.48 -220,79.71,195,0,0,6,0,200,9|60|53|4|28|41,3.66|14.52|13.03|2.60|7.71|10.48 -227,80.13,197,0,0,6,0,200,10|60|53|4|29|41,3.88|14.52|13.03|2.60|7.92|10.48 -234,80.13,197,0,0,6,0,200,10|60|53|4|29|41,3.88|14.52|13.03|2.60|7.92|10.48 -240,80.13,197,0,0,6,0,200,10|60|53|4|29|41,3.88|14.52|13.03|2.60|7.92|10.48 -246,80.13,197,0,0,6,0,200,10|60|53|4|29|41,3.88|14.52|13.03|2.60|7.92|10.48 -254,80.13,197,0,0,6,0,200,10|60|53|4|29|41,3.88|14.52|13.03|2.60|7.92|10.48 -260,80.13,197,0,0,6,0,200,10|60|53|4|29|41,3.88|14.52|13.03|2.60|7.92|10.48 -267,80.13,197,0,0,6,0,200,10|60|53|4|29|41,3.88|14.52|13.03|2.60|7.92|10.48 -273,78.22,188,0,0,6,0,200,10|51|53|4|29|41,3.88|12.61|13.03|2.60|7.92|10.48 -279,80.13,197,0,0,6,0,200,10|54|59|4|29|41,3.88|13.25|14.31|2.60|7.92|10.48 -287,80.13,197,0,0,6,0,200,10|54|59|4|29|41,3.88|13.25|14.31|2.60|7.92|10.48 -293,80.13,197,0,0,6,0,200,10|54|59|4|29|41,3.88|13.25|14.31|2.60|7.92|10.48 -299,80.13,197,0,0,6,0,200,10|54|59|4|29|41,3.88|13.25|14.31|2.60|7.92|10.48 -305,68.63,197,0,0,6,0,110,10|54|59|4|29|41,3.88|13.25|14.31|2.60|7.92|10.48 -310,69.70,208,0,0,6,0,100,10|53|60|15|29|41,3.88|13.03|14.52|4.94|7.92|10.48 -316,79.49,254,0,0,6,0,100,10|60|60|54|29|41,3.88|14.52|14.52|13.25|7.92|10.48 -322,80.98,261,0,0,6,0,100,10|60|60|60|29|42,3.88|14.52|14.52|14.52|7.92|10.69 -328,80.98,261,0,0,6,0,100,10|60|60|60|29|42,3.88|14.52|14.52|14.52|7.92|10.69 -334,80.98,261,0,0,6,0,100,10|60|60|60|29|42,3.88|14.52|14.52|14.52|7.92|10.69 -340,80.98,261,0,0,6,0,100,10|60|60|60|29|42,3.88|14.52|14.52|14.52|7.92|10.69 -349,80.98,261,0,0,6,0,100,10|60|60|60|29|42,3.88|14.52|14.52|14.52|7.92|10.69 -356,80.98,261,0,0,6,0,100,10|60|60|60|29|42,3.88|14.52|14.52|14.52|7.92|10.69 -362,80.98,261,0,0,6,0,100,10|60|60|60|29|42,3.88|14.52|14.52|14.52|7.92|10.69 -369,80.56,259,0,0,6,0,100,10|60|59|59|29|42,3.88|14.52|14.31|14.31|7.92|10.69 -376,80.56,259,0,0,6,0,100,12|58|59|59|29|42,4.30|14.10|14.31|14.31|7.92|10.69 -384,80.98,261,0,0,6,0,100,12|59|59|60|29|42,4.30|14.31|14.31|14.52|7.92|10.69 -392,80.98,261,0,0,6,0,100,12|59|59|60|29|42,4.30|14.31|14.31|14.52|7.92|10.69 -399,90.18,261,0,0,6,0,172,12|59|59|60|29|42,4.30|14.31|14.31|14.52|7.92|10.69 -405,90.18,261,0,0,6,0,172,12|59|59|60|29|42,4.30|14.31|14.31|14.52|7.92|10.69 -413,90.18,261,0,0,6,0,172,12|59|59|60|29|42,4.30|14.31|14.31|14.52|7.92|10.69 -419,89.76,259,0,0,6,0,172,12|58|59|59|29|42,4.30|14.10|14.31|14.31|7.92|10.69 -428,90.18,261,0,0,6,0,172,14|58|59|59|29|42,4.73|14.10|14.31|14.31|7.92|10.69 -435,90.18,261,0,0,6,0,172,14|58|59|59|29|42,4.73|14.10|14.31|14.31|7.92|10.69 -443,90.18,261,0,0,6,0,172,14|58|59|59|29|42,4.73|14.10|14.31|14.31|7.92|10.69 -449,90.18,261,0,0,6,0,172,14|58|59|59|29|42,4.73|14.10|14.31|14.31|7.92|10.69 -455,74.64,188,0,0,6,0,172,14|21|59|23|29|42,4.73|6.22|14.31|6.64|7.92|10.69 -460,78.00,187,0,0,6,0,200,14|21|59|22|29|42,4.73|6.22|14.31|6.43|7.92|10.69 -468,84.18,216,0,0,6,0,200,14|40|59|22|29|52,4.73|10.26|14.31|6.43|7.92|12.82 -475,84.18,216,0,0,6,0,200,14|40|59|22|29|52,4.73|10.26|14.31|6.43|7.92|12.82 -481,88.01,234,0,0,6,0,200,14|40|59|22|47|52,4.73|10.26|14.31|6.43|11.75|12.82 -488,91.33,234,0,0,6,0,226,14|40|59|22|47|52,4.73|10.26|14.31|6.43|11.75|12.82 -494,91.33,234,0,0,6,0,226,14|40|59|22|47|52,4.73|10.26|14.31|6.43|11.75|12.82 -501,90.40,229,0,0,6,0,227,14|38|59|21|47|50,4.73|9.84|14.31|6.22|11.75|12.39 -507,91.38,230,0,0,6,0,233,14|38|60|21|47|50,4.73|9.84|14.52|6.22|11.75|12.39 -516,91.38,230,0,0,6,0,233,14|38|60|21|47|50,4.73|9.84|14.52|6.22|11.75|12.39 -523,91.38,230,0,0,6,0,233,14|38|60|21|47|50,4.73|9.84|14.52|6.22|11.75|12.39 -532,91.38,230,0,0,6,0,233,14|38|60|21|47|50,4.73|9.84|14.52|6.22|11.75|12.39 -538,76.26,159,0,0,6,0,233,14|20|41|3|50|31,4.73|6.01|10.48|2.39|12.39|8.35 -544,82.65,189,0,0,6,0,233,15|20|41|3|60|50,4.94|6.01|10.48|2.39|14.52|12.39 -550,90.95,219,0,0,6,0,248,45|20|41|3|60|50,11.33|6.01|10.48|2.39|14.52|12.39 -556,90.95,219,0,0,6,0,248,45|20|41|3|60|50,11.33|6.01|10.48|2.39|14.52|12.39 -565,90.95,219,0,0,6,0,248,45|20|41|3|60|50,11.33|6.01|10.48|2.39|14.52|12.39 -571,90.95,219,0,0,6,0,248,45|20|41|3|60|50,11.33|6.01|10.48|2.39|14.52|12.39 -577,89.67,213,0,0,6,0,248,45|19|40|2|58|49,11.33|5.79|10.26|2.17|14.10|12.18 -584,89.84,209,0,0,6,0,256,40|20|40|2|58|49,10.26|6.01|10.26|2.17|14.10|12.18 -591,90.74,209,0,0,6,0,263,40|20|40|2|58|49,10.26|6.01|10.26|2.17|14.10|12.18 -598,90.74,209,0,0,6,0,263,40|20|40|2|58|49,10.26|6.01|10.26|2.17|14.10|12.18 -606,90.74,209,0,0,6,0,263,40|20|40|2|58|49,10.26|6.01|10.26|2.17|14.10|12.18 -613,89.25,202,0,0,6,0,263,40|17|39|2|58|46,10.26|5.37|10.05|2.17|14.10|11.54 -622,91.08,162,0,0,6,0,344,40|9|28|2|46|37,10.26|3.66|7.71|2.17|11.54|9.63 -630,88.65,150,0,0,6,0,345,28|9|28|2|46|37,7.71|3.66|7.71|2.17|11.54|9.63 -637,91.21,162,0,0,6,0,345,2|9|28|40|46|37,2.17|3.66|7.71|10.26|11.54|9.63 -646,91.21,162,0,0,6,0,345,2|9|28|40|46|37,2.17|3.66|7.71|10.26|11.54|9.63 -652,91.21,162,0,0,6,0,345,2|9|28|40|46|37,2.17|3.66|7.71|10.26|11.54|9.63 -661,87.80,146,0,0,6,0,345,2|2|25|40|43|34,2.17|2.17|7.07|10.26|10.90|8.99 -668,90.14,157,0,0,6,0,345,5|5|27|41|45|34,2.81|2.81|7.50|10.48|11.33|8.99 -675,90.65,157,0,0,6,0,349,5|5|27|41|45|34,2.81|2.81|7.50|10.48|11.33|8.99 -683,91.16,157,0,0,6,0,353,5|5|27|41|45|34,2.81|2.81|7.50|10.48|11.33|8.99 -690,91.16,157,0,0,6,0,353,5|5|27|41|45|34,2.81|2.81|7.50|10.48|11.33|8.99 -697,91.16,157,0,0,6,0,353,5|5|27|41|45|34,2.81|2.81|7.50|10.48|11.33|8.99 -704,90.52,154,0,0,6,0,353,5|5|26|40|44|34,2.81|2.81|7.28|10.26|11.12|8.99 -710,91.12,152,0,0,6,0,361,4|4|26|40|45|33,2.60|2.60|7.28|10.26|11.33|8.77 -716,90.74,152,0,0,6,0,358,4|4|26|40|45|33,2.60|2.60|7.28|10.26|11.33|8.77 -722,74.77,152,0,0,6,0,233,4|4|26|40|45|33,2.60|2.60|7.28|10.26|11.33|8.77 -726,63.52,152,0,0,6,0,145,4|4|26|40|45|33,2.60|2.60|7.28|10.26|11.33|8.77 -731,51.64,147,0,0,5,1,63,0|3|26|40|45|33,1.41|2.39|7.28|10.26|11.33|8.77 -735,26.55,78,0,0,2,2,12,0|0|0|0|45|33,0.34|0.51|0.51|1.41|11.33|8.77 -740,22.72,78,0,0,2,1,2,0|0|0|0|45|33,0.00|0.00|0.00|0.21|11.33|8.77 -744,3.94,0,0,0,0,3,0,0|0|0|0|0|0,0.00|0.00|0.00|0.04|0.51|1.24 -747,3.17,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.17|0.85 -750,2.49,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.34 -753,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case1-pass0.csv deleted file mode 100644 index 7dee5827..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -640|70|728,723,706,518,538,628|80.71 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case1-result.csv deleted file mode 100644 index a8ba086d..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|640|70|728,723,706,518,538,628|80.71 -AVG|640|70|N/A|80.71 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case2-result.csv deleted file mode 100644 index 745b604a..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case2-result.csv +++ /dev/null @@ -1,41 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.43 -9|400|15|58.20 -14|400|38|64.63 -19|400|75|72.72 -25|400|98|79.32 -31|400|127|85.54 -76|400|125|88.14 -109|400|102|83.75 -116|400|116|87.93 -123|307|119|76.68 -130|300|126|77.28 -154|300|132|78.56 -160|300|172|87.07 -194|300|156|84.18 -203|300|172|87.59 -217|207|172|75.70 -223|200|195|79.71 -241|200|196|79.92 -303|199|196|79.79 -308|109|196|68.29 -315|101|214|71.10 -322|100|260|80.77 -404|174|260|90.23 -438|174|210|79.58 -444|174|245|87.03 -469|194|245|89.59 -476|194|241|88.74 -482|194|242|88.95 -488|194|245|89.59 -525|195|244|89.50 -554|195|232|86.95 -561|289|187|89.37 -569|294|187|90.01 -718|258|187|85.41 -723|182|187|75.70 -728|93|187|64.33 -732|21|173|52.15 -737|4|99|30.90 -741|3|10|8.33 -744|3|0|3.26 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case2.log deleted file mode 100644 index d17f6cdb..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_6/mnist-case2.log +++ /dev/null @@ -1,113 +0,0 @@ -5,53.43,0,5,1,0,0,400,0|0|0|0|0|0,0.17|0.00|0.00|0.00|0.00|0.00 -9,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -14,64.63,38,4,0,2,0,400,36|2|0|0|0|0,9.41|1.96|0.00|0.00|0.00|0.00 -19,72.72,75,4,0,2,0,400,60|15|0|0|0|0,14.52|4.94|0.00|0.00|0.00|0.00 -25,79.32,98,3,1,2,0,400,60|38|0|0|0|0,14.52|9.84|1.70|0.00|0.00|0.00 -31,85.54,127,2,1,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|0.00|0.00|0.00 -37,87.29,127,2,1,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|0.00|0.00 -45,88.52,127,1,2,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.00 -52,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -62,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -68,88.57,127,0,3,3,0,400,60|60|7|0|0|0,14.52|14.52|3.24|1.75|1.24|0.04 -76,88.14,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.04 -83,88.65,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.55 -90,88.65,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.55 -97,88.65,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.55 -103,88.65,125,0,3,3,0,400,59|59|7|0|0|0,14.31|14.31|3.24|1.75|1.24|0.55 -109,83.75,102,0,3,3,0,400,49|46|7|0|0|0,12.18|11.54|3.24|1.75|1.24|0.55 -116,87.93,116,0,2,4,0,400,44|51|7|0|0|14,11.12|12.61|3.24|1.75|1.24|4.73 -123,76.68,119,0,2,4,0,307,44|53|7|0|0|15,11.12|13.03|3.24|1.75|1.24|4.94 -130,77.28,126,0,2,4,0,300,44|60|7|0|0|15,11.12|14.52|3.24|1.75|1.24|4.94 -137,77.28,126,0,2,4,0,300,44|60|7|0|0|15,11.12|14.52|3.24|1.75|1.24|4.94 -145,77.28,126,0,2,4,0,300,44|60|7|0|0|15,11.12|14.52|3.24|1.75|1.24|4.94 -154,78.56,132,0,2,4,0,300,43|60|15|0|0|14,10.90|14.52|4.94|1.75|1.24|4.73 -160,87.07,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.24|4.73 -167,87.59,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.75|4.73 -174,87.59,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.75|4.73 -181,87.59,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.75|4.73 -188,87.59,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.75|4.73 -194,84.18,156,0,2,4,0,300,59|52|31|0|0|14,14.31|12.82|8.35|1.75|1.75|4.73 -203,87.59,172,0,1,5,0,300,59|52|35|0|12|14,14.31|12.82|9.20|1.75|4.30|4.73 -209,87.59,172,0,1,5,0,300,59|52|35|0|12|14,14.31|12.82|9.20|1.75|4.30|4.73 -217,75.70,172,0,1,5,0,207,59|52|35|0|12|14,14.31|12.82|9.20|1.75|4.30|4.73 -223,79.71,195,0,0,6,0,200,60|52|35|8|12|28,14.52|12.82|9.20|3.45|4.30|7.71 -229,79.71,195,0,0,6,0,200,60|51|35|8|13|28,14.52|12.61|9.20|3.45|4.51|7.71 -234,79.71,195,0,0,6,0,200,60|52|34|8|13|28,14.52|12.82|8.99|3.45|4.51|7.71 -241,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -249,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -256,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -262,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -269,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -275,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -282,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -289,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -296,79.92,196,0,0,6,0,200,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -303,79.79,196,0,0,6,0,199,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -308,68.29,196,0,0,6,0,109,60|53|34|8|13|28,14.52|13.03|8.99|3.45|4.51|7.71 -315,71.10,214,0,0,6,0,101,60|53|34|15|13|39,14.52|13.03|8.99|4.94|4.51|10.05 -322,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -328,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -336,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -342,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -350,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -359,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -365,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -370,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -377,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -384,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -389,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -395,80.77,260,0,0,6,0,100,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -404,90.23,260,0,0,6,0,174,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -412,90.23,260,0,0,6,0,174,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -418,90.23,260,0,0,6,0,174,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -424,90.23,260,0,0,6,0,174,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -431,90.23,260,0,0,6,0,174,60|53|34|60|13|40,14.52|13.03|8.99|14.52|4.51|10.26 -438,79.58,210,0,0,6,0,174,35|53|34|35|13|40,9.20|13.03|8.99|9.20|4.51|10.26 -444,87.03,245,0,0,6,0,174,48|53|34|35|15|60,11.97|13.03|8.99|9.20|4.94|14.52 -450,87.03,245,0,0,6,0,174,48|53|34|35|15|60,11.97|13.03|8.99|9.20|4.94|14.52 -455,87.03,245,0,0,6,0,174,48|53|34|35|15|60,11.97|13.03|8.99|9.20|4.94|14.52 -462,87.03,245,0,0,6,0,174,48|53|34|35|15|60,11.97|13.03|8.99|9.20|4.94|14.52 -469,89.59,245,0,0,6,0,194,48|53|34|35|15|60,11.97|13.03|8.99|9.20|4.94|14.52 -476,88.74,241,0,0,6,0,194,46|53|34|35|15|58,11.54|13.03|8.99|9.20|4.94|14.10 -482,88.95,242,0,0,6,0,194,47|57|34|33|13|58,11.75|13.88|8.99|8.77|4.51|14.10 -488,89.59,245,0,0,6,0,194,47|60|34|33|13|58,11.75|14.52|8.99|8.77|4.51|14.10 -494,89.59,245,0,0,6,0,194,47|60|34|33|13|58,11.75|14.52|8.99|8.77|4.51|14.10 -501,89.59,245,0,0,6,0,194,47|60|34|33|13|58,11.75|14.52|8.99|8.77|4.51|14.10 -509,89.59,245,0,0,6,0,194,47|60|34|33|13|58,11.75|14.52|8.99|8.77|4.51|14.10 -519,89.59,245,0,0,6,0,194,47|60|34|33|13|58,11.75|14.52|8.99|8.77|4.51|14.10 -525,89.50,244,0,0,6,0,195,47|59|34|33|13|58,11.75|14.31|8.99|8.77|4.51|14.10 -532,89.50,244,0,0,6,0,195,47|59|34|33|13|58,11.75|14.31|8.99|8.77|4.51|14.10 -541,89.50,244,0,0,6,0,195,47|59|34|33|13|58,11.75|14.31|8.99|8.77|4.51|14.10 -548,89.50,244,0,0,6,0,195,47|59|34|33|13|58,11.75|14.31|8.99|8.77|4.51|14.10 -554,86.95,232,0,0,6,0,195,47|47|34|33|13|58,11.75|11.75|8.99|8.77|4.51|14.10 -561,89.37,187,0,0,6,0,289,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -569,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -577,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -584,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -590,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -597,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -604,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -613,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -619,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -626,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -634,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -640,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -647,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -654,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -661,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -668,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -677,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -684,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -690,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -698,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -704,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -711,90.01,187,0,0,6,0,294,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -718,85.41,187,0,0,6,0,258,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -723,75.70,187,0,0,6,0,182,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -728,64.33,187,0,0,6,0,93,47|2|34|33|13|58,11.75|2.17|8.99|8.77|4.51|14.10 -732,52.15,173,0,0,6,0,21,33|2|34|33|13|58,8.77|2.17|8.99|8.77|4.51|14.10 -737,30.90,99,0,0,3,2,4,0|0|0|28|13|58,0.68|0.89|0.34|7.71|4.51|14.10 -741,8.33,10,0,0,1,4,3,0|0|0|0|0|10,0.34|0.34|0.17|0.34|0.72|3.88 -744,3.26,0,0,0,0,2,3,0|0|0|0|0|0,0.00|0.00|0.00|0.34|0.21|0.17 -746,2.53,0,0,0,0,1,3,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -750,2.53,0,0,0,0,0,3,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case1-pass0.csv deleted file mode 100644 index e30ed917..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -640|69|726,720,713,518,538,626|81.04 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case1-result.csv deleted file mode 100644 index eef07c05..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|640|69|726,720,713,518,538,626|81.04 -AVG|640|69|N/A|81.04 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case2-result.csv deleted file mode 100644 index c08b8fe5..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case2-result.csv +++ /dev/null @@ -1,34 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.43 -10|400|15|58.20 -16|400|66|70.76 -21|400|75|72.72 -27|400|130|86.18 -77|400|128|88.10 -111|400|99|82.26 -117|384|120|86.05 -122|304|129|77.75 -128|300|130|77.45 -150|300|133|78.09 -159|300|172|86.39 -187|300|170|87.16 -194|300|156|84.18 -202|300|172|87.59 -215|251|172|81.32 -222|201|189|78.56 -228|200|189|78.43 -234|200|196|79.92 -241|200|197|80.13 -308|152|197|74.00 -315|104|234|75.75 -321|100|260|80.77 -353|100|256|79.92 -360|100|260|80.77 -398|115|260|82.69 -405|175|260|90.35 -716|164|260|88.95 -723|139|260|85.75 -730|68|260|76.68 -736|5|116|35.84 -740|1|3|5.35 -743|1|0|2.96 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case2.log deleted file mode 100644 index b13e88e3..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_7/mnist-case2.log +++ /dev/null @@ -1,111 +0,0 @@ -5,53.43,0,5,1,0,0,400,0|0|0|0|0|0,0.17|0.00|0.00|0.00|0.00|0.00 -10,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -16,70.76,66,4,0,2,0,400,60|6|0|0|0|0,14.52|2.98|0.00|0.00|0.00|0.00 -21,72.72,75,4,0,2,0,400,60|15|0|0|0|0,14.52|4.94|0.00|0.00|0.00|0.00 -27,86.18,130,3,0,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|0.00|0.00|0.00 -36,87.93,130,2,1,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.00|0.00 -43,88.44,130,1,2,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.51|0.00 -50,88.52,130,0,3,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.55|0.04 -57,88.52,130,0,3,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.55|0.04 -64,88.52,130,0,3,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.55|0.04 -70,88.52,130,0,3,3,0,400,60|60|10|0|0|0,14.52|14.52|3.88|1.75|0.55|0.04 -77,88.10,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.55|0.04 -86,88.44,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.55|0.38 -96,88.44,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.55|0.38 -104,88.44,128,0,3,3,0,400,59|59|10|0|0|0,14.31|14.31|3.88|1.75|0.55|0.38 -111,82.26,99,0,3,3,0,400,45|44|10|0|0|0,11.33|11.12|3.88|1.75|0.55|0.38 -117,86.05,120,0,2,4,0,384,45|50|10|0|0|15,11.33|12.39|3.88|1.75|0.55|4.94 -122,77.75,129,0,2,4,0,304,45|59|10|0|0|15,11.33|14.31|3.88|1.75|0.55|4.94 -128,77.45,130,0,2,4,0,300,45|60|10|0|0|15,11.33|14.52|3.88|1.75|0.55|4.94 -136,77.45,130,0,2,4,0,300,45|60|10|0|0|15,11.33|14.52|3.88|1.75|0.55|4.94 -142,77.45,130,0,2,4,0,300,45|60|10|0|0|15,11.33|14.52|3.88|1.75|0.55|4.94 -150,78.09,133,0,2,4,0,300,44|60|15|0|0|14,11.12|14.52|4.94|1.75|0.55|4.73 -159,86.39,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|0.55|4.73 -169,87.59,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.75|4.73 -175,87.59,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.75|4.73 -180,87.59,172,0,2,4,0,300,59|60|39|0|0|14,14.31|14.52|10.05|1.75|1.75|4.73 -187,87.16,170,0,2,4,0,300,59|58|39|0|0|14,14.31|14.10|10.05|1.75|1.75|4.73 -194,84.18,156,0,2,4,0,300,59|52|31|0|0|14,14.31|12.82|8.35|1.75|1.75|4.73 -202,87.59,172,0,1,5,0,300,59|52|32|0|15|14,14.31|12.82|8.56|1.75|4.94|4.73 -208,87.59,172,0,1,5,0,300,59|52|32|0|15|14,14.31|12.82|8.56|1.75|4.94|4.73 -215,81.32,172,0,1,5,0,251,59|52|32|0|15|14,14.31|12.82|8.56|1.75|4.94|4.73 -222,78.56,189,0,0,6,0,201,60|52|32|8|15|22,14.52|12.82|8.56|3.45|4.94|6.43 -228,78.43,189,0,0,6,0,200,60|52|32|8|15|22,14.52|12.82|8.56|3.45|4.94|6.43 -234,79.92,196,0,0,6,0,200,60|51|40|8|15|22,14.52|12.61|10.26|3.45|4.94|6.43 -241,80.13,197,0,0,6,0,200,60|52|41|8|14|22,14.52|12.82|10.48|3.45|4.73|6.43 -249,80.13,197,0,0,6,0,200,60|52|41|8|14|22,14.52|12.82|10.48|3.45|4.73|6.43 -256,80.13,197,0,0,6,0,200,60|52|41|8|14|22,14.52|12.82|10.48|3.45|4.73|6.43 -262,80.13,197,0,0,6,0,200,60|52|41|8|14|22,14.52|12.82|10.48|3.45|4.73|6.43 -268,80.13,197,0,0,6,0,200,60|52|41|8|14|22,14.52|12.82|10.48|3.45|4.73|6.43 -274,80.13,197,0,0,6,0,200,60|52|41|8|14|22,14.52|12.82|10.48|3.45|4.73|6.43 -280,80.13,197,0,0,6,0,200,51|52|41|11|14|28,12.61|12.82|10.48|4.09|4.73|7.71 -286,80.13,197,0,0,6,0,200,51|52|41|11|14|28,12.61|12.82|10.48|4.09|4.73|7.71 -294,80.13,197,0,0,6,0,200,51|52|41|11|14|28,12.61|12.82|10.48|4.09|4.73|7.71 -300,80.13,197,0,0,6,0,200,51|52|41|11|14|28,12.61|12.82|10.48|4.09|4.73|7.71 -308,74.00,197,0,0,6,0,152,51|52|41|11|14|28,12.61|12.82|10.48|4.09|4.73|7.71 -315,75.75,234,0,0,6,0,104,52|52|41|15|14|60,12.82|12.82|10.48|4.94|4.73|14.52 -321,80.77,260,0,0,6,0,100,54|52|41|39|14|60,13.25|12.82|10.48|10.05|4.73|14.52 -328,80.77,260,0,0,6,0,100,54|52|41|39|14|60,13.25|12.82|10.48|10.05|4.73|14.52 -336,80.77,260,0,0,6,0,100,54|52|41|39|14|60,13.25|12.82|10.48|10.05|4.73|14.52 -345,80.77,260,0,0,6,0,100,54|52|41|39|14|60,13.25|12.82|10.48|10.05|4.73|14.52 -353,79.92,256,0,0,6,0,100,54|52|41|39|14|56,13.25|12.82|10.48|10.05|4.73|13.67 -360,80.77,260,0,0,6,0,100,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -366,80.77,260,0,0,6,0,100,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -372,80.77,260,0,0,6,0,100,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -378,80.77,260,0,0,6,0,100,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -384,80.77,260,0,0,6,0,100,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -390,80.77,260,0,0,6,0,100,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -398,82.69,260,0,0,6,0,115,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -405,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -412,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -419,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -424,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -431,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -438,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -446,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -453,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -459,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -466,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -472,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -479,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -485,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -492,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -499,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -505,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -511,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -518,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -526,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -534,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -541,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -547,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -556,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -564,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -576,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -582,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -589,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -595,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -602,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -608,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -615,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -622,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -628,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -636,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -644,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -651,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -658,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -665,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -672,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -678,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -686,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -694,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -701,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -709,90.35,260,0,0,6,0,175,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -716,88.95,260,0,0,6,0,164,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -723,85.75,260,0,0,6,0,139,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -730,76.68,260,0,0,6,0,68,54|52|50|39|14|51,13.25|12.82|12.39|10.05|4.73|12.61 -736,35.84,116,0,0,4,2,5,0|0|12|39|14|51,0.34|1.02|4.30|10.05|4.73|12.61 -740,5.35,3,0,0,1,4,1,0|0|0|0|0|3,0.00|0.00|0.17|0.51|0.17|2.21 -743,2.96,0,0,0,0,4,1,0|0|0|0|0|0,0.00|0.00|0.00|0.17|0.00|0.51 -745,2.79,0,0,0,0,1,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.51 -748,2.62,0,0,0,0,1,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.34 -751,2.28,0,0,0,0,0,1,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case1-pass0.csv deleted file mode 100644 index 7d6efe87..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -607|101|728,716,715,568,294,626|80.37 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case1-result.csv deleted file mode 100644 index 48312cda..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|607|101|728,716,715,568,294,626|80.37 -AVG|607|101|N/A|80.37 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case2-result.csv deleted file mode 100644 index 5173c10c..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case2-result.csv +++ /dev/null @@ -1,45 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.26 -9|400|15|58.20 -14|400|50|65.65 -20|400|60|67.78 -25|400|94|76.77 -30|400|129|85.92 -85|400|127|87.88 -110|400|99|82.43 -116|400|69|76.04 -122|400|84|80.43 -128|311|126|78.00 -137|300|174|86.82 -169|300|170|85.97 -177|300|174|88.01 -211|300|173|87.80 -218|247|173|81.03 -224|207|197|81.03 -229|200|200|80.77 -306|199|200|80.64 -312|109|200|69.14 -318|102|219|72.30 -325|100|258|80.35 -404|180|258|90.57 -438|180|218|82.05 -445|180|223|83.11 -451|180|257|90.35 -465|181|257|90.48 -484|181|256|90.27 -491|181|253|89.63 -499|183|255|90.31 -528|247|196|85.92 -534|271|196|88.99 -616|271|181|85.80 -622|306|171|88.14 -649|306|170|87.93 -657|382|88|80.18 -664|382|127|88.48 -721|334|127|82.35 -727|222|127|68.04 -732|118|127|54.75 -737|18|70|28.43 -741|8|35|18.16 -745|0|3|6.41 -748|0|0|3.39 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case2.log deleted file mode 100644 index d0379f87..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_8/mnist-case2.log +++ /dev/null @@ -1,117 +0,0 @@ -5,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -9,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -14,65.65,50,5,0,1,0,400,50|0|0|0|0|0,12.39|0.00|0.00|0.00|0.00|0.00 -20,67.78,60,4,1,1,0,400,60|0|0|0|0|0,14.52|0.00|0.00|0.00|0.00|0.00 -25,76.77,94,4,0,2,0,400,60|34|0|0|0|0,14.52|8.99|0.00|0.00|0.00|0.00 -30,85.92,129,3,0,3,0,400,60|60|9|0|0|0,14.52|14.52|3.62|0.00|0.00|0.00 -36,85.97,129,3,0,3,0,400,60|60|9|0|0|0,14.52|14.52|3.66|0.00|0.00|0.00 -41,87.71,129,2,1,3,0,400,60|60|9|0|0|0,14.52|14.52|3.66|1.75|0.00|0.00 -47,88.22,129,1,2,3,0,400,60|60|9|0|0|0,14.52|14.52|3.66|1.75|0.51|0.00 -55,88.27,129,1,2,3,0,400,60|60|9|0|0|0,14.52|14.52|3.66|1.75|0.55|0.00 -62,88.31,129,0,3,3,0,400,60|60|9|0|0|0,14.52|14.52|3.66|1.75|0.55|0.04 -70,88.31,129,0,3,3,0,400,60|60|9|0|0|0,14.52|14.52|3.66|1.75|0.55|0.04 -77,88.31,129,0,3,3,0,400,60|60|9|0|0|0,14.52|14.52|3.66|1.75|0.55|0.04 -85,87.88,127,0,3,3,0,400,59|59|9|0|0|0,14.31|14.31|3.66|1.75|0.55|0.04 -91,88.39,127,0,3,3,0,400,59|59|9|0|0|0,14.31|14.31|3.66|1.75|0.55|0.55 -97,88.39,127,0,3,3,0,400,59|59|9|0|0|0,14.31|14.31|3.66|1.75|0.55|0.55 -104,88.39,127,0,3,3,0,400,59|59|9|0|0|0,14.31|14.31|3.66|1.75|0.55|0.55 -110,82.43,99,0,3,3,0,400,59|31|9|0|0|0,14.31|8.35|3.66|1.75|0.55|0.55 -116,76.04,69,0,3,3,0,400,30|30|9|0|0|0,8.13|8.13|3.66|1.75|0.55|0.55 -122,80.43,84,0,2,4,0,400,30|30|9|0|0|15,8.13|8.13|3.66|1.75|0.55|4.94 -128,78.00,126,0,2,4,0,311,45|42|9|0|0|30,11.33|10.69|3.66|1.75|0.55|8.13 -137,86.82,174,0,2,4,0,300,60|50|9|0|0|55,14.52|12.39|3.66|1.75|0.55|13.46 -143,86.82,174,0,2,4,0,300,60|50|9|0|0|55,14.52|12.39|3.66|1.75|0.55|13.46 -149,86.82,174,0,2,4,0,300,60|50|9|0|0|55,14.52|12.39|3.66|1.75|0.55|13.46 -155,86.82,174,0,2,4,0,300,60|50|9|0|0|55,14.52|12.39|3.66|1.75|0.55|13.46 -162,86.82,174,0,2,4,0,300,60|50|9|0|0|55,14.52|12.39|3.66|1.75|0.55|13.46 -169,85.97,170,0,2,4,0,300,56|50|13|0|0|51,13.67|12.39|4.51|1.75|0.55|12.61 -177,88.01,174,0,1,5,0,300,56|50|15|2|0|51,13.67|12.39|4.94|2.17|1.75|12.61 -184,88.01,174,0,1,5,0,300,56|50|15|2|0|51,13.67|12.39|4.94|2.17|1.75|12.61 -189,88.01,174,0,1,5,0,300,56|50|15|2|0|51,13.67|12.39|4.94|2.17|1.75|12.61 -196,88.01,174,0,1,5,0,300,56|50|15|2|0|51,13.67|12.39|4.94|2.17|1.75|12.61 -203,88.01,174,0,1,5,0,300,56|50|15|2|0|51,13.67|12.39|4.94|2.17|1.75|12.61 -211,87.80,173,0,1,5,0,300,56|50|14|2|0|51,13.67|12.39|4.73|2.17|1.75|12.61 -218,81.03,173,0,1,5,0,247,56|50|15|2|0|50,13.67|12.39|4.94|2.17|1.75|12.39 -224,81.03,197,0,1,5,0,207,56|50|30|2|0|59,13.67|12.39|8.13|2.17|1.75|14.31 -229,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -237,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -244,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -251,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -258,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -265,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -270,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -276,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -283,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -290,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -296,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -301,80.77,200,0,1,5,0,200,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -306,80.64,200,0,1,5,0,199,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -312,69.14,200,0,1,5,0,109,56|50|32|2|0|60,13.67|12.39|8.56|2.17|1.75|14.52 -318,72.30,219,0,1,5,0,102,56|56|32|15|0|60,13.67|13.67|8.56|4.94|1.75|14.52 -325,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -332,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -339,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -346,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -352,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -359,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -365,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -372,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -378,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -385,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -391,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -397,80.35,258,0,1,5,0,100,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -404,90.57,258,0,1,5,0,180,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -410,90.57,258,0,1,5,0,180,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -418,90.57,258,0,1,5,0,180,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -424,90.57,258,0,1,5,0,180,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -430,90.57,258,0,1,5,0,180,56|60|32|50|0|60,13.67|14.52|8.56|12.39|1.75|14.52 -438,82.05,218,0,1,5,0,180,56|40|32|50|0|40,13.67|10.26|8.56|12.39|1.75|10.26 -445,83.11,223,0,1,5,0,180,56|40|32|55|0|40,13.67|10.26|8.56|13.46|1.75|10.26 -451,90.35,257,0,0,6,0,180,60|45|32|60|15|45,14.52|11.33|8.56|14.52|4.94|11.33 -458,90.35,257,0,0,6,0,180,60|45|32|60|15|45,14.52|11.33|8.56|14.52|4.94|11.33 -465,90.48,257,0,0,6,0,181,60|45|32|60|15|45,14.52|11.33|8.56|14.52|4.94|11.33 -472,90.48,257,0,0,6,0,181,60|45|32|60|15|45,14.52|11.33|8.56|14.52|4.94|11.33 -478,90.48,257,0,0,6,0,181,60|45|32|60|15|45,14.52|11.33|8.56|14.52|4.94|11.33 -484,90.27,256,0,0,6,0,181,59|45|33|59|15|45,14.31|11.33|8.77|14.31|4.94|11.33 -491,89.63,253,0,0,6,0,181,59|44|33|59|14|44,14.31|11.12|8.77|14.31|4.73|11.12 -499,90.31,255,0,0,6,0,183,60|45|33|59|13|45,14.52|11.33|8.77|14.31|4.51|11.33 -508,90.31,255,0,0,6,0,183,60|45|33|59|13|45,14.52|11.33|8.77|14.31|4.51|11.33 -515,90.31,255,0,0,6,0,183,60|45|33|59|13|45,14.52|11.33|8.77|14.31|4.51|11.33 -522,90.31,255,0,0,6,0,183,60|45|33|59|13|45,14.52|11.33|8.77|14.31|4.51|11.33 -528,85.92,196,0,0,6,0,247,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -534,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -541,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -548,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -555,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -563,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -570,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -576,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -582,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -590,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -596,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -602,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -608,88.99,196,0,0,6,0,271,48|33|33|47|2|33,11.97|8.77|8.77|11.75|2.17|8.77 -616,85.80,181,0,0,6,0,271,45|29|33|44|2|28,11.33|7.92|8.77|11.12|2.17|7.71 -622,88.14,171,0,0,6,0,306,41|27|33|41|2|27,10.48|7.50|8.77|10.48|2.17|7.50 -628,88.14,171,0,0,6,0,306,41|27|33|41|2|27,10.48|7.50|8.77|10.48|2.17|7.50 -635,88.14,171,0,0,6,0,306,41|27|33|41|2|27,10.48|7.50|8.77|10.48|2.17|7.50 -643,88.14,171,0,0,6,0,306,41|27|33|41|2|27,10.48|7.50|8.77|10.48|2.17|7.50 -649,87.93,170,0,0,6,0,306,41|26|33|41|2|27,10.48|7.28|8.77|10.48|2.17|7.50 -657,80.18,88,0,0,6,0,382,26|13|33|2|2|12,7.28|4.51|8.77|2.17|2.17|4.30 -664,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -672,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -679,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -686,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -693,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -699,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -706,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -715,88.48,127,0,0,6,0,382,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -721,82.35,127,0,0,6,0,334,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -727,68.04,127,0,0,6,0,222,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -732,54.75,127,0,0,6,0,118,57|17|33|2|6|12,13.88|5.37|8.77|2.17|3.02|4.30 -737,28.43,70,0,0,5,1,18,0|17|33|2|6|12,0.34|5.37|8.77|2.17|3.02|4.30 -741,18.16,35,0,0,4,1,8,0|0|15|2|6|12,0.17|0.38|4.94|2.17|3.02|4.30 -745,6.41,3,0,0,1,2,0,0|0|0|0|0|3,0.00|0.17|0.68|0.85|0.17|2.39 -748,3.39,0,0,0,0,2,0,0|0|0|0|0|0,0.00|0.00|0.17|0.51|0.00|0.55 -750,2.53,0,0,0,0,1,0,0|0|0|0|0|0,0.00|0.00|0.00|0.34|0.00|0.04 -753,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case1-pass0.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case1-pass0.csv deleted file mode 100644 index e0aac9f6..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case1-pass0.csv +++ /dev/null @@ -1 +0,0 @@ -663|70|725,725,722,529,556,725|66.37 \ No newline at end of file diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case1-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case1-result.csv deleted file mode 100644 index 837f6671..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case1-result.csv +++ /dev/null @@ -1,3 +0,0 @@ -PASS|AVG RUNNING TIME|AVG PENDING TIME|JOB RUNNING TIME|AVG CLUSTER CPU UTILS -0|663|70|725,725,722,529,556,725|66.37 -AVG|663|70|N/A|66.37 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case2-result.csv b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case2-result.csv deleted file mode 100644 index 50606e2d..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case2-result.csv +++ /dev/null @@ -1,57 +0,0 @@ -TIME|NGINX PODS|RUNNING TRAINERS|CLUSTER CPU UTILS -5|400|0|53.26 -11|400|15|58.20 -16|400|71|71.87 -22|400|78|73.70 -27|400|128|85.75 -72|400|126|87.84 -111|400|97|82.01 -119|389|118|86.44 -126|304|128|77.70 -132|300|128|77.19 -151|300|133|78.26 -157|300|176|87.42 -191|300|160|85.03 -198|300|176|88.44 -211|264|176|83.84 -218|206|178|76.85 -225|200|197|80.13 -239|200|198|80.35 -302|194|198|79.58 -308|102|224|73.36 -316|100|254|79.49 -322|100|259|80.56 -397|178|259|90.52 -440|178|225|83.28 -449|178|259|90.52 -485|178|253|89.25 -491|178|259|90.52 -521|221|214|86.44 -528|249|214|90.01 -537|249|210|89.16 -553|249|211|89.37 -559|253|211|89.89 -566|253|202|87.97 -573|253|211|89.89 -588|267|202|89.76 -611|267|201|89.54 -617|268|201|89.67 -624|268|192|87.76 -631|309|154|84.90 -639|314|157|86.18 -651|330|164|89.72 -664|330|162|89.29 -670|330|160|88.86 -684|330|152|87.16 -691|330|157|88.22 -704|330|149|86.52 -710|340|156|89.29 -724|340|153|88.65 -730|283|153|81.37 -736|181|143|65.01 -741|92|124|47.68 -745|16|102|33.11 -749|6|49|18.93 -754|0|3|5.09 -758|0|1|2.53 -844|0|0|2.15 diff --git a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case2.log b/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case2.log deleted file mode 100644 index 52bfcc67..00000000 --- a/doc/edl/experiment/result/case2-mnist-ON-6-1-ON-400-round_9/mnist-case2.log +++ /dev/null @@ -1,143 +0,0 @@ -5,53.26,0,5,1,0,0,400,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 -11,58.20,15,5,0,1,0,400,15|0|0|0|0|0,4.94|0.00|0.00|0.00|0.00|0.00 -16,71.87,71,4,0,2,0,400,59|12|0|0|0|0,14.31|4.30|0.00|0.00|0.00|0.00 -22,73.70,78,3,1,2,0,400,60|18|0|0|0|0,14.52|5.58|0.34|0.00|0.00|0.00 -27,85.75,128,3,0,3,0,400,60|60|8|0|0|0,14.52|14.52|3.45|0.00|0.00|0.00 -34,87.46,128,2,1,3,0,400,60|60|8|0|0|0,14.52|14.52|3.45|1.70|0.00|0.00 -41,88.01,128,1,2,3,0,400,60|60|8|0|0|0,14.52|14.52|3.45|1.75|0.51|0.00 -48,88.22,128,1,2,3,0,400,60|60|8|0|0|0,14.52|14.52|3.45|1.75|0.72|0.00 -54,88.27,128,0,3,3,0,400,60|60|8|0|0|0,14.52|14.52|3.45|1.75|0.72|0.04 -59,88.27,128,0,3,3,0,400,60|60|8|0|0|0,14.52|14.52|3.45|1.75|0.72|0.04 -66,88.27,128,0,3,3,0,400,60|60|8|0|0|0,14.52|14.52|3.45|1.75|0.72|0.04 -72,87.84,126,0,3,3,0,400,59|59|8|0|0|0,14.31|14.31|3.45|1.75|0.72|0.04 -79,87.84,126,0,3,3,0,400,59|59|8|0|0|0,14.31|14.31|3.45|1.75|0.72|0.04 -84,88.18,126,0,3,3,0,400,59|59|8|0|0|0,14.31|14.31|3.45|1.75|0.72|0.38 -90,88.18,126,0,3,3,0,400,59|59|8|0|0|0,14.31|14.31|3.45|1.75|0.72|0.38 -98,88.18,126,0,3,3,0,400,59|59|8|0|0|0,14.31|14.31|3.45|1.75|0.72|0.38 -104,88.18,126,0,3,3,0,400,59|59|8|0|0|0,14.31|14.31|3.45|1.75|0.72|0.38 -111,82.01,97,0,3,3,0,400,45|44|8|0|0|0,11.33|11.12|3.45|1.75|0.72|0.38 -119,86.44,118,0,2,4,0,389,45|50|8|0|0|15,11.33|12.39|3.45|1.75|0.72|4.94 -126,77.70,128,0,2,4,0,304,45|60|8|0|0|15,11.33|14.52|3.45|1.75|0.72|4.94 -132,77.19,128,0,2,4,0,300,45|60|8|0|0|15,11.33|14.52|3.45|1.75|0.72|4.94 -138,77.19,128,0,2,4,0,300,45|60|8|0|0|15,11.33|14.52|3.45|1.75|0.72|4.94 -143,77.19,128,0,2,4,0,300,45|60|8|0|0|15,11.33|14.52|3.45|1.75|0.72|4.94 -151,78.26,133,0,2,4,0,300,44|60|15|0|0|14,11.12|14.52|4.94|1.75|0.72|4.73 -157,87.42,176,0,2,4,0,300,60|60|17|0|0|39,14.52|14.52|5.37|1.75|0.72|10.05 -165,88.44,176,0,2,4,0,300,60|60|17|0|0|39,14.52|14.52|5.37|1.75|1.75|10.05 -171,88.44,176,0,2,4,0,300,60|60|17|0|0|39,14.52|14.52|5.37|1.75|1.75|10.05 -179,88.44,176,0,2,4,0,300,60|60|17|0|0|39,14.52|14.52|5.37|1.75|1.75|10.05 -185,88.44,176,0,2,4,0,300,60|60|17|0|0|39,14.52|14.52|5.37|1.75|1.75|10.05 -191,85.03,160,0,2,4,0,300,55|54|17|0|0|34,13.46|13.25|5.37|1.75|1.75|8.99 -198,88.44,176,0,1,5,0,300,56|55|17|0|12|36,13.67|13.46|5.37|1.75|4.30|9.41 -205,88.44,176,0,1,5,0,300,56|55|17|0|12|36,13.67|13.46|5.37|1.75|4.30|9.41 -211,83.84,176,0,1,5,0,264,56|55|17|0|12|36,13.67|13.46|5.37|1.75|4.30|9.41 -218,76.85,178,0,1,5,0,206,56|55|19|0|12|36,13.67|13.46|5.79|1.75|4.30|9.41 -225,80.13,197,0,0,6,0,200,56|55|36|2|12|36,13.67|13.46|9.41|2.17|4.30|9.41 -232,80.13,197,0,0,6,0,200,55|55|36|2|13|36,13.46|13.46|9.41|2.17|4.51|9.41 -239,80.35,198,0,0,6,0,200,57|54|36|2|13|36,13.88|13.25|9.41|2.17|4.51|9.41 -246,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -251,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -257,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -263,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -270,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -276,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -282,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -289,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -296,80.35,198,0,0,6,0,200,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -302,79.58,198,0,0,6,0,194,58|54|36|2|13|35,14.10|13.25|9.41|2.17|4.51|9.20 -308,73.36,224,0,0,6,0,102,58|54|36|3|13|60,14.10|13.25|9.41|2.39|4.51|14.52 -316,79.49,254,0,0,6,0,100,58|54|39|30|13|60,14.10|13.25|10.05|8.13|4.51|14.52 -322,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -328,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -334,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -340,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -346,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -352,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -359,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -367,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -372,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -378,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -384,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -390,80.56,259,0,0,6,0,100,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -397,90.52,259,0,0,6,0,178,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -404,90.52,259,0,0,6,0,178,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -411,90.52,259,0,0,6,0,178,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -418,90.52,259,0,0,6,0,178,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -425,90.52,259,0,0,6,0,178,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -432,90.52,259,0,0,6,0,178,58|54|39|35|13|60,14.10|13.25|10.05|9.20|4.51|14.52 -440,83.28,225,0,0,6,0,178,58|54|47|43|13|10,14.10|13.25|11.75|10.90|4.51|3.88 -449,90.52,259,0,0,6,0,178,58|54|60|60|17|10,14.10|13.25|14.52|14.52|5.37|3.88 -458,90.52,259,0,0,6,0,178,58|54|60|60|17|10,14.10|13.25|14.52|14.52|5.37|3.88 -464,90.52,259,0,0,6,0,178,58|54|60|60|17|10,14.10|13.25|14.52|14.52|5.37|3.88 -470,90.52,259,0,0,6,0,178,58|54|60|60|17|10,14.10|13.25|14.52|14.52|5.37|3.88 -478,90.52,259,0,0,6,0,178,58|54|60|60|17|10,14.10|13.25|14.52|14.52|5.37|3.88 -485,89.25,253,0,0,6,0,178,60|54|58|58|17|6,14.52|13.25|14.10|14.10|5.37|3.02 -491,90.52,259,0,0,6,0,178,60|59|58|59|17|6,14.52|14.31|14.10|14.31|5.37|3.02 -499,90.52,259,0,0,6,0,178,60|59|58|59|17|6,14.52|14.31|14.10|14.31|5.37|3.02 -505,90.52,259,0,0,6,0,178,60|59|58|59|17|6,14.52|14.31|14.10|14.31|5.37|3.02 -514,90.52,259,0,0,6,0,178,60|59|58|59|17|6,14.52|14.31|14.10|14.31|5.37|3.02 -521,86.44,214,0,0,6,0,221,45|59|43|44|17|6,11.33|14.31|10.90|11.12|5.37|3.02 -528,90.01,214,0,0,6,0,249,45|59|43|44|17|6,11.33|14.31|10.90|11.12|5.37|3.02 -537,89.16,210,0,0,6,0,249,45|59|43|44|17|2,11.33|14.31|10.90|11.12|5.37|2.17 -546,89.16,210,0,0,6,0,249,45|59|43|44|17|2,11.33|14.31|10.90|11.12|5.37|2.17 -553,89.37,211,0,0,6,0,249,45|60|43|44|17|2,11.33|14.52|10.90|11.12|5.37|2.17 -559,89.89,211,0,0,6,0,253,45|60|43|44|17|2,11.33|14.52|10.90|11.12|5.37|2.17 -566,87.97,202,0,0,6,0,253,42|60|40|41|17|2,10.69|14.52|10.26|10.48|5.37|2.17 -573,89.89,211,0,0,6,0,253,42|60|40|41|26|2,10.69|14.52|10.26|10.48|7.28|2.17 -580,89.89,211,0,0,6,0,253,42|60|40|41|26|2,10.69|14.52|10.26|10.48|7.28|2.17 -588,89.76,202,0,0,6,0,267,42|51|40|41|26|2,10.69|12.61|10.26|10.48|7.28|2.17 -595,89.76,202,0,0,6,0,267,42|51|40|41|26|2,10.69|12.61|10.26|10.48|7.28|2.17 -604,89.76,202,0,0,6,0,267,42|51|40|41|26|2,10.69|12.61|10.26|10.48|7.28|2.17 -611,89.54,201,0,0,6,0,267,41|51|40|41|26|2,10.48|12.61|10.26|10.48|7.28|2.17 -617,89.67,201,0,0,6,0,268,41|51|40|41|26|2,10.48|12.61|10.26|10.48|7.28|2.17 -624,87.76,192,0,0,6,0,268,41|42|40|41|26|2,10.48|10.69|10.26|10.48|7.28|2.17 -631,84.90,154,0,0,6,0,309,41|2|40|41|28|2,10.48|2.17|10.26|10.48|7.71|2.17 -639,86.18,157,0,0,6,0,314,41|2|41|42|28|3,10.48|2.17|10.48|10.69|7.71|2.39 -646,86.18,157,0,0,6,0,314,2|24|41|42|28|20,2.17|6.86|10.48|10.69|7.71|6.01 -651,89.72,164,0,0,6,0,330,2|25|41|42|28|26,2.17|7.07|10.48|10.69|7.71|7.28 -657,89.72,164,0,0,6,0,330,2|25|41|42|28|26,2.17|7.07|10.48|10.69|7.71|7.28 -664,89.29,162,0,0,6,0,330,2|25|41|42|26|26,2.17|7.07|10.48|10.69|7.28|7.28 -670,88.86,160,0,0,6,0,330,2|25|40|41|26|26,2.17|7.07|10.26|10.48|7.28|7.28 -678,88.86,160,0,0,6,0,330,2|25|40|41|26|26,2.17|7.07|10.26|10.48|7.28|7.28 -684,87.16,152,0,0,6,0,330,5|20|40|41|26|20,2.81|6.01|10.26|10.48|7.28|6.01 -691,88.22,157,0,0,6,0,330,10|20|40|41|26|20,3.88|6.01|10.26|10.48|7.28|6.01 -698,88.22,157,0,0,6,0,330,10|20|40|41|26|20,3.88|6.01|10.26|10.48|7.28|6.01 -704,86.52,149,0,0,6,0,330,10|20|37|38|24|20,3.88|6.01|9.63|9.84|6.86|6.01 -710,89.29,156,0,0,6,0,340,10|20|42|38|26|20,3.88|6.01|10.69|9.84|7.28|6.01 -716,89.29,156,0,0,6,0,340,10|20|42|38|26|20,3.88|6.01|10.69|9.84|7.28|6.01 -724,88.65,153,0,0,6,0,340,9|19|42|38|26|19,3.66|5.79|10.69|9.84|7.28|5.79 -730,81.37,153,0,0,6,0,283,9|18|42|38|26|20,3.66|5.58|10.69|9.84|7.28|6.01 -736,65.01,143,0,0,5,1,181,0|17|42|38|26|20,0.55|5.37|10.69|9.84|7.28|6.01 -741,47.68,124,0,0,4,2,92,0|0|41|38|25|20,0.00|0.38|10.48|9.84|7.07|6.01 -745,33.11,102,0,0,4,0,16,0|0|20|37|25|20,0.00|0.21|6.01|9.63|7.07|6.01 -749,18.93,49,0,0,3,1,6,0|0|0|4|25|20,0.00|0.00|0.51|2.43|7.07|6.01 -754,5.09,3,0,0,1,3,0,0|0|0|0|0|3,0.00|0.00|0.34|0.00|0.21|2.39 -758,2.53,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.38 -762,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -764,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -767,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -770,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -773,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -776,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -780,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -786,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -790,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -792,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -795,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -798,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -800,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -802,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -805,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -808,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -811,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -814,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -817,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -820,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -823,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -826,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -829,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -831,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -835,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -839,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -842,2.36,1,0,0,1,0,0,0|0|0|0|0|1,0.00|0.00|0.00|0.00|0.00|0.21 -844,2.15,0,0,0,0,0,0,0|0|0|0|0|0,0.00|0.00|0.00|0.00|0.00|0.00 diff --git a/doc/edl/experiment/result/case2.png b/doc/edl/experiment/result/case2.png deleted file mode 100644 index 76d319ae..00000000 Binary files a/doc/edl/experiment/result/case2.png and /dev/null differ diff --git a/doc/edl/experiment/result/plot/plot.go b/doc/edl/experiment/result/plot/plot.go deleted file mode 100644 index a8d2113a..00000000 --- a/doc/edl/experiment/result/plot/plot.go +++ /dev/null @@ -1,432 +0,0 @@ -package main - -import ( - "bufio" - "bytes" - "flag" - "fmt" - "image/color" - "io/ioutil" - "os" - "path/filepath" - "strconv" - "strings" - - "gonum.org/v1/plot" - "gonum.org/v1/plot/plotter" - "gonum.org/v1/plot/vg" - "gonum.org/v1/plot/vg/draw" - "gonum.org/v1/plot/vg/vgimg" - - colorful "github.com/lucasb-eyer/go-colorful" -) - -type job struct { - caseNumber int - autoscaling bool - trainerCount int -} - -type row struct { - timestamp int - cpuUtil float64 - runningTrainerCount int - notExistJobCount int - pendingJobCount int - runningJobCount int - doneJobCount int - nginxCount int - jobRunningTrainerCounts []int - jobCPUUtils []float64 -} - -type jobCase []row - -func parseJobCase(path string) (j jobCase) { - b, err := ioutil.ReadFile(path) - if err != nil { - panic(err) - } - - idx := 0 - s := bufio.NewScanner(bytes.NewReader(b)) - ts := 0 - for s.Scan() { - var r row - ss := strings.Split(s.Text(), ",") - r.timestamp, err = strconv.Atoi(ss[0]) - if err != nil { - panic(err) - } - - if r.timestamp < ts { - continue - } - ts = r.timestamp - - r.cpuUtil, err = strconv.ParseFloat(ss[1], 64) - if err != nil { - panic(err) - } - - r.runningTrainerCount, err = strconv.Atoi(ss[2]) - if err != nil { - panic(err) - } - - r.notExistJobCount, err = strconv.Atoi(ss[3]) - if err != nil { - panic(err) - } - - r.pendingJobCount, err = strconv.Atoi(ss[4]) - if err != nil { - panic(err) - } - - r.runningJobCount, err = strconv.Atoi(ss[5]) - if err != nil { - panic(err) - } - - r.doneJobCount, err = strconv.Atoi(ss[6]) - if err != nil { - panic(err) - } - - r.nginxCount, err = strconv.Atoi(ss[7]) - if err != nil { - panic(err) - } - - cur := 8 - remain := len(ss) - cur - trainerCount := remain / 2 - if remain != trainerCount*2 { - panic(fmt.Errorf("unrecognized row at %s:%d", path, idx)) - } - - r.jobRunningTrainerCounts = make([]int, trainerCount) - r.jobCPUUtils = make([]float64, trainerCount) - - for i := range r.jobRunningTrainerCounts { - c, err := strconv.ParseFloat(ss[cur], 64) - if err != nil { - panic(err) - } - r.jobRunningTrainerCounts[i] = int(c) - - cur++ - } - - for i := range r.jobCPUUtils { - r.jobCPUUtils[i], err = strconv.ParseFloat(ss[cur], 64) - if err != nil { - panic(err) - } - - cur++ - } - - j = append(j, r) - idx++ - } - - return -} - -func parseJob(path string) job { - j := job{} - s := strings.Split(path, "/") - folder := s[len(s)-2] - - s = strings.Split(folder, "-") - switch s[0] { - case "case1": - j.caseNumber = 1 - case "case2": - j.caseNumber = 2 - default: - panic(fmt.Errorf("could not recognize file path: %s", path)) - } - - switch s[2] { - case "OFF": - j.autoscaling = false - case "ON": - j.autoscaling = true - default: - panic(fmt.Errorf("could not recognize file path: %s", path)) - } - - count, err := strconv.Atoi(s[3]) - if err != nil { - panic(err) - } - - j.trainerCount = count - return j -} - -type present func(c jobCase) plotter.XYs - -func casesToPoints(p present, c []jobCase) []plotter.XYs { - r := make([]plotter.XYs, len(c)) - for i := range r { - r[i] = p(c[i]) - } - return r -} - -func runningTrainerCount(c jobCase) plotter.XYs { - r := make(plotter.XYs, len(c)) - for i, row := range c { - r[i].X = float64(row.timestamp) - r[i].Y = float64(row.runningTrainerCount) - } - - return r -} - -func clusterUtil(c jobCase) plotter.XYs { - r := make(plotter.XYs, len(c)) - for i, row := range c { - r[i].X = float64(row.timestamp) - r[i].Y = row.cpuUtil - } - - return r -} - -func pendingJobs(c jobCase) plotter.XYs { - r := make(plotter.XYs, len(c)) - for i, row := range c { - r[i].X = float64(row.timestamp) - r[i].Y = float64(row.pendingJobCount) - } - - return r -} - -func nginxCount(c jobCase) plotter.XYs { - r := make(plotter.XYs, len(c)) - for i, row := range c { - r[i].X = float64(row.timestamp) - r[i].Y = float64(row.nginxCount) - } - - return r -} - -func doPlot(p *plot.Plot, caseOn, caseOff []jobCase, pre present) { - pts := casesToPoints(pre, caseOn) - for i := range pts { - l, err := plotter.NewLine(pts[i]) - if err != nil { - panic(err) - } - l.LineStyle.Width = vg.Points(1) - l.LineStyle.Color = colorful.HappyColor() - l.LineStyle.Dashes = []vg.Length{vg.Points(5), vg.Points(5)} - - p.Add(l) - - if i == 0 { - legendLine, err := plotter.NewLine(pts[i]) - if err != nil { - panic(err) - } - legendLine.LineStyle.Width = vg.Points(1) - legendLine.LineStyle.Color = color.Black - legendLine.LineStyle.Dashes = []vg.Length{vg.Points(5), vg.Points(5)} - p.Legend.Add(fmt.Sprintf("autoscaling-on"), legendLine) - } - if err != nil { - panic(err) - } - } - - pts = casesToPoints(pre, caseOff) - for i := range pts { - l, err := plotter.NewLine(pts[i]) - if err != nil { - panic(err) - } - l.LineStyle.Width = vg.Points(1) - l.LineStyle.Color = getOffColor() - - p.Add(l) - - if i == 0 { - legendLine, err := plotter.NewLine(pts[i]) - if err != nil { - panic(err) - } - legendLine.LineStyle.Width = vg.Points(1) - legendLine.LineStyle.Color = color.Black - p.Legend.Add(fmt.Sprintf("autoscaling-off"), legendLine) - } - - if err != nil { - panic(err) - } - } -} - -func getOffColor() color.Color { - c := colorful.HappyColor() - r, g, b := c.RGB255() - return color.NRGBA{r, g, b, 0x7f} -} - -var ( - case1On = job{caseNumber: 1, autoscaling: true, trainerCount: 20} - case1Off = job{caseNumber: 1, autoscaling: false, trainerCount: 20} - case2On = job{caseNumber: 2, autoscaling: true, trainerCount: 6} - case2Off = job{caseNumber: 2, autoscaling: false, trainerCount: 6} -) - -func main() { - pattern := flag.String("pattern", "", "input files") - flag.Parse() - - matches, err := filepath.Glob(*pattern) - if err != nil { - panic(err) - } - - if len(matches) == 0 { - panic("no file matched from pattern") - } - - cases := make(map[job][]jobCase) - - for _, path := range matches { - j := parseJob(path) - c := parseJobCase(path) - cases[j] = append(cases[j], c) - } - - plots := make([][]*plot.Plot, 2) - - p, err := plot.New() - if err != nil { - panic(err) - } - p.Title.Text = "Compare the pending jobs and CPU utilization when the cluster is full" - p.X.Min = 0 - p.X.Max = 600 - p.Y.Label.Text = "number of pending jobs" - p.Y.Min = 0 - p.Y.Max = 16 - p.Add(plotter.NewGrid()) - doPlot(p, cases[case1On], cases[case1Off], pendingJobs) - plots[0] = []*plot.Plot{p} - - p, err = plot.New() - if err != nil { - panic(err) - } - - p.X.Min = 0 - p.X.Max = 600 - p.Y.Label.Text = "CPU utilization (percentage)" - p.Y.Min = 0 - p.Y.Max = 100 - p.Add(plotter.NewGrid()) - doPlot(p, cases[case1On], cases[case1Off], clusterUtil) - plots[1] = []*plot.Plot{p} - p.X.Label.Text = `time (s) -each line is one pass of the experiment, 20 passes total -` - - img := vgimg.New(8*vg.Inch, 8*2/3*vg.Inch) - dc := draw.New(img) - t := draw.Tiles{ - Rows: 2, - Cols: 1, - } - canvases := plot.Align(plots, t, dc) - plots[0][0].Draw(canvases[0][0]) - plots[1][0].Draw(canvases[1][0]) - - w, err := os.Create("case1.png") - if err != nil { - panic(err) - } - - plots = make([][]*plot.Plot, 3) - png := vgimg.PngCanvas{Canvas: img} - _, err = png.WriteTo(w) - if err != nil { - panic(err) - } - w.Close() - - p, err = plot.New() - if err != nil { - panic(err) - } - p.Title.Text = "Compare the change of trainer count and CPU utilization when Nginx pod count changes" - p.X.Min = 0 - p.X.Max = 600 - p.Y.Label.Text = "number of Nginx pods" - p.Y.Min = 0 - p.Y.Max = 420 - p.Add(plotter.NewGrid()) - doPlot(p, cases[case2On], cases[case2Off], nginxCount) - plots[0] = []*plot.Plot{p} - - p, err = plot.New() - if err != nil { - panic(err) - } - - p.X.Min = 0 - p.X.Max = 600 - p.Y.Label.Text = "number of trainer pods" - p.Y.Min = 0 - p.Y.Max = 300 - p.Add(plotter.NewGrid()) - doPlot(p, cases[case2On], cases[case2Off], runningTrainerCount) - plots[1] = []*plot.Plot{p} - - p, err = plot.New() - if err != nil { - panic(err) - } - p.X.Label.Text = `time (s) -each line is one pass of the experiment, 20 passes total -` - p.X.Min = 0 - p.X.Max = 600 - p.Y.Label.Text = "CPU utilization (percentage)" - p.Y.Min = 0 - p.Y.Max = 100 - p.Add(plotter.NewGrid()) - doPlot(p, cases[case2On], cases[case2Off], clusterUtil) - plots[2] = []*plot.Plot{p} - - img = vgimg.New(8*vg.Inch, 8*vg.Inch) - dc = draw.New(img) - t = draw.Tiles{ - Rows: 3, - Cols: 1, - } - canvases = plot.Align(plots, t, dc) - plots[0][0].Draw(canvases[0][0]) - plots[1][0].Draw(canvases[1][0]) - plots[2][0].Draw(canvases[2][0]) - - w, err = os.Create("case2.png") - if err != nil { - panic(err) - } - - png = vgimg.PngCanvas{Canvas: img} - _, err = png.WriteTo(w) - if err != nil { - panic(err) - } - w.Close() -} diff --git a/doc/edl/experiment/result/plot/plot_test.go b/doc/edl/experiment/result/plot/plot_test.go deleted file mode 100644 index 3a4477d5..00000000 --- a/doc/edl/experiment/result/plot/plot_test.go +++ /dev/null @@ -1,63 +0,0 @@ -package main - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestParseJob(t *testing.T) { - testCase := []struct { - path string - job job - }{ - { - "../case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.log", - job{1, false, 20}, - }, - { - "../case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.log", - job{1, true, 20}, - }, - { - "../case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2.log", - job{2, false, 6}, - }, - { - "../case2-mnist-ON-6-1-ON-400-round_1/mnist-case2.log", - job{2, true, 6}, - }, - } - - for _, c := range testCase { - assert.Equal(t, c.job, parseJob(c.path)) - } -} - -func TestParseJobs(t *testing.T) { - paths := []string{"../case1-mnist-OFF-20-1-ON-400-round_0/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_1/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_2/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_3/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_4/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_5/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_6/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_7/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_8/mnist-case1-pass0.log", "../case1-mnist-OFF-20-1-ON-400-round_9/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_0/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_1/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_2/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_3/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_4/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_5/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_6/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_7/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_8/mnist-case1-pass0.log", "../case1-mnist-ON-20-1-ON-400-round_9/mnist-case1-pass0.log", "../case2-mnist-OFF-6-1-ON-400-round_0/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_1/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_2/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_3/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_4/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_5/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_6/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_7/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_8/mnist-case2.log", "../case2-mnist-OFF-6-1-ON-400-round_9/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_0/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_1/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_2/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_4/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_5/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_6/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_7/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_8/mnist-case2.log", "../case2-mnist-ON-6-1-ON-400-round_9/mnist-case2.log"} - - // we are good if nothing panics - for _, p := range paths { - parseJob(p) - } -} - -func TestParseJobCase(t *testing.T) { - c := parseJobCase("./test_data/case1.txt") - assert.Equal(t, 3, len(c)) - tc := make([]int, 20) - for i := range tc { - tc[i] = 5 + i - } - cs := make([]float64, 20) - for i := range cs { - cs[i] = float64(i + 1) - } - assert.Equal(t, row{ - 5, 10.88, 33, 19, - 1, 2, 3, 4, - tc, - cs, - }, c[1]) -} diff --git a/doc/edl/experiment/result/plot/preprocess.sh b/doc/edl/experiment/result/plot/preprocess.sh deleted file mode 100755 index 186d21b0..00000000 --- a/doc/edl/experiment/result/plot/preprocess.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -hashtable=$(mktemp -d) - -for var in "$@" -do - path="$var.csv" - cat "$var" | tr '|' ',' | awk -F, '{if ($1<=550) {print}}' > "$path" -done diff --git a/doc/edl/experiment/result/plot/test_data/case1.txt b/doc/edl/experiment/result/plot/test_data/case1.txt deleted file mode 100644 index 5142a89a..00000000 --- a/doc/edl/experiment/result/plot/test_data/case1.txt +++ /dev/null @@ -1,3 +0,0 @@ -0,2.15,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00 -5,10.88,33,19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00,11.00,12.00,13.00,14.00,15.00,16.00,17.00,18.00,19.00,20.00 -8,16.67,60,19,0,1,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14.52,1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00,11.00,12.00,13.00,0.00,0.00,0.00,0.00,0.00,0.00 diff --git a/doc/edl/experiment/run.sh b/doc/edl/experiment/run.sh deleted file mode 100755 index b14d8acf..00000000 --- a/doc/edl/experiment/run.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/bash -CPU="5" -MEMORY="8Gi" -PSCPU="4" -PSMEMORY="5Gi" -JOB_NAME=${JOB_NAME:-mnist} -JOB_COUNT=${JOB_COUNT:-1} -PASSES=${PASSES:-1} -DETAILS=${DETAILS:-ON} -NGINX_REPLICAS=${NGINX_REPLICAS:-400} -AUTO_SCALING=${AUTO_SCALING:-OFF} - -ACTION=${1} -CASE=${2} - -if [ -z "${TAG-}" ]; then - echo "Must provide TAG environment variable. Exiting...." - exit 1 -fi - -export OUTDIR="./out/$CASE-$JOB_NAME-$AUTO_SCALING-$JOB_COUNT-$PASSES-$DETAILS-$NGINX_REPLICAS-$TAG" -echo "outputing output to folder: $OUTDIR" - -function submit_ft_job() { - paddlecloud submit -jobname $1 \ - -cpu $CPU \ - -gpu 0 \ - -memory $MEMORY \ - -parallelism $2 \ - -pscpu $PSCPU \ - -pservers 10 \ - -psmemory $PSMEMORY \ - -entry "python /root/train_ft.py" \ - -faulttolerant \ - -image registry.baidu.com/paddlepaddle/paddlecloud-job:mnist2 \ - ./mnist - #-entry "python ./train_ft.py train" \ -} - -function print_env() { - echo "JOB_NAME: "$JOB_NAME - echo "JOB_COUNT: "$JOB_COUNT - echo "DETAILS: "$DETAILS - echo "NGINX_REPLICAS: "$NGINX_REPLICAS - echo "AUTO_SCALING: "$AUTO_SCALING - echo "PASSES: "$PASSES -} - -function prepare() { - print_env - # Following https://apple.stackexchange.com/a/193156, - # we need to set the envrionment var for MacOS - if [ $(uname) == "Darwin" ] - then - export PATH=/usr/local/opt/coreutils/libexec/gnubin:$PATH - fi - mkdir -p $OUTDIR > /dev/null -} -function usage() { - echo "Usage: run.sh " - echo " action[required]: str[start|stop], will start or stop all the jobs." - echo " case[required]: str[case1|case2], run or stop the specify case." - echo "env var:" - echo " JOB_COUNT[optional]: int, The number of submiting jobs, defualt is 1." - echo " JOB_NAME[optional]: str, The job name." - echo " NGINX_REPLICAS[optional] int, The replicas of Nginx Deployment, default is 10." - echo " AUTO_SCALING[optional]: str[ON|OFF], whether a auto-scaling training job,\ -default is OFF." - echo " PASSES[optional]: int, The times of the experiment." - echo " DETAILS[optional: str[ON|OFF], print detail monitor information." -} - - - -if [ -z $1 ] || [ -z $2 ]; then - usage - exit 0 -fi - -if [ $CASE == "case1" ]; then - source ./case1.sh -elif [ $CASE == "case2" ]; then - source ./case2.sh -else - usage - exit 0 -fi - - -case $ACTION in - start) - prepare - start - ;; - stop) - prepare - stop - ;; - --help) - usage - ;; - *) - usage - ;; -esac diff --git a/doc/edl/pictures/lifecycle_overall.jpg b/doc/edl/pictures/lifecycle_overall.jpg deleted file mode 100644 index 6ddd1d7a..00000000 Binary files a/doc/edl/pictures/lifecycle_overall.jpg and /dev/null differ diff --git a/doc/edl/pictures/lifecycle_overall.xml b/doc/edl/pictures/lifecycle_overall.xml deleted file mode 100644 index 1956567c..00000000 --- a/doc/edl/pictures/lifecycle_overall.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/doc/edl/pictures/state_machine.jpg b/doc/edl/pictures/state_machine.jpg deleted file mode 100644 index d63594c2..00000000 Binary files a/doc/edl/pictures/state_machine.jpg and /dev/null differ diff --git a/doc/edl/pictures/state_machine.xml b/doc/edl/pictures/state_machine.xml deleted file mode 100644 index cc43cb90..00000000 --- a/doc/edl/pictures/state_machine.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/doc/hostnetwork/hostnetwork.md b/doc/hostnetwork/hostnetwork.md deleted file mode 100644 index 2f080deb..00000000 --- a/doc/hostnetwork/hostnetwork.md +++ /dev/null @@ -1,62 +0,0 @@ -# 背景 - -Kubernetes(k8s)中有使用宿主机网络的需求,比如高性能训练的时候需要使用RDMA,或者有些用户没有容器网络来实现k8s的网络模型。在k8s中,有HostNetwork这个选项,决定pod是否使用宿主机网络。 - -另一方面,HostNetwork可以快速使kubernetes集群运行于RDMA网络或轻量级网络配置环境。而且我们在使用flannel和calico作为k8s底层网络时,遇到一些bug,导致paddle节点直接无法正常通信。这些问题很有可能是开源overlay网络方案自身存在的bug。采用HostNetwork的方案,可以在实现更复杂的overlay network之前作为较稳定的生产环境。 - -PaddlePaddle在使用k8s进行训练的时候,用户的任务可以不依赖容器网络进行训练。只要让pserver与trainer使用HostNetwork,训练任务也能正常运行。但是如果使用HostNetwork,就需要对宿主机的端口资源进行管理,如果端口分配混乱,就有可能造成pod无法启动的情况。同时用户在提交任务时,也不应该关注端口的分配,这种场景下,就需要有一个组件来实现宿主机端口分配,在PaddleCloud发起训练任务时,能为pserver和trainer分配出宿主机端口。 - -# 设计 - -## port manager - -![](portmanager.jpg) - -Port-manager对kubernetes apiserver进行watch与list。对于需要使用HostNetwork的任务进行端口的分配。然后更新资源的配置信息。 - -这里存在两个问题: - -1. 并不是所有的`HostNetwork`任务都需要分配端口,port-manager不应该影响k8s集群正常的运行方式。 - -1. 这些真需要port-manager分配端口的任务,应该在分配完`host port`后才进行调度,执行任务流程。 - - -对于问题1,Port-manager应该不作用于所有使用HostNetwork的job,rc,rs等资源(因为有些用户自己指定了端口)。所以,port-manager可以使用kubernetes的[annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)功能来确定一个任务是否需要进行端口分配。对于需要使用port-manager来进行宿主机端口分配的replica set,job等,可在其metadata中增加使用port-manager的annotations。 - -例如: - -```yaml -port-manager/hostnetwork: "true" -``` - - -对于问题2,由于用户的训练请求是通过paddle cloud首先传递到了k8s,port-manager是对kubernetes apiserver进行watch与list后才知道有哪些任务需要分配端口。 -这种情况下,就需要在paddle cloud向k8s发起请求后,创建出资源时让k8s暂时先不运行此任务,待完成端口分配后,将宿主机端口信息增加到相关资源的spec中才可以继续运行。 -一种解决方式是可以通过把rs,job中相关的启动pod数量的字段置为0,而将真正的期望的数量写入annotations中: - -例如rc: - -```rc -annotations: - port-manager/rc.replicas: "5" -...... -...... -replicas: 0 -``` - -job: - -``` -annotations: - port-manager/parallelism: "5" -...... -...... -parallelism: 0 -``` - -在port-manager对这些任务分配完端口后,会update相关的宿主机端口,同时把真正需要的replicas、parallelism填入spec中。 - - - - - diff --git a/doc/hostnetwork/portmanager.jpg b/doc/hostnetwork/portmanager.jpg deleted file mode 100644 index 34b0b3d3..00000000 Binary files a/doc/hostnetwork/portmanager.jpg and /dev/null differ diff --git a/doc/howto/build.md b/doc/howto/build.md deleted file mode 100644 index 0d1600b4..00000000 --- a/doc/howto/build.md +++ /dev/null @@ -1,87 +0,0 @@ -# Build Components - -This article contains instructions of build all the components -of PaddlePaddle Cloud and how to pack them into Docker images -so that server-side components can run in the Kubernetes cluster. - -- Server-side components: - - Cloud Server (written in Python, only need to pack to image) - - EDL Controller - - PaddleFS (PFS) Server - - PaddlePaddle Cloud Job runtime Docker image -- Client side component: - - Command line client - -Before starting, you have to setup [Go development environment](https://golang.org/doc/install#install) and install -[glide](https://github.com/Masterminds/glide). - -## Build EDL Controller - -Run the following commands to finish the build: - -```bash -cd go -glide install --strip-vendor -cd go/cmd/edl -go build -``` - -The above step will generate a binary file named `edl` which should -run as a daemon process on the Kubernetes cluster. - - -## Build paddlectl client - -Run the following command to build paddlectl binary. - -```bash -cd go/cmd/paddlectl -go build -``` - -Then file `paddlectl` will be generated under the current directory. - - -# Build Docker Images for Server side - -## EDL Controller Image - -After you've built edl binary, run the following command to build the -corresponding Docker image. - -```bash -cd go/cmd/edl -docker build -t [your image tag] . -``` - -## Cloud Server Image - -This image is used to start the Cloud Server in Kubernetes cluster. To -build, just run: - -```bash -cd python/paddlecloud -docker build -t [your image tag] . -``` - -## PaddleFS (PFS) Server Image - -To build PaddleFS image, just run: - -```bash -cd docker/pfs -sh build.sh -``` - -## Cloud Job runtime Docker image - -To build job runtime image which do the actual cloud job running, run: - -```bash -cd docker -sh build_docker.sh [base paddlepaddle image] [target image] -``` - -- base paddlepaddle image is PaddlePaddle docker runtime image, like - paddlepaddle/paddle:latest-gpu -- target image is the cloud job image name you want to build. diff --git a/doc/howto/deploy.md b/doc/howto/deploy.md deleted file mode 100644 index 1da14b63..00000000 --- a/doc/howto/deploy.md +++ /dev/null @@ -1,146 +0,0 @@ -## Deploy PaddlePaddle Cloud - -### Pre-Requirements -- PaddlePaddle Cloud use Kubernetes as it's backend core, deploy Kubernetes cluster - using [Sextant](https://github.com/k8sp/sextant) or any tool you like. - - -### Run on minikube -Please see [here](https://github.com/PaddlePaddle/cloud/blob/develop/doc/run_on_minikube.md) - -### Run on Kubernetes -- Build Paddle Cloud Docker Image - - ```bash - # build docker image - git clone https://github.com/PaddlePaddle/cloud.git - cd cloud/paddlecloud - docker build -t [your_docker_registry]/pcloud . - # push to registry so that we can submit paddlecloud to kubernetes - docker push [your_docker_registry]/pcloud - ``` - -- We use [volume](https://kubernetes.io/docs/concepts/storage/volumes/) to mount MySQL data - cert files, and settings, in `k8s/` folder we have some samples for how to mount - stand-alone files and settings using [hostpath](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath). Here's - a good tutorial of creating Kubernetes certs: https://coreos.com/kubernetes/docs/latest/getting-started.html - - - create data folder on a Kubernetes node, such as: - - ```bash - mkdir -p /home/pcloud/data/mysql - mkdir -p /home/pcloud/data/certs - ``` - - Copy Kubernetes CA files (ca.pem, ca-key.pem) to `/home/pcloud/data/certs` folder - - Copy Kubernetes admin user key (admin.pem, admin-key.pem) to `/home/pcloud/data/certs` folder (if you don't have it on Kubernetes worker node, you'll find it on Kubernetes master node) - - Optianal: copy CephFS Key file(admin.secret) to `/home/pcloud/data/certs` folder - - Copy `paddlecloud/settings.py` file to `/home/pcloud/data` folder - -- Configure `cloud_deployment.yaml` - - `spec.template.spec.containers[0].volumes` change the `hostPath` which match your data folder. - - `spec.template.spec.nodeSelector.`, edit the value `kubernetes.io/hostname` to host which data folder on.You can use `kubectl get nodes` to list all the Kubernetes nodes. -- Configure `settings.py` - - Add your domain name (or the paddle cloud server's hostname or IP address) to `ALLOWED_HOSTS`. - - Configure `DATACENTERS` to your backend storage, supports CephFS and HostPath currently. - You can use HostPath mode to make use of shared file-systems like "NFS". - If you use something like hostPath, you need to modify the DATACENTERS field in settings.py as follows: - - ``` - DATACENTERS = { - "":{ - "fstype": "hostpath", - "host_path": "/home/pcloud/data/public/", - "mount_path": "/pfs/%s/home/%s/" # mount_path % ( dc, username ) - } - } - ``` - -- Configure `cloud_ingress.yaml` is your Kubernetes cluster is using [ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) (if you need to use Jupyter notebook, you have to configure the ingress controller) - to proxy HTTP traffics, or you can configure `cloud_service.yaml` to use [NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport) - - if using ingress, configure `spec.rules[0].host` to your domain name -- Deploy MySQL on Kubernetes first if you don't have it on your cluster, and modify the MySQL endpoint in settings.py - - `kubectl create -f ./mysql_deployment.yaml` (you need to fill in the nodeselector field with your node's hostname or ip in yaml first) - - `kubectl create -f ./mysql_service.yaml` -- Deploy cloud on Kubernetes - - `kubectl create -f k8s/cloud_deployment.yaml`(you need to fill in the nodeselector field with your node's hostname or IP in yaml first) - - `kubectl create -f k8s/cloud_service.yaml` - - `kubectl create -f k8s/cloud_ingress.yaml`(optional if you don't need Jupyter notebook) - - -To test or visit the website, find out the Kubernetes ingress IP -addresses, or the NodePort. - -Then open your browser and visit `http://`, or -`http://:` - -- Prepare public dataset - - You can create a Kubernetes Job for preparing the public cloud dataset with RecordIO files. You should modify the YAML file as your environment: - - ``, Your cluster datacenter - - ``, Ceph monitor address - ```bash - kubectl create -f k8s/prepare_dataset.yaml - ``` - -### Run locally without docker - -- You still need a kubernetes cluster when try running locally. -- Make sure you have `Python > 2.7.10` installed. -- Python needs to support `OPENSSL 1.2`. To check it out, simply run: - ```python - >>> import ssl - >>> ssl.OPENSSL_VERSION - 'OpenSSL 1.0.2k 26 Jan 2017' - ``` -- Make sure you are using a virtual environment of some sort (e.g. `virtualenv` or -`pyenv`). - -``` -virtualenv paddlecloudenv -# enable the virtualenv -source paddlecloudenv/bin/activate -``` - -To run for the first time, you need to: - -``` -cd paddlecloud -npm install -pip install -r requirements.txt -./manage.py migrate -./manage.py loaddata sites -npm run dev -``` - -Browse to http://localhost:8000/ - -If you are starting the server for the second time, just run: -``` -./manage.py runserver -``` - -### Configure Email Sending -If you want to use `mail` command to send confirmation emails, change the below settings: - -``` -EMAIL_BACKEND = 'django_sendmail_backend.backends.EmailBackend' -``` - -You may need to use `hostNetwork` for your pod when using mail command. - -Or you can use django smtp bindings just refer to https://docs.djangoproject.com/en/1.11/topics/email/ - -## Deploy EDL on Kubernetes Cluster - -[Build EDL and it's Docker image](../build/build_edl_controller.md) first. - -Make sure you have `kubectl` -[configured](https://kubernetes.io/docs/tasks/tools/install-kubectl/) properly -before running the below commands: - -NOTE: `trainingjob_resource.yaml` is only used when you are using EDL with TPR. - -```bash -cd k8s/edl -kubectl create -f trainingjob_resource.yaml -kucectl create -f controller.yaml diff --git a/doc/howto/run_on_minikube.md b/doc/howto/run_on_minikube.md deleted file mode 100644 index c8b4164a..00000000 --- a/doc/howto/run_on_minikube.md +++ /dev/null @@ -1,115 +0,0 @@ -# Run PaddlePaddle Cloud with minikube - -This documentation explains how to run PaddlePaddle Cloud on the development computer using [minikube](https://kubernetes.io/docs/getting-started-guides/minikube/). - -## Steps - -1. Install [minikube and kubectl](https://kubernetes.io/docs/tasks/tools/install-minikube/). - -1. Start a local minikube cluster. The reason we start a 1.6.4 in this case is paddle cloud currently has some dependency on [TPR](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-third-party-resource/), which will be deprecated from 1.7. - - ```bash - minikube start --kubernetes-version v1.6.4 - ``` - - If you can't connect to minikube distribution server,add https_proxy like that: - - ```bash - https_proxy=YOURPROXY:PORT minikube start --kubernetes-version v1.6.4 - ``` -1. Enable ingress addon: - - ``` - minikube addons enable ingress - ``` - -1. Create workspace directory: - - ``` - mkdir $HOME/workspace - ``` - Mount this directory to `/workspce` - ``` - minikube mount $HOME/workspace:/workspace - ``` - - ***Please Note*** : minikube's `mount` might not work properly in Mac. In the other hand, `/Users` directory is automatically mounted to VM's `Users` path by default in Mac, so if you are using Mac, you can skip this step and find workspace directory from `/Users//workspace` in VM instead. - -1. Copy `ca` and generate `admin` certificate: - (We must use `ca` under `~/.minikube` rather than `~/.minikube/certs`.) - - ``` - mkdir $HOME/workspace/certs && cd $HOME/workspace/certs - openssl genrsa -out admin-key.pem 2048 - openssl req -new -key admin-key.pem -out admin.csr -subj "/CN=kube-admin" - openssl x509 -req -in admin.csr -CA ~/.minikube/ca.crt -CAkey ~/.minikube/ca.key \ - -CAcreateserial -out admin.pem -days 365 - cp ~/.minikube/ca.crt . - cp ~/.minikube/ca.key . - ``` - -1. Copy and update PaddlePaddle Cloud configurations: - - In Mac - ``` bash - $WORKSPACE_PATH=$HOME/workspace - ``` - In other OS - - ``` bash - $WORKSPACE_PATH=/workspace - ``` - - ```bash - git clone https://github.com/PaddlePaddle/cloud - cp cloud/k8s/minikube/* $HOME/workspace - sed -i'.bak' -e "s##$WORKSPACE_PATH#g" $HOME/workspace/*.yaml - ``` - -1. Edit `/etc/hosts` and add `$(minikube ip) cloud.testpcloud.org` to it. -1. Start all jobs: - - ``` - kubectl create -f cloud_ingress.yaml - kubectl create -f cloud_service.yaml - kubectl create -f mysql_deployment.yaml - kubectl create -f mysql_service.yaml - kubectl create -f pfs_deployment.yaml - kubectl create -f pfs_service.yaml - kubectl create -f cloud_deployment.yaml - ``` -1. open `cloud.testpcloud.org` in your browser and sign up a user. -1. To interact with PaddlePaddle Cloud instance, you need to use paddlecloud command line tool. Edit command line config file from `~/.paddle/config` like this: - -``` -datacenters: -- name: testpcloud - username: - password: - endpoint: http://cloud.testpcloud.org -current-datacenter: testpcloud -``` - -Now PaddlePaddle Cloud command line is ready to use. - -For further usage, please refer to the doc from [here](https://github.com/PaddlePaddle/cloud/blob/develop/doc/usage_cn.md) (in Chinese), and [here](https://github.com/PaddlePaddle/cloud/blob/develop/doc/usage_en.md) (comming soon) - - -## FAQ -1. There is nothing when open `cloud.testpcloud.org` in browser. - One possible cause is: `default-http-backend` is not ready yet. Run `minikube get po --all-namespaces` to check its status. -If it's stuck at pulling the image, one alternative is to manually download the image and load it with minikube's docker. - - run `kubectrl describe po name --namespace=kube-system` to get docker image uri. - - `docker save > .tar` to save the image to a tar file. You may need to use proxy with this step. - - `minikube ssh` to login to Minikube's command line. - - `docker load < .tar` to load the image to Kubenetes' local docker image repo. - -1. I edited a file in host file system, but it remained unchanged in Minikube virtual machine sometimes. - That might be due to the files cache mechanism of Minikube. You can try to restart the Minikube with `minikube stop` `minikube start --kubernetes-version v1.6.4` to fix it. - -## TODO - -1. Currently the `mysql` docker runs `mysqld` under user `mysql` instead of `root`, which makes it difficult to save `mysql` data to hostpath. - -1. Update TPR to CRD to be able to run on latest kubernetes - diff --git a/doc/tutorial.md b/doc/tutorial.md deleted file mode 100644 index 8d044746..00000000 --- a/doc/tutorial.md +++ /dev/null @@ -1,176 +0,0 @@ -# Getting Started with Submitting Training Jobs - -## Download and Configure paddlectl - -`paddlectl` is a command-line tool that submits distributed training jobs to the paddle cloud. - -- Step1 - - Download `paddlectl` to your system `$PATH` directory, and make it executable by running the command below - - `chmod +x paddlectl` - - Stable `paddlectl` binary can be found from the [Release Page](https://github.com/PaddlePaddle/cloud/releases). - - Or if you wish to try the latest one from our CI, please find the URLs from the table below for different OSs. - - OS | Link - -- | -- - Mac OSX| [paddlecloud.darwin](http://guest:@paddleci.ngrok.io/repository/download/PaddleCloud_Client/.lastSuccessful/paddlecloud.darwin) - Windows| [paddlecloud.exe](http://guest:@paddleci.ngrok.io/repository/download/PaddleCloud_Client/.lastSuccessful/paddlecloud.exe) - Linux | [paddlecloud.x86_64](http://guest:@paddleci.ngrok.io/repository/download/PaddleCloud_Client/.lastSuccessful/paddlecloud.x86_64) - -- Step2 - - Edit the configuration file `~/.paddle/config` (`./paddle\config` - under current user folder for Windows), - `paddlectl` supports adding multi data-center settings and switch between them on the fly. An example configuration is as follows: - - ```bash - datacenters: - - name: production - username: paddlepaddle - password: paddlecloud - endpoint: http://production.paddlecloud.com - - name: experimentation - username: paddlepaddle - password: paddlecloud - endpoint: http://experimentation.paddlecloud.com - current-datacenter: production - ``` - - We suppose you have two data-center's access, one for `production` and another one for - `experimentation`, you can select your current data-center by editing current-datacenter field. - - `username`, `password` and `endpoint` is your credential for accessing the data-center, you will - receive an email with your credential from paddle cloud administrator. - -With completion of the two steps above, execute `paddlectl` command will print the usage: - -```bash -> paddlectl -Usage: paddlecloud - -Subcommands: - commands list all command names - delete Delete the specify resource. - file Simple file operations. - get Print resources - help describe subcommands and their syntax - kill Stop the job. -rm will remove the job from history. - logs Print logs of the job. - registry Add registry secret on paddlecloud. - submit Submit job to PaddlePaddle Cloud. - -Subcommands for PFS: - cp upload or download files - ls List files on PaddlePaddle Cloud - mkdir mkdir directoies on PaddlePaddle Cloud - rm rm files on PaddlePaddle Cloud - - -Use "paddlectl flags" for a list of top-level flags -``` - -## Download the Demo Projects and Try to Submit it - -We prepare some demo projects to help users understanding how to submit -a distributed training job to PaddleCloud, these demo codes are based -on [Paddle Book](https://github.com/Paddlepaddle/book), you can find the -tutorials for each chapter. - -You can fetch the demo code and submit the job with the following command: - -```bash -> mkdir fit_a_line -> cd fit_a_line -> wget https://raw.githubusercontent.com/PaddlePaddle/cloud/develop/demo/fit_a_line/train.py -> cd .. -> paddlecloud submit -jobname fit-a-line -cpu 1 -gpu 1 -parallelism 1 -entry "python train.py train" fit_a_line/ -``` - -Options: - -- `-jobname`, STRING, the job name, you should specify a unique name. -- `-cpu`, INT, CPU cores for each trainer node. -- `-gpu`, INT, GPU cards for each trainer node, - if the cluster doesn't support GPU, please set `-gpu 0`. -- `-parallelism`, INT, the parallelism, means trainer node count. -- `-entry`, STRING, the entry point for the training job. -- `./fit_a_line`, STRING, the local directory including job package. - -**NOTE1**: You can find the complete usage by `paddlectl submit -h`. - -**NOTE2**: Submit the job by different jobnames, so that it does -not conflict with previous job with the same name. - -**NOTE3**: If you want a higher parallelism, you could modify entry point by `-entry "python train.py prepare"`, - to prepare the training data on PFS, and then submit the training job again. - -## Check the Status and Logs - -After submitting the job, you can check all the jobs by `paddlectl get jobs` - -```bash -> paddlectl get jobs -NUM NAME SUCC FAIL START COMP ACTIVE -0 fit-a-line 2017-06-26T08:41:01Z 1 -``` - -- `ACTIVE`, the number for running training node. -- `SUCC`, the number for finished training node. -- `FAIL`, the number for failed training node. - -Then, you can view the logs of a job(only running or finished status) by `paddelctl logs` - -```bash - paddlecloud logs fit-a-line -Test 28, Cost 13.184950 -append file: /pfs/dlnel/public/dataset/uci_housing/train-00000.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00001.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00002.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00003.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00004.pickle -Pass 28, Batch 0, Cost 9.695825 -Pass 28, Batch 100, Cost 14.143484 -Pass 28, Batch 200, Cost 11.380404 -Test 28, Cost 13.184950 -... -``` - -`paddlectl logs` will return the last 10 lines by default, you can also -use `-n ` argument to print the last `` of lines. - -```bash -> paddlecloud logs -n 100 fit-a-line -... -``` - -## Download the Saved Models - -When a training job finished, the output model would be saved on PFS, you can -check and fetch the output models by the following commands: - -```bash -> paddlecloud file ls /pfs/dlnel/home/wuyi05@baidu.com/jobs/fit_a_line/ -train.py -image -output -> paddlecloud file ls /pfs/dlnel/home/wuyi05@baidu.com/jobs/fit_a_line/output/ -pass-0001.tar -... -> paddlecloud file get /pfs/dlnel/home/wuyi05@baidu.com/jobs/fit_a_line/output/pass-0001.tar ./ -``` - -## Clean the Training Job - -The following command will clean the training job, after that, you can't check -the logs, but you can find the output from -`/pfs//jobs/`: - -```bash -> paddlectl kill fit-a-line -``` - ---- -More details about the usage: [usage_cn.md](./usage_cn.md) \ No newline at end of file diff --git a/doc/tutorial_cn.md b/doc/tutorial_cn.md deleted file mode 100644 index 6b78d6eb..00000000 --- a/doc/tutorial_cn.md +++ /dev/null @@ -1,172 +0,0 @@ -# 提交第一个训练任务 - ---- - -## 下载并配置paddlectl - -`paddlectl`是提交PaddlePaddleCloud分布式训练任务的命令行工具。 - -- 步骤1 - - 下载`paddlectl`客户端,并将二进制文件拷贝到环境变量 `$PATH` 所指向的目录下,例如 - `/usr/local/bin`, 然后使用命令 `chmod +x /usr/local/bin/paddlectl` 赋予 - 可执行权限。 - - 我们推荐用户优先从[Release Page](https://github.com/PaddlePaddle/cloud/releases)中下载最新 - 版本的客户端,同时您也可以在我们CI系统上下载develop分支最新编译的二进制文件。 - - 操作系统 | 下载链接 - -- | -- - Mac OSX| [paddlecloud.darwin](http://guest:@paddleci.ngrok.io/repository/download/PaddleCloud_Client/.lastSuccessful/paddlecloud.darwin) - Windows| [paddlecloud.exe](http://guest:@paddleci.ngrok.io/repository/download/PaddleCloud_Client/.lastSuccessful/paddlecloud.exe) - Linux | [paddlecloud.x86_64](http://guest:@paddleci.ngrok.io/repository/download/PaddleCloud_Client/.lastSuccessful/paddlecloud.x86_64) - -- 步骤2 - 创建`~/.paddle/config`文件(windows系统创建当前用户目录下的`.paddle\config`文件),下面是示例文件: - - ```bash - datacenters: - - name: production - username: paddlepaddle - password: paddlecloud - endpoint: http://production.paddlecloud.com - - name: experimentation - username: paddlepaddle - password: paddlecloud - endpoint: http://experimentation.paddlecloud.com - current-datacenter: production - ``` - - 假设您有两个data-center的权限,其中一个是 `production`, 另外一个是 `experimentation`, - 您可以通过 `current-datacenter` 字段来指定当前使用哪以为data-center. - - `username`, `password` 和 `endpoint` 字段是您在data-center中的认证信息,这些信息会包含在 - 管理员发给您的邮件中。 - -以上两步骤完成后,执行 `paddelctl` 可以打印出帮助信息: - -```bash -> paddlectl -Usage: paddlecloud - -Subcommands: - commands list all command names - delete Delete the specify resource. - file Simple file operations. - get Print resources - help describe subcommands and their syntax - kill Stop the job. -rm will remove the job from history. - logs Print logs of the job. - registry Add registry secret on paddlecloud. - submit Submit job to PaddlePaddle Cloud. - -Subcommands for PFS: - cp upload or download files - ls List files on PaddlePaddle Cloud - mkdir mkdir directoies on PaddlePaddle Cloud - rm rm files on PaddlePaddle Cloud - - -Use "paddlecloud flags" for a list of top-level flags -``` - -## 下载Demo代码并尝试提交任务 - -我们准备了一些样例代码帮助理解集群训练任务的提交方法,这些示例代码都是基于 -[Paddle Book](https://github.com/PaddlePaddle/book) 编写的, 您可以在每个章节中找到说明文档。 - -您可以使用下面命令获取Demo代码并提交任务: - -```bash -> mkdir fit_a_line -> cd fit_a_line -> wget https://raw.githubusercontent.com/PaddlePaddle/cloud/develop/demo/fit_a_line/train.py -> cd .. -> paddlecloud submit -jobname fit-a-line -cpu 1 -gpu 1 -parallelism 1 -entry "python train.py train" fit_a_line/ -``` - -参数说明: - -- `-jobname`, STRING,任务名称,您需要指定一个唯一的任务名字。 -- `-cpu`, INT,Trainer节点使用的CPU核心数。 -- `-gpu 1`, INT,使用的GPU资源(卡数),若集群无GPU资源,可以去掉这个配置 -- `-parallelism`, INT, 并行度, 训练节点的个数。 -- `-entry`, STRING, 训练脚本的启动命令。 -- `fit_a_line` STRING, 任务程序目录。 - -***说明1:*** 如果希望查看完整的任务提交参数说明,可以执行`paddlecloud submit -h`。 - -***说明2:*** 每个任务推荐使用不同的jobname提交,这样之前的任务的代码和执行结果都会保存在云端。 - -***说明3:*** 如果提交的节点比较多,可以先修改启动命令中的参数`-entry "python train.py prepare"`,先将数据集下载到PFS上,再提交训练任务。 - -## 查看任务运行状态和日志 - -任务启动之后,可以用过命令`paddlecloud get jobs`查看正在运行的任务: - -```bash -> paddlecloud get jobs -NUM NAME SUCC FAIL START COMP ACTIVE -0 fit-a-line 2017-06-26T08:41:01Z 1 -``` - -- `ACTIVE`, 正在运行的节点数量。 -- `SUCC`,运行结束并成功的节点数量。 -- `FAIL`,运行失败的节点数量。 - -然后,使用下面的命令可以查看正在运行或完成运行任务的日志: - -```bash - paddlecloud logs fit-a-line -Test 28, Cost 13.184950 -append file: /pfs/dlnel/public/dataset/uci_housing/train-00000.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00001.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00002.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00003.pickle -append file: /pfs/dlnel/public/dataset/uci_housing/train-00004.pickle -Pass 28, Batch 0, Cost 9.695825 -Pass 28, Batch 100, Cost 14.143484 -Pass 28, Batch 200, Cost 11.380404 -Test 28, Cost 13.184950 -... -# logs命令默认返回10条末尾的日志,如果需要查看更多的日志, -# 也可以使用-n参数指定日志的条数 -paddlecloud logs -n 100 fit-a-line -... -``` - -任务执行完成后,任务的状态会显示为如下状态: - -```bash -paddlecloud get jobs -NUM NAME SUCC FAIL START COMP ACTIVE -0 fit-a-line 1 2017-06-26T08:41:01Z 2017-06-26T08:41:29Z -``` - -## 下载任务的模型输出 - -任务成功执行后,训练程序一般会将模型输出保存在云端文件系统中,可以用下面的命令查看,并下载模型的输出: - -```bash -paddlecloud file ls /pfs/dlnel/home/wuyi05@baidu.com/jobs/fit_a_line/ -train.py -image -output -paddlecloud file ls /pfs/dlnel/home/wuyi05@baidu.com/jobs/fit_a_line/output/ -pass-0001.tar -... -paddlecloud file get /pfs/dlnel/home/wuyi05@baidu.com/jobs/fit_a_line/output/pass-0001.tar ./ -``` - -模型下载之后,就可以把模型应用在预测服务等环境了。 - -## 清除任务 - -使用下面命令可以完全清除集群上的训练任务,清理之后,任务的历史日志将无法查看,但仍然可以在任务名的目录下找到之前的输出。 - -```bash -paddlecloud kill fit-a-line -``` - ---- -详细使用文档见:[中文使用文档](./usage_cn.md) diff --git a/doc/usage_cn.md b/doc/usage_cn.md deleted file mode 100644 index 48831bd7..00000000 --- a/doc/usage_cn.md +++ /dev/null @@ -1,440 +0,0 @@ -# 使用命令提交集群训练任务 - ---- - -## 下载并配置paddlecloud - -`paddlecloud`是提交PaddlePaddleCloud分布式训练任务的命令行工具。 - -步骤1: 访问链接 https://github.com/PaddlePaddle/cloud/releases 下载最新的`paddlecloud`二进制客户端,并把`paddlecloud`拷贝到环境变量$PATH中的路径下,比如:`/usr/local/bin` - -步骤2: 创建`~/.paddle/config`文件(windows系统创建当前用户目录下的`.paddle\config`文件),并写入下面内容, - -```yaml -datacenters: -- name: datacenter1 - username: [your user name] - password: [secret] - endpoint: http://cloud.paddlepaddle.org -current-datacenter: datacenter1 -``` - -配置文件用于指定使用的PaddlePaddleCloud服务器集群的接入地址,并需要配置用户的登录信息: -- name: 自定义的datacenter名称,可以是任意字符串 -- username: PaddlePaddleCloud的用户名,账号在未开放注册前需要联系管理员分配,通常用户名为邮箱地址 -- password: 账号对应的密码 -- endpoint: PaddlePaddleCloud集群API地址,可以从集群管理员处获得 -- current-datacenter: 标明使用哪个datacenter作为当前操作的datacenter - -配置文件创建完成后,执行`paddlecloud`会显示该客户端的帮助信息: - -``` -Usage: paddlecloud - -Subcommands: - commands list all command names - delete Delete the specify resource. - file Simple file operations. - get Print resources - help describe subcommands and their syntax - kill Stop the job. -rm will remove the job from history. - logs Print logs of the job. - registry Add registry secret on paddlecloud. - submit Submit job to PaddlePaddle Cloud. - -Subcommands for PFS: - cp upload or download files - ls List files on PaddlePaddle Cloud - mkdir mkdir directoies on PaddlePaddle Cloud - rm rm files on PaddlePaddle Cloud - - -Use "paddlecloud flags" for a list of top-level flags -``` - -## 准备训练数据 - -不同的PaddlePaddleCloud集群环境会提供不同的分布式存储服务。目前PaddlePaddleCloud支持HDFS和CephFS。 - -### HDFS环境下训练数据准备 - -使用`ssh`登录到集群中的公用数据中转服务器上,进行数据上传,下载,更新等操作。您可以在中转服务器的`/mnt`路径下找到集群HDFS的目录,并可以访问当前有权限的目录。上传数据则可以使用管理普通Linux文件的方式,将数据`scp`到中转服务器`/mnt`下的用户数据目录。比如: - -```bash -scp -r my_training_data_dir/ user@tunnel-server:/mnt/hdfs_mulan/idl/idl-dl/mydir/ -``` - -***说明:您可能需要联系集群管理员以获得数据中转服务器的登录地址和权限。*** - -在训练任务提交后,每个训练节点会把HDFS挂载在`/pfs/[datacenter_name]/home/[username]/`目录下这样训练程序即可使用这个路径读取训练数据并开始训练。 - -### 使用[RecordIO](https://github.com/PaddlePaddle/recordio)对训练数据进行预处理 -用户需要在本地将数据预先处理为RecordIO的格式,再上传至集群进行训练。 -- 使用RecordIO库进行数据预处理 -```python -import paddle.v2.dataset as dataset -dataset.common.convert(output_path = "./dataset", - reader = dataset.uci_housing.train(), - line_count = 10, - name_prefix = "uci_housing_train") -``` - - `output_path` 输出路径 - - `reader` 用户自定义的[reader](https://github.com/PaddlePaddle/Paddle/tree/develop/doc/design/reader),实现方法可以参考[paddle.v2.dataset.uci_housing.train()](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/uci_housing.py#L74) - - `num_shards` 生成的文件数量 - - `num_prefix` 生成的文件名前缀 - -执行成功后会在本地生成如下文件: -```bash -. -./dataset -./dataset/uci_houseing_train-00000-of-00009 -./dataset/uci_houseing_train-00001-of-00009 -./dataset/uci_houseing_train-00002-of-00009 -./dataset/uci_houseing_train-00003-of-00009 -... -``` - -- 编写reader来读取RecordIO格式的文件 -```python -import cPickle as pickle -import recordio -import glob -import sys -def recordio_reader(filepath, parallelism, trainer_id): - # sample filepath as "/pfs/dlnel/home/yanxu05@baidu.com/dataset/uci_housing/uci_housing_train*" - def reader(): - if trainer_id >= parallelism: - sys.stdout.write("invalied trainer_id: %d\n" % trainer_id) - return - files = glob.glob(filepath) - files.sort() - my_file_list = [] - for idx, f in enumerate(files): - if idx % parallelism == trainer_id: - my_file_list.append(f) - - for fn in my_file_list: - r = recordio.reader(fn) - while True: - d = r.read() - if not d: - break - yield pickle.loads(d) - - return reader -``` - -### 使用paddlecloud上传训练数据 - -paddlecloud命令集成了上传数据的功能,目前仅针对存储系统是CephFS的环境。如果希望上传,执行: - -```bash -paddlecloud file src dest -``` -- `src` 必须是当前目录的子目录,`../`是不允许的。 -- `src` 如果以'/'结尾,则表示上传`src`目录下的文件,不会在`dest`下创建新的目录。 -- `src` 如果没有以`/`结尾,则表示上传`src`目录,会在`dest`下创建一个新的目录。 -- `dest` 必须包含`/pfs/{datacenter}/user/{username}`目录。 - - - -### 使用公共数据集 - -不论是在HDFS环境还是CephFS环境,用户提交的任务中都可以访问目录`/pfs/public`获得公开数据集的访问。 -在分布式环境中,每个trainer希望访问一部分数据,则可以编写如下的reader代码访问已经拆分好的数据集: - -```python -TRAIN_FILES_PATTERN = os.path.join(common.DATA_HOME, - "uci_housing/train-*.pickle") -def train(): - return common.cluster_files_reader( - TRAIN_FILES_PATTERN, - trainer_count = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "1")), - trainer_id = int(os.getenv("PADDLE_INIT_TRAINER_ID", "0"))) - -``` - -## 训练程序包 - -训练程序包是指包含训练程序、依赖、配置文件的一个目录。这个目录必须完整的包含此训练程序的完整依赖,否则可能无法在集群中正常执行。 - -### 定义集群中的训练数据分发 - -每个集群训练任务都会在集群的多个节点上启动训练程序实例,每个训练程序实例会完成一部分训练数据的训练任务。为了能比较均匀的将大量训练数据分配在这些节点上,在编写训练程序时,通常会使用下面的方法: - -```python -TRAIN_FILE_PATTERN = "/pfs/[datacenter_name]/home/[username]/user001_space/part-*.gz" -TEST_FILE_PATTERN = "/pfs/[datacenter_name]/home/[username]/user001_space_test/part-*.gz" - -def gen_train_list(data_dir): - # write "/train.list" and "/test.list" for each node - trainer_id = -1 - trainer_count = -1 - with open("/trainer_id", "r") as f: - trainer_id = int(f.readline()[:-1]) - with open("/trainer_count", "r") as f: - trainer_count = int(f.readline()[:-1]) - - train_file_list = glob.glob(TRAIN_FILE_PATTERN) - train_file_list.sort() - my_train_list = [] - for idx, f in enumerate(train_file_list): - if idx % trainer_count == trainer_id: - my_train_list.append(f) - with open("/train.list", "w") as f: - f.write('\n'.join(my_train_list)) - - test_file_list = glob.glob(TEST_FILE_PATTERN) - test_file_list.sort() - my_test_list = [] - for idx, f in enumerate(test_file_list): - if idx % trainer_count == trainer_id: - my_test_list.append(f) - with open("/test.list", "w") as f: - f.write('\n'.join(my_test_list)) - -``` - -这段代码会根据指定的HDFS中的训练数据路径,将文件顺序的分配给每个节点,并生成两个文件`/train.list`和`/test.list`保存分配给当前节点的训练数据文件的路径。在调用`define_py_data_sources2`定义训练数据时,传入这两个文件路径即可。 - -### 上传训练程序包到HDFS(仅HDFS存储下需要) - -上传训练程序包到HDFS的方式和上传训练数据方式相同。使用公用数据中转服务器,将训练程序包上传到HDFS。比如: - -```bash -scp -r my_training_package/ user@tunnel-server:/mnt/hdfs_mulan/idl/idl-dl/mypackage/ -``` - -在下面提交任务的步骤中,需要指定集群上的程序包的位置:`/pfs/[datacenter_name]/home/[username]/idl/idl-dl/mypackage/`即可在集群中执行这个程序包中的训练程序。 - -***注意: 此方式会逐步淘汰*** - - -## 提交任务 - -执行下面的命令提交准备好的任务: - -- 提交基于V1 API的训练任务 - -```bash -paddlecloud submit -jobname my-paddlecloud-job \ - -cpu 1 \ - -gpu 0 \ - -memory 1Gi \ - -parallelism 10 \ - -pscpu 1 \ - -pservers 3 \ - -psmemory 1Gi \ - -entry "python trainer_config.py" /pfs/[datacenter_name]/home/[username]/ctr_demo_package -``` - -- 提交基于V2 API的训练任务 - -```bash -paddlecloud submit -jobname my-paddlecloud-job \ - -cpu 1 \ - -gpu 0 \ - -memory 1Gi \ - -parallelism 10 \ - -pscpu 1 \ - -pservers 3 \ - -psmemory 1Gi \ - -passes 1 \ - -entry "python trainer_config.py" \ - /pfs/[datacenter_name]/home/[username]/ctr_demo_package -``` - -参数说明: -- `jobname`:提交任务的名称,paddlecloud使用`jobname`唯一标识一个任务 - - ***注意:*** jobname必须由字母、数字、“-”和“.”组成,并且以字母数字组合结尾,***不能*** 包含下划线“_” -- `-cpu`:每个trainer进程使用的CPU资源,单位是“核” -- `-gpu`:每个trainer进程使用的GPU资源,单位是“卡” -- `-memory`:每个trainer进程使用的内存资源,格式为“数字+单位”,单位可以是:Ki,Mi,Gi -- `-parallelism`:启动trainer的个数/并发节点数 -- `-pscpu`:parameter server占用的CPU资源,单位是“核” -- `-pservers`:parameter server的节点个数 -- `-psmemory`:parameter server占用的内存资源,格式为“数字+单位”,单位可以是:Ki,Mi,Gi -- `-topology`:指定PaddlePaddle v1训练的模型配置python文件 -- `-entry`: 指定PaddlePaddle v2训练程序的启动命令 -- `-passes`:执行训练的pass个数 -- `package`:HDFS 训练任务package的路径 - -### 使用自定义的Runtime Docker Image -runtime Docker Image是实际被Kubernetes调度的Docker Image,如果在某些情况下需要自定义属于某个任务的Docker Image可以通过以下方式 -- 自定义Runtime Docker Image - ```bash - git clone https://github.com/PaddlePaddle/cloud.git && cd cloud/docker - ./build_docker.sh {PaddlePaddle production image} {runtime Docker image} - docker push {runtime Docker image} - ``` -- 使用自定义的runtime Docker Image来运行Job - ```bash - paddlecloud submit -image {runtime Docker image} -jobname ... - ``` - -- 使用私有registry的runtime Docker image - - 在PaddleCloud上添加registry认证信息 - ```bash - paddlecloud registry \ - -username {your username} - -password {your password} - -server {your registry server} - -name {your registry name} - ``` - - 使用私有registry提交任务 - ```bash - paddlecloud submit \ - -image {runtime Docker image} \ - -registry {your registry name} - ``` - - 查看所有的registry - ```bash - paddlecloud get registry - ``` - - 删除指定的registry - ```bash - paddlecloud delete registry - ``` - - -## 查看任务状态 - -用户可以查看任务、任务节点、用户空间配额的当前状态。 - -执行`paddlecloud get jobs`命令查看任务运行状态,将显示: - -``` -NUM NAME SUCC FAIL START COMP ACTIVE -0 paddle-cluster-job 1 2017-05-24T07:52:45Z 1 -``` - -执行`paddlecloud get workers paddle-cluster-job`查看worker运行状态,显示: - -``` -NAME STATUS START -paddle-cluster-job-trainer-3s4nz Running 2017-05-24T07:53:41Z -paddle-cluster-job-trainer-6sc4q Running 2017-05-24T07:53:03Z -... -``` - -## 查看任务日志 - -执行`paddlecloud logs paddle-cluster-job`显示当前任务的所有worker的日志: - -``` -label selector: paddle-job-pserver=paddle-cluster-job, desired: 3 -running pod list: [('Running', '172.17.29.47'), ('Running', '172.17.37.46'), …, ('Running', '172.17.28.244')] -sleep for 10 seconds... -running pod list: [('Running', '172.17.29.47'), ('Running', '172.17.37.46'), …, ('Running', '172.17.28.244')] -label selector: paddle-job=paddle-job-yanxu, desired: 10 -running pod list: [('Running', '172.17.31.182’),…(‘Running', '172.17.12.234'), ('Running', '172.17.22.238')] -Starting training job: /pfs/***/home/***/***/ctr_package_cloud, num_gradient_servers: 200, trainer_id: 102, version: v1 -I0524 12:00:31.511015 43 Util.cpp:166] commandline: /usr/bin/../opt/paddle/bin/paddle_trainer --port=7164 --nics= --ports_num=1 --ports_num_for_sparse=1 --num_passes=1 --trainer_count=1 --saving_period=1 --log_period=20 --local=0 --config=trainer_config.py --use_gpu=0 --trainer_id=102 --save_dir= --pservers=172.17.29.47,,172.17.28.244 --num_gradient_servers=200 -[INFO 2017-05-24 12:00:39,316 networks.py:1482] The input order is [....] -[INFO 2017-05-24 12:00:39,319 networks.py:1488] The output order is [__cost_0__] -I0524 12:00:39.330195 43 Trainer.cpp:165] trainer mode: Normal -I0524 12:00:39.514008 43 PyDataProvider2.cpp:243] loading dataprovider dataprovider::process_deep -[INFO 2017-05-24 12:00:39,814 dataprovider.py:21] hook -[INFO 2017-05-24 12:00:39,883 dataprovider.py:33] dict_size is 5231 -[INFO 2017-05-24 12:00:39,883 dataprovider.py:34] schema_pos_size is 552 -[INFO 2017-05-24 12:00:39,883 dataprovider.py:35] schema_output_size is 51 -I0524 12:00:39.884352 43 PyDataProvider2.cpp:243] loading dataprovider dataprovider::process_deep -[INFO 2017-05-24 12:00:39,884 dataprovider.py:21] hook -[INFO 2017-05-24 12:00:39,914 dataprovider.py:33] dict_size is 5231 -[INFO 2017-05-24 12:00:39,914 dataprovider.py:34] schema_pos_size is 552 -[INFO 2017-05-24 12:00:39,914 dataprovider.py:35] schema_output_size is 51 -I0524 12:00:39.915364 43 GradientMachine.cpp:86] Initing parameters.. -I0524 12:00:39.924811 43 GradientMachine.cpp:93] Init parameters done. -I0524 12:00:39.924881 43 ParameterClient2.cpp:114] pserver 0 172.17.29.47:7164 -I0524 12:00:39.925227 43 ParameterClient2.cpp:114] pserver 1 172.17.37.46:7164 -I0524 12:00:39.925472 43 ParameterClient2.cpp:114] pserver 2 172.17.55.171:7164 -I0524 12:00:39.925714 43 ParameterClient2.cpp:114] pserver 3 172.17.35.175:7164 -``` - -如果任务workers较多,可以指定查看某个worker的单独的日志:`paddlecloud logs -w paddle-cluster-job-trainer-3s4nz paddle-cluster-job`。 - -## 终止任务 -执行`paddlecloud kill paddle-cluster-job`即可停止训练任务的所有节点和进程。 - -kill命令执行成功后,集群会在后台终止集群作业的workers进程,workers并不会在kill命令之后全部停止。如果需要查看kill掉的任务正在清理的workers,可以使用命令`paddlecloud get workers paddle-cluster-job`查看。 - -***所以在kill之后提交新的任务时,要记得更改提交时的`-name`参数,防止任务名称冲突。*** - -## 如何准备一个支持分布式的dataset -由于分布式训练会同时启动多个trainer实例,为了保证每个trainer实例能够获取到同等规模的数据集,我们需要对单机dataset拆分为多个小文件, 每个trainer根据自己的运行时信息来决定读取哪些具体的文件。[这里](../demo/fit_a_line/train.py)是训练程序的样例,[这里](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/uci_housing.py)是dataset的样例。 - -### 预处理训练数据 -您可以使用PaddlePaddle提供的默认函数[paddle.v2.dataset.common.split](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/common.py#L129)将reader的数据切分为多个小文件,当然您也可以自定义一个预处理函数来切分数据: - -```python -import paddle.v2.dataset.uci_housing as uci_housing -import paddle.v2.dataset.common as common -common.split(reader = uci_housing.train(), // Your reader instance - line_count = 500, // line count for each file - suffix = "./uci_housing/train-%05d.pickle") // filename suffix for each file, must contain %05d -``` - -`split`默认会使用[cPickle](https://docs.python.org/2/library/pickle.html#module-cPickle)函数将Python对象序列化到本地文件, 上述代码会将uci_housing的数据集切分成成多个cPickle格式的小文件,您可以使用PaddlePaddle的生产环境镜像在本地运行切分数据的代码: - -```bash -docker run --rm -it -v $PWD:/work paddlepaddle/paddle:latest python /work/run.py -``` -执行成功后可以通过公用的数据中转机将数据上传至集群。 - -- 自定义序列化函数 - - 您可以用过`dumper`参数来指定序列化的函数,dumper的接口格式为 - - ```python - dumper(obj=, file=) - ``` - - 例如,使用[marshal.dump](https://docs.python.org/2.7/library/marshal.html#marshal.dump)替换默认的`cPickle.dump` - - ```python - common.split(reader = uci_housing.train(), // Your reader instance - line_count = 500, // reader iterator count for each file - suffix="./uci_housing/train-%05d.pickle", // filename suffix for each file - dumper=marshal.dump) // using pickle.dump instead of the default function: cPickle.dump - ``` - -### 读取分布式文件的reader -训练代码需要在运行时判断自己身份并决定读取哪些文件,PaddlePaddle同样提供了默认函数[paddle.v2.dataset.common.cluster_files_reader](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/common.py#L167)来读取这些文件,您也可以定义自己的函数来读取文件。通过以下环境变量可以获取到一些有用的运行时信息: -- `PADDLE_INIT_NUM_GRADIENT_SERVERS`: trainer实例的数量 -- `PADDLE_INIT_TRAINER_ID`: 当前trainer的ID,从0开始到`$TRAINERS-1` -- `PADDLE_CLOUD_CURRENT_DATACENTER`: 当前的datacenter - -样例代码: -```python -import paddle.v2.dataset.common as common - -dc = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") - -def train(): - return common.cluster_files_reader( - "/pfs/%s/public/dataset/uci_housing/train-*.pickle" % dc, - trainer_count = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS")), - train_id = int(os.getenv("PADDLE_INIT_TRAINER_ID")) - ) -``` - -- 自定义文件加载函数 - 同样您也可以通过`loader`参数来指定如何加载文件,`loader`的接口格式: - - ```python - d = loader(f = ) - ``` - - 例如,使用[marshal.load](https://docs.python.org/2.7/library/marshal.html#marshal.load)替换默认的`cPickle.load`: - - ```python - def train(): - return common.cluster_files_reader( - "/pfs/%s/public/dataset/uci_housing/train-*.pickle" % dc, - trainer_count = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS")), - train_id = int(os.getenv("PADDLE_INIT_TRAINER_ID")), - loader = marshal.load - ) - ``` - -*注意*: `"/pfs/%s/public" % dc`是公用数据的默认访问路径,所有Job对此目录具有*只读*权限。 diff --git a/doc/usage_en.md b/doc/usage_en.md deleted file mode 100644 index a695103a..00000000 --- a/doc/usage_en.md +++ /dev/null @@ -1,461 +0,0 @@ -# Submit PaddlePaddle Cluster Jobs - ---- - -## Donwload And Configure paddlectl client - -`paddlectl` is the command line tool for PaddlePaddleCloud distributed training. - -### Steps - -1. Download latest `paddlectl` client binary from https://github.com/PaddlePaddle/cloud/releases, copy `paddlectl` to system $PATH directory, I.E. `/usr/local/bin` - -1. Create `~/.paddle/config` (`.paddle\config` under current user directory for Windows users) and fill it with the following content: - -```yaml -datacenters: -- name: datacenter1 - username: [your user name] - password: [secret] - endpoint: http://cloud.paddlepaddle.org -current-datacenter: datacenter1 -``` -Above file configures PaddlePaddleCloud cluster endpoints with user credentials. - -- name: self defined datacenter name, can be any string. -- username: username for PaddlepaddleCloud, usually this is a email address, created by system administrator -- password: the password for above account. -- endpoint: URL for PaddlePaddleCloud cluster API. This info will be provided by system administrator along with username&password -- current-datacenter: To identify current datacenter - -After finish editing the config file, run `paddlectl` will show help message as follows: - -``` bash -Usage: paddlectl - -Subcommands: - commands list all command names - delete Delete the specify resource. - file Simple file operations. - get Print resources - help describe subcommands and their syntax - kill Stop the job. -rm will remove the job from history. - logs Print logs of the job. - registry Add registry secret on paddlectl. - submit Submit job to PaddlePaddle Cloud. - -Subcommands for PFS: - cp upload or download files - ls List files on PaddlePaddle Cloud - mkdir mkdir directoies on PaddlePaddle Cloud - rm rm files on PaddlePaddle Cloud - - -Use "paddlectl flags" for a list of top-level flags - -``` - -## Preparing Training Data - -Different PaddlePaddle Cloud environment may provide different storage services. PaddlePaddle Cloud currently works with HDFS and CephFS. - -### Manually upload training data to HDFS - -You can login to public data server via `ssh` to upload, download or update data. You can find cluster HDFS directory under `/mnt` and access the directories you are authorized. Data uploading is accomplished via common Linux file managing fashion, `scp` you local data to public data server's `/mnt` directory, for example: - -```bash -scp -r my_training_data_dir/ user@tunnel-server:/mnt/hdfs_mulan/idl/idl-dl/mydir/ -``` - -***Please note:You might need to contact system administrator to find the public server login address and credential*** - -When training job is submitted, each training node will mount HDFS under `/pfs/[datacenter_name]/home/[username]/`, so that the training program can access the data and start training. - -### Preprocess training data with [RecordIO](https://github.com/PaddlePaddle/recordio) - -User need to preprocess and convert local data to the format of RecordIO before uploading to training cluster. - -- Preprocessing data with RecordIO library -```python -import paddle.v2.dataset as dataset -dataset.common.convert(output_path = "./dataset", - reader = dataset.uci_housing.train(), - line_count = 10, - name_prefix = "uci_housing_train") -``` - - `output_path` output path - - `reader` user defined [reader](https://github.com/PaddlePaddle/Paddle/tree/develop/doc/design/reader), please refer to [paddle.v2.dataset.uci_housing.train()] for implementation(https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/uci_housing.py#L74) - - `num_shards` number of files to generate - - `num_prefix` prefix of file names - -files will be generated as follows: -```bash -. -./dataset -./dataset/uci_houseing_train-00000-of-00009 -./dataset/uci_houseing_train-00001-of-00009 -./dataset/uci_houseing_train-00002-of-00009 -./dataset/uci_houseing_train-00003-of-00009 -... -``` - -- Implement RecordIO reader -```python -import cPickle as pickle -import recordio -import glob -import sys -def recordio_reader(filepath, parallelism, trainer_id): - # sample filepath as "/pfs/dlnel/home/yanxu05@baidu.com/dataset/uci_housing/uci_housing_train*" - def reader(): - if trainer_id >= parallelism: - sys.stdout.write("invalied trainer_id: %d\n" % trainer_id) - return - files = glob.glob(filepath) - files.sort() - my_file_list = [] - for idx, f in enumerate(files): - if idx % parallelism == trainer_id: - my_file_list.append(f) - - for fn in my_file_list: - r = recordio.reader(fn) - while True: - d = r.read() - if not d: - break - yield pickle.loads(d) - - return reader -``` - -### Upload training data using paddlectl - -`paddlectl` command line is able to upload data training cluster to CephFS. - -```bash -paddlectl file src dest -``` - -- `src` must be child directory of current directory,`../` is not allowed. -- if `src` ends with `/`, that means uploading files under `src`, no new directories will be created under `des`. -- if `src` does NOT end with `/`, that means `src` directory will be uploaded, which will be a sub directory of `dest`. -- `dest` must contain `/pfs/{datacenter}/user/{username}` as part of the path. - - -### Using public dataser - -In either HDFS or CephFS, user training task is able to access `/pfs/public` for public dataset. -In distributed training environment, if each trainer just need to access a subset of the data, try the following reader to access the sliced dataset - -```python -TRAIN_FILES_PATTERN = os.path.join(common.DATA_HOME, - "uci_housing/train-*.pickle") -def train(): - return common.cluster_files_reader( - TRAIN_FILES_PATTERN, - trainer_count = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS", "1")), - trainer_id = int(os.getenv("PADDLE_INIT_TRAINER_ID", "0"))) - -``` - -## Training Program Package - -Training program package is a directory which contains training program, dependencies and config files. This directory must contain all the dependencies, or it will not work properly in cluster. - -### Define the training data distribution in cluster - -Each training job will launch multiple training instances in multiple cluster nodes, each training instance will take a subset of the training task. To evenly distribute the large amount of data to each of the nodes, the following python program is an example of doing so: - -```python -TRAIN_FILE_PATTERN = "/pfs/[datacenter_name]/home/[username]/user001_space/part-*.gz" -TEST_FILE_PATTERN = "/pfs/[datacenter_name]/home/[username]/user001_space_test/part-*.gz" - -def gen_train_list(data_dir): - # write "/train.list" and "/test.list" for each node - trainer_id = -1 - trainer_count = -1 - with open("/trainer_id", "r") as f: - trainer_id = int(f.readline()[:-1]) - with open("/trainer_count", "r") as f: - trainer_count = int(f.readline()[:-1]) - - train_file_list = glob.glob(TRAIN_FILE_PATTERN) - train_file_list.sort() - my_train_list = [] - for idx, f in enumerate(train_file_list): - if idx % trainer_count == trainer_id: - my_train_list.append(f) - with open("/train.list", "w") as f: - f.write('\n'.join(my_train_list)) - - test_file_list = glob.glob(TEST_FILE_PATTERN) - test_file_list.sort() - my_test_list = [] - for idx, f in enumerate(test_file_list): - if idx % trainer_count == trainer_id: - my_test_list.append(f) - with open("/test.list", "w") as f: - f.write('\n'.join(my_test_list)) - -``` -Above program will distribute files to training nodes in order, according to the training data path in HDFS, and create `train.list`, `test.list` to store training data file path for current node. Pass the path to these 2 files when you call `define_py_data_sources2` to define training data. - - -### Upload training program package to HDFS - -Uploading training program to HDFS is the same as uploading training data. Upload training program package via public server. for example: - -```bash -scp -r my_training_package/ user@tunnel-server:/mnt/hdfs_mulan/idl/idl-dl/mypackage/ -``` - -In the following steps of submitting training jobs, you will need to set the directory of training program package with `/pfs/[datacenter_name]/home/[username]/idl/idl-dl/mypackage/` to run it. - - -***NOTE: This method will be deprecated.*** - - -## Submitting A Job - -Submitting training jobs with the following command: - -- Submitting jobs utilizing v1 API - -```bash -paddlectl submit -jobname my-paddlecloud-job \ - -cpu 1 \ - -gpu 0 \ - -memory 1Gi \ - -parallelism 10 \ - -pscpu 1 \ - -pservers 3 \ - -psmemory 1Gi \ - -entry "python trainer_config.py" /pfs/[datacenter_name]/home/[username]/ctr_demo_package -``` - -- Submitting jobs utilizing V2 API - -```bash -paddlectl submit -jobname my-paddlecloud-job \ - -cpu 1 \ - -gpu 0 \ - -memory 1Gi \ - -parallelism 10 \ - -pscpu 1 \ - -pservers 3 \ - -psmemory 1Gi \ - -passes 1 \ - -entry "python trainer_config.py" \ - /pfs/[datacenter_name]/home/[username]/ctr_demo_package -``` - -Parameters: -- `jobname`:training job's name,paddlecloud use `jobname` as unique identifier for jobs. - - ***Note:*** jobname can only contain alphabet character, number, `-` `.`, and must end with combination of character or number,*** NO *** `_` is allowed. -- `-cpu`:CPU resource for each trainer, in units of `core` -- `-gpu`:CPU resource for each trainer, in units of `card` -- `-memory`:Memory resource for each trainer, value can be a integer with a `Ki,Mi,Gi` as suffix. -- `-parallelism`:trainer/parallelism node count. -- `-pscpu`:CPU resource for parameter server, in unites of `core` -- `-pservers`:number of parameter servers -- `-psmemory`:Memory resource for parameter server, value can be a integer with a `Ki,Mi,Gi` as suffix. -- `-topology`:PaddlePaddle v1 training config file path -- `-entry`: PaddlePaddle v2 training program launch command -- `-passes`:number of passes -- `package`:path to HDFS training job - - -### Using customized Runtime Docker Image - -If your training task need to be wrapped in a docker image to be scheduled by kubernetes, here is how: - -- define Runtime Docker Image - ```bash - git clone https://github.com/PaddlePaddle/cloud.git && cd cloud/docker - ./build_docker.sh {PaddlePaddle production image} {runtime Docker image} - docker push {runtime Docker image} - ``` -- define runtime Docker Image to run training jobs - ```bash - paddlectl submit -image {runtime Docker image} -jobname ... - ``` - -- if your runtime Docker image is submitted to a private registry - - add registry credentials in PaddleCloud - ```bash - paddlectl registry \ - -username {your username} - -password {your password} - -server {your registry server} - -name {your registry name} - ``` - - submit training job via private registry - ```bash - paddlectl submit \ - -image {runtime Docker image} \ - -registry {your registry name} - ``` - - list all registries - ```bash - paddlectl get registry - ``` - - delete a registry - ```bash - paddlectl delete registry - ``` - - -## View Job Status - -User can check the status of training jobs, nodes and disk quota with the following command: - -``` bash -paddlectl get jobs - - -NUM NAME SUCC FAIL START COMP ACTIVE -0 paddle-cluster-job 1 2017-05-24T07:52:45Z 1 -``` - -To check the status of workers, run the following command: - -``` bash -paddlectl get workers paddle-cluster-job - -NAME STATUS START -paddle-cluster-job-trainer-3s4nz Running 2017-05-24T07:53:41Z -paddle-cluster-job-trainer-6sc4q Running 2017-05-24T07:53:03Z -... -``` - -## View Job Logs - -Run following command to check current training job's log from all workers: - -``` bash -paddlectl logs paddle-cluster-job - -label selector: paddle-job-pserver=paddle-cluster-job, desired: 3 -running pod list: [('Running', '172.17.29.47'), ('Running', '172.17.37.46'), …, ('Running', '172.17.28.244')] -sleep for 10 seconds... -running pod list: [('Running', '172.17.29.47'), ('Running', '172.17.37.46'), …, ('Running', '172.17.28.244')] -label selector: paddle-job=paddle-job-yanxu, desired: 10 -running pod list: [('Running', '172.17.31.182’),…(‘Running', '172.17.12.234'), ('Running', '172.17.22.238')] -Starting training job: /pfs/***/home/***/***/ctr_package_cloud, num_gradient_servers: 200, trainer_id: 102, version: v1 -I0524 12:00:31.511015 43 Util.cpp:166] commandline: /usr/bin/../opt/paddle/bin/paddle_trainer --port=7164 --nics= --ports_num=1 --ports_num_for_sparse=1 --num_passes=1 --trainer_count=1 --saving_period=1 --log_period=20 --local=0 --config=trainer_config.py --use_gpu=0 --trainer_id=102 --save_dir= --pservers=172.17.29.47,,172.17.28.244 --num_gradient_servers=200 -[INFO 2017-05-24 12:00:39,316 networks.py:1482] The input order is [....] -[INFO 2017-05-24 12:00:39,319 networks.py:1488] The output order is [__cost_0__] -I0524 12:00:39.330195 43 Trainer.cpp:165] trainer mode: Normal -I0524 12:00:39.514008 43 PyDataProvider2.cpp:243] loading dataprovider dataprovider::process_deep -[INFO 2017-05-24 12:00:39,814 dataprovider.py:21] hook -[INFO 2017-05-24 12:00:39,883 dataprovider.py:33] dict_size is 5231 -[INFO 2017-05-24 12:00:39,883 dataprovider.py:34] schema_pos_size is 552 -[INFO 2017-05-24 12:00:39,883 dataprovider.py:35] schema_output_size is 51 -I0524 12:00:39.884352 43 PyDataProvider2.cpp:243] loading dataprovider dataprovider::process_deep -[INFO 2017-05-24 12:00:39,884 dataprovider.py:21] hook -[INFO 2017-05-24 12:00:39,914 dataprovider.py:33] dict_size is 5231 -[INFO 2017-05-24 12:00:39,914 dataprovider.py:34] schema_pos_size is 552 -[INFO 2017-05-24 12:00:39,914 dataprovider.py:35] schema_output_size is 51 -I0524 12:00:39.915364 43 GradientMachine.cpp:86] Initing parameters.. -I0524 12:00:39.924811 43 GradientMachine.cpp:93] Init parameters done. -I0524 12:00:39.924881 43 ParameterClient2.cpp:114] pserver 0 172.17.29.47:7164 -I0524 12:00:39.925227 43 ParameterClient2.cpp:114] pserver 1 172.17.37.46:7164 -I0524 12:00:39.925472 43 ParameterClient2.cpp:114] pserver 2 172.17.55.171:7164 -I0524 12:00:39.925714 43 ParameterClient2.cpp:114] pserver 3 172.17.35.175:7164 - -``` - - - -## Terminating Jobs - -Run `paddlectl kill paddle-cluster-job` to terminate the training job. - -When above command is successful, cluster will try to terminate all the workers process in background, this procedure might take some time and works might not be terminated immediately. If you need to check if your work has been cleared, run `paddlectl get workers paddle-cluster-job` - -*** When submitting a new job after terminating one, make sure -name is different to prevent name conflicting *** - -## To prepare a dataset for distributed training - -Since distributed training will start multiple training instances, to ensure data is evenly distributed and delivered to each trainer, we need to split dataset into small pieces, each trainer will decide files to read based on its runtime state. [here](../demo/fit_a_line/train.py) is an example training program, [here](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/uci_housing.py) is an example of dataset. - - -### Preprocessing training data. - -You can utilize PaddlePaddle's [paddle.v2.dataset.common.split]((https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/common.py#L129)) to chop reader's data into small pieces, or you can define your own as follows: - -```python -import paddle.v2.dataset.uci_housing as uci_housing -import paddle.v2.dataset.common as common -common.split(reader = uci_housing.train(), // Your reader instance - line_count = 500, // line count for each file - suffix = "./uci_housing/train-%05d.pickle") // filename suffix for each file, must contain %05d -``` - -`split` uses [cPickle](https://docs.python.org/2/library/pickle.html#module-cPickle) to serialize pythonb objects to local file by default. Above program will split uci_housing dataset into multipule cPcikle file. You can use PaddlePaddle production docker image to split dataset locally. - -```bash -docker run --rm -it -v $PWD:/work paddlepaddle/paddle:latest python /work/run.py -``` - - -- Customize serialization function - - You can set your own serialization function by passing it with `dumper` parameter. Dumper's interface spec is as follows: - - ```python - dumper(obj=, file=) - ``` - - For an example,use [marshal.dump](https://docs.python.org/2.7/library/marshal.html#marshal.dump) instead - - ```python - common.split(reader = uci_housing.train(), // Your reader instance - line_count = 500, // reader iterator count for each file - suffix="./uci_housing/train-%05d.pickle", // filename suffix for each file - dumper=marshal.dump) // using pickle.dump instead of the default function: cPickle.dump - ``` - -### Reader to read from distributed files - -Training program need to decide files to read based on it's runtime role, PaddlePaddle provides default file reader [paddle.v2.dataset.common.cluster_files_reader](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/v2/dataset/common.py#L167) to read these files, or you can customize it with your own function utilizing following environment variables. -- `PADDLE_INIT_NUM_GRADIENT_SERVERS`: number of trainers -- `PADDLE_INIT_TRAINER_ID`: current trainer id, starts from 0 -- `PADDLE_CLOUD_CURRENT_DATACENTER`: current data center. - -code example: -```python -import paddle.v2.dataset.common as common - -dc = os.getenv("PADDLE_CLOUD_CURRENT_DATACENTER") - -def train(): - return common.cluster_files_reader( - "/pfs/%s/public/dataset/uci_housing/train-*.pickle" % dc, - trainer_count = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS")), - train_id = int(os.getenv("PADDLE_INIT_TRAINER_ID")) - ) -``` - -- Customize file loading function. - - You can also customize `loader` to define how the the file is loaded, the interface spec for loader is as follows: - - ```python - d = loader(f = ) - ``` - - For an example, use [marshal.load](https://docs.python.org/2.7/library/marshal.html#marshal.load)to replace `cPickle.load`: - - ```python - def train(): - return common.cluster_files_reader( - "/pfs/%s/public/dataset/uci_housing/train-*.pickle" % dc, - trainer_count = int(os.getenv("PADDLE_INIT_NUM_GRADIENT_SERVERS")), - train_id = int(os.getenv("PADDLE_INIT_TRAINER_ID")), - loader = marshal.load - ) - ``` - -*Please Node*: `"/pfs/%s/public" % dc` is the default path for all the public training datasets, which is *READ ONLY* for all jobs. \ No newline at end of file diff --git a/docker/.gitignore b/docker/.gitignore deleted file mode 100644 index d7a2f354..00000000 --- a/docker/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Dockerfile -*.pyc diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index 6d9b1b6b..00000000 --- a/docker/README.md +++ /dev/null @@ -1,21 +0,0 @@ -## Build Runtime Docker Image for Kubernetes - -For the distributed training job on Kubernetes, we package Paddle binary files and some tools for Kubernetes into a runtime Docker image, the runtime Docker image gets scheduled by Kubernetes to run during training. - -You can build CPU and GPU Docker image which based on different PaddlePaddle product Docker image: - -```bash -./build_docker.sh -``` - -- Build CPU runtime Docker image - -```bash -./build_docker.sh paddlepaddle/paddle:0.10.0 paddlepaddle/paddlecloud-job:0.10.0 -``` - -- Build GPU runtime Docker image - -```bash -./build_docker.sh paddlepaddle/paddle:0.10.0-gpu paddlepaddle/paddlecloud-job:0.10.0-gpu -``` diff --git a/docker/build_docker.sh b/docker/build_docker.sh deleted file mode 100755 index a29f52ce..00000000 --- a/docker/build_docker.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -cur_path="$(cd "$(dirname "$0")" && pwd -P)" - -#base Docker image -if [ ! -n "$1" ]; then - base_image=paddlepaddle/paddle:latest -else - base_image=$1 -fi - -#PaddleCloud job Docker image -if [ ! -n "$2" ]; then - pcloudjob_image=paddlepaddle/cloud-job -else - pcloudjob_image=$2 -fi - -echo "base_image": $base_image -echo "pcloudjob_image": $pcloudjob_image - -#Build Docker Image -cat > Dockerfile <2.5 - if exc.errno == errno.EEXIST and os.path.isdir(path): - pass - else: - raise - - -def convert(output_path, name): - logger.info("proc " + name) - mod = __import__("paddle.v2.dataset." + name, fromlist=['']) - - path = os.path.join(output_path, name) - mkdir_p(path) - - mod.convert(path) - - -if __name__ == '__main__': - if len(sys.argv) != 2: - logger.error("input format:python convert.py output_path") - sys.exit(1) - - output_path = sys.argv[1] - logger.info("output path:" + output_path) - - a = [ - 'cifar', 'conll05', 'imdb', 'imikolov', 'mnist', 'movielens', - 'sentiment', 'uci_housing', 'wmt14' - ] - for m in a: - convert(output_path, m) diff --git a/docker/convert/convert_app.yaml b/docker/convert/convert_app.yaml deleted file mode 100644 index 2ae8c518..00000000 --- a/docker/convert/convert_app.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: convertdataset - namespace: paddlecloud -spec: - template: - metadata: - name: convertdataset - spec: - volumes: - - name: data-storage - cephfs: - monitors: - - 172.19.32.166:6789 - path: "/public" - user: "admin" - secretRef: - name: ceph-secret - containers: - - name: convertdataset - image: paddlepaddle/recordiodataset - env: - - name: CURRENT_DATACENTER - value: "meiyan" - command: ["/convert/run.sh", "/pfs/meiyan/public/dataset"] - volumeMounts: - - name: data-storage - mountPath: /pfs/meiyan/public - restartPolicy: Never diff --git a/docker/convert/run.sh b/docker/convert/run.sh deleted file mode 100755 index a89c1c2a..00000000 --- a/docker/convert/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -cd /convert/ -python convert.py $1 diff --git a/docker/k8s_tools.py b/docker/k8s_tools.py deleted file mode 100644 index 44752014..00000000 --- a/docker/k8s_tools.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/env python -import os -import sys -import time -import socket -from kubernetes import client, config -NAMESPACE = os.getenv("NAMESPACE") -if os.getenv("KUBERNETES_SERVICE_HOST", None): - config.load_incluster_config() -else: - config.load_kube_config() -v1 = client.CoreV1Api() - - -def get_pod_status(item): - phase = item.status.phase - - # check terminate time although phase is Running. - if item.metadata.deletion_timestamp != None: - return "Terminating" - - return phase - - -def fetch_pods_info(label_selector, phase=None): - api_response = v1.list_namespaced_pod( - namespace=NAMESPACE, pretty=True, label_selector=label_selector) - pod_list = [] - for item in api_response.items: - if phase is not None and get_pod_status(item) != phase: - continue - - pod_list.append((item.status.phase, item.status.pod_ip)) - return pod_list - - -def wait_pods_running(label_selector, desired): - print "label selector: %s, desired: %s" % (label_selector, desired) - while True: - count = count_pods_by_phase(label_selector, 'Running') - # NOTE: pods may be scaled. - if count >= int(desired): - break - print 'current cnt: %d sleep for 5 seconds...' % count - time.sleep(5) - - -def count_pods_by_phase(label_selector, phase): - pod_list = fetch_pods_info(label_selector, phase) - return len(pod_list) - - -def fetch_ips_list(label_selector, phase=None): - pod_list = fetch_pods_info(label_selector, phase) - ips = [item[1] for item in pod_list] - ips.sort() - return ips - - -def fetch_ips_string(label_selector, phase=None): - ips = fetch_ips_list(label_selector, phase) - return ",".join(ips) - - -def fetch_endpoints_string(label_selector, port, phase=None): - ips = fetch_ips_list(label_selector, phase) - ips = ["{0}:{1}".format(ip, port) for ip in ips] - return ",".join(ips) - - -def fetch_pod_id(label_selector, phase=None): - ips = fetch_ips_list(label_selector, phase=phase) - - local_ip = socket.gethostbyname(socket.gethostname()) - for i in xrange(len(ips)): - if ips[i] == local_ip: - return i - - return None - - -def fetch_ips(label_selector): - return fetch_ips_string(label_selector, phase="Running") - - -def fetch_endpoints(label_selector, port): - return fetch_endpoints_string(label_selector, port=port, phase="Running") - - -def fetch_id(label_selector): - return fetch_pod_id(label_selector, phase="Running") - - -if __name__ == "__main__": - command = sys.argv[1] - if command == "fetch_ips": - print fetch_ips(sys.argv[2]) - if command == "fetch_ips_string": - print fetch_ips_string(sys.argv[2], sys.argv[3]) - elif command == "fetch_endpoints": - print fetch_endpoints(sys.argv[2], sys.argv[3]) - elif command == "fetch_id": - print fetch_id(sys.argv[2]) - elif command == "count_pods_by_phase": - print count_pods_by_phase(sys.argv[2], sys.argv[3]) - elif command == "wait_pods_running": - wait_pods_running(sys.argv[2], sys.argv[3]) diff --git a/docker/paddle_k8s b/docker/paddle_k8s deleted file mode 100755 index 2efa13a1..00000000 --- a/docker/paddle_k8s +++ /dev/null @@ -1,223 +0,0 @@ -#!/bin/bash -set -x -start_pserver() { - stdbuf -oL paddle pserver \ - --use_gpu=0 \ - --port=$PADDLE_INIT_PORT \ - --ports_num=$PADDLE_INIT_PORTS_NUM \ - --ports_num_for_sparse=$PADDLE_INIT_PORTS_NUM_FOR_SPARSE \ - --nics=$PADDLE_INIT_NICS \ - --comment=paddle_process_k8s \ - --num_gradient_servers=$PADDLE_INIT_NUM_GRADIENT_SERVERS -} - -start_new_pserver() { - master_label="paddle-job-master=${PADDLE_JOB_NAME}" - - stdbuf -oL python /root/k8s_tools.py wait_pods_running ${master_label} 1 - export MASTER_IP=$(python /root/k8s_tools.py fetch_ips ${master_label}) - stdbuf -oL /usr/bin/pserver \ - -port=$PADDLE_INIT_PORT \ - -num-pservers=$PSERVERS \ - -log-level=debug \ - -etcd-endpoint=http://$MASTER_IP:2379 -} - -start_master() { - stdbuf -oL /usr/bin/master \ - -port=8080 \ - -chunk-per-task=1\ - -task-timout-dur=16s\ - -endpoints=http://127.0.0.1:2379 -} - -check_failed_cnt() { - max_failed=$1 - failed_count=$(python /root/k8s_tools.py count_pods_by_phase paddle-job=${PADDLE_JOB_NAME} Failed) - if [ $failed_count -gt $max_failed ]; then - stdbuf -oL echo "Failed trainer count beyond the threadhold: "$max_failed - echo "Failed trainer count beyond the threshold: " $max_failed > /dev/termination-log - exit 0 - fi -} - -check_trainer_ret() { - ret=$1 - stdbuf -oL echo "job returned $ret...setting pod return message..." - stdbuf -oL echo "===============================" - - if [ $ret -eq 136 ] ; then - echo "Error Arithmetic Operation(Floating Point Exception)" > /dev/termination-log - elif [ $ret -eq 139 ] ; then - echo "Segmentation Fault" > /dev/termination-log - elif [ $ret -eq 1 ] ; then - echo "General Error" > /dev/termination-log - elif [ $ret -eq 134 ] ; then - echo "Program Abort" > /dev/termination-log - fi - stdbuf -oL echo "termination log wroted..." - exit $ret -} - -start_fluid_process() { - pserver_label="paddle-job-pserver=${PADDLE_JOB_NAME}" - trainer_label="paddle-job=${PADDLE_JOB_NAME}" - task_index="" - - stdbuf -oL python /root/k8s_tools.py wait_pods_running ${pserver_label} ${PSERVERS} - - if [ "${TRAINING_ROLE}" == "TRAINER" ]; then - stdbuf -oL python /root/k8s_tools.py wait_pods_running ${trainer_label} ${TRAINERS} - fi - - export PADDLE_INIT_PSERVERS=$(python /root/k8s_tools.py fetch_ips ${pserver_label} ${PADDLE_INIT_PORT}) - - if [ "${TRAINING_ROLE}" == "TRAINER" ]; then - check_failed_cnt ${TRAINERS} - task_index=$(python /root/k8s_tools.py fetch_id ${trainer_label}) - else - task_index=$(python /root/k8s_tools.py fetch_id ${pserver_label}) - fi - - export PADDLE_INIT_TRAINER_ID=${task_index} - - stdbuf -oL sh -c "${ENTRY}" - check_trainer_ret $? -} - -start_new_trainer() { - # FIXME(Yancey1989): use command-line interface to configure the max failed count - check_failed_cnt ${TRAINERS} - - master_label="paddle-job-master=${PADDLE_JOB_NAME}" - pserver_label="paddle-job-pserver=${PADDLE_JOB_NAME}" - - stdbuf -oL python /root/k8s_tools.py wait_pods_running ${pserver_label} ${PSERVERS} - sleep 5 - stdbuf -oL python /root/k8s_tools.py wait_pods_running ${master_label} 1 - export MASTER_IP=$(python /root/k8s_tools.py fetch_ips ${master_label}) - export ETCD_IP="$MASTER_IP" - - # NOTE: $TRAINER_PACKAGE may be large, do not copy - export PYTHONPATH=$TRAINER_PACKAGE:$PYTHONPATH - cd $TRAINER_PACKAGE - - stdbuf -oL echo "Starting training job: " $TRAINER_PACKAGE, "num_gradient_servers:" \ - $PADDLE_INIT_NUM_GRADIENT_SERVERS, "version: " $1 - - stdbuf -oL sh -c "${ENTRY}" - check_trainer_ret $? -} - -start_trainer() { - # paddle v1 and V2 distributed training does not allow any trainer failed. - check_failed_cnt 0 - - pserver_label="paddle-job-pserver=${PADDLE_JOB_NAME}" - trainer_label="paddle-job=${PADDLE_JOB_NAME}" - - stdbuf -oL python /root/k8s_tools.py wait_pods_running ${pserver_label} ${PSERVERS} - stdbuf -oL python /root/k8s_tools.py wait_pods_running ${trainer_label} ${TRAINERS} - - export PADDLE_INIT_PSERVERS=$(python /root/k8s_tools.py fetch_ips ${pserver_label}) - export PADDLE_INIT_TRAINER_ID=$(python /root/k8s_tools.py fetch_id ${trainer_label}) - stdbuf -oL echo $PADDLE_INIT_TRAINER_ID > /trainer_id - # FIXME: /trainer_count = PADDLE_INIT_NUM_GRADIENT_SERVERS - stdbuf -oL echo $PADDLE_INIT_NUM_GRADIENT_SERVERS > /trainer_count - - # NOTE: $TRAINER_PACKAGE may be large, do not copy - export PYTHONPATH=$TRAINER_PACKAGE:$PYTHONPATH - cd $TRAINER_PACKAGE - - stdbuf -oL echo "Starting training job: " $TRAINER_PACKAGE, "num_gradient_servers:" \ - $PADDLE_INIT_NUM_GRADIENT_SERVERS, "trainer_id: " $PADDLE_INIT_TRAINER_ID, \ - "version: " $1 - - # FIXME: If we use the new PServer by Golang, add Kubernetes healthz - # to wait PServer process get ready.Now only sleep 20 seconds. - sleep 20 - - case "$1" in - "v1") - FILE_COUNT=$(wc -l $TRAIN_LIST | awk '{print $1}') - if [ $FILE_COUNT -le $PADDLE_INIT_NUM_GRADIENT_SERVERS ]; then - echo "file count less than trainers" - check_trainer_ret 0 - fi - let lines_per_node="$FILE_COUNT / ($PADDLE_INIT_NUM_GRADIENT_SERVERS + 1)" - echo "spliting file to" $lines_per_node - cp $TRAIN_LIST / - cd / - split -l $lines_per_node -d -a 3 $TRAIN_LIST train.list - CURRENT_LIST=$(printf "train.list%03d" $PADDLE_INIT_TRAINER_ID) - # always use /train.list for paddle v1 for each node. - echo "File for current node ${CURRENT_LIST}" - sleep 10 - cp $CURRENT_LIST train.list - - cd $TRAINER_PACKAGE - - stdbuf -oL paddle train \ - --port=$PADDLE_INIT_PORT \ - --nics=$PADDLE_INIT_NICS \ - --ports_num=$PADDLE_INIT_PORTS_NUM \ - --ports_num_for_sparse=$PADDLE_INIT_PORTS_NUM_FOR_SPARSE \ - --num_passes=$PADDLE_INIT_NUM_PASSES \ - --trainer_count=$PADDLE_INIT_TRAINER_COUNT \ - --saving_period=1 \ - --log_period=20 \ - --local=0 \ - --rdma_tcp=tcp \ - --config=$TOPOLOGY \ - --use_gpu=$PADDLE_INIT_USE_GPU \ - --trainer_id=$PADDLE_INIT_TRAINER_ID \ - --save_dir=$OUTPUT \ - --pservers=$PADDLE_INIT_PSERVERS \ - --num_gradient_servers=$PADDLE_INIT_NUM_GRADIENT_SERVERS - # paddle v1 API does not allow any trainer failed. - check_trainer_ret $? - ;; - "v2") - stdbuf -oL sh -c "${ENTRY}" - # paddle v2 API does not allow any trainer failed. - check_trainer_ret $? - ;; - *) - ;; - esac -} - -usage() { - echo "usage: paddle_k8s []:" - echo " start_trainer [v1|v2] Start a trainer process with v1 or v2 API" - echo " start_pserver Start a pserver process" - echo " start_new_pserver Start a new pserver process" - echo " start_new_trainer Start a new triner process" -} - -case "$1" in - start_pserver) - start_pserver - ;; - start_trainer) - start_trainer $2 - ;; - start_new_trainer) - start_new_trainer - ;; - start_new_pserver) - start_new_pserver - ;; - start_master) - start_master - ;; - start_fluid) - start_fluid_process - ;; - --help) - usage - ;; - *) - usage - ;; -esac diff --git a/docker/pfs/build.sh b/docker/pfs/build.sh deleted file mode 100755 index 618253bb..00000000 --- a/docker/pfs/build.sh +++ /dev/null @@ -1,19 +0,0 @@ -cat > ./Dockerfile << EOF -FROM ubuntu:16.04 - -RUN apt-get update && \ - apt-get install -y wget git && \ - wget -O go.tgz https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz && \ - tar -C /usr/local -xzf go.tgz && \ - mkdir /root/gopath && \ - rm go.tgz - -ENV GOROOT=/usr/local/go GOPATH=/root/gopath -ENV PATH=\${PATH}:\${GOROOT}/bin - -CMD ["sh", "-c", "cd /root/gopath/src/github.com/PaddlePaddle/cloud/go/cmd/pfsserver && go get ./... && go build"] -EOF - -docker build . -t pfsserver:dev - -rm -f Dockerfile diff --git a/glide.lock b/glide.lock index 1909f011..5136062b 100644 --- a/glide.lock +++ b/glide.lock @@ -1,14 +1,6 @@ -hash: dc954636d4f45f9c1701099d5cde3d3dd8fb01a21a82eca350a98d820f7f9f5f -updated: 2018-02-11T17:30:59.574062881+08:00 +hash: b583cdcf4c3f9b3a5ad36c509a476690c8ee3c9e96e10b899ce077f5f075cdf9 +updated: 2018-03-02T14:11:31.695488-08:00 imports: -- name: bitbucket.org/zombiezen/gopdf - version: 1c63dc69751bc45441c2ce1f56b631c55294b4d5 - subpackages: - - pdf -- name: github.com/ajstarks/svgo - version: f9be02f22f2c23fbdd01ed76e5c7f5af79e13f9b -- name: github.com/bitly/go-simplejson - version: aabad6e819789e569bd6aabf444c935aa9ba1e44 - name: github.com/davecgh/go-spew version: 782f4967f2dc4564575ca782fe2d04090b5faca8 subpackages: @@ -19,8 +11,6 @@ imports: - log - name: github.com/emicklei/go-restful-swagger12 version: dcef7f55730566d41eae5db10e7d6981829720f6 -- name: github.com/fatih/color - version: 5df930a27be2502f99b292b7cc09ebad4d0891f4 - name: github.com/ghodss/yaml version: 73d445a93680fa1a78ae23a5839bad48f32ba1ee - name: github.com/go-openapi/jsonpointer @@ -38,11 +28,6 @@ imports: subpackages: - proto - sortkeys -- name: github.com/golang/freetype - version: e2365dfdc4a05e4b8299a783240d4a7d5a65d4e4 - subpackages: - - raster - - truetype - name: github.com/golang/glog version: 44145f04b68cf362d9c4df2182967c2275eaefed - name: github.com/golang/protobuf @@ -57,18 +42,12 @@ imports: version: 7d79101e329e5a3adf994758c578dab82b90c017 - name: github.com/google/gofuzz version: 44d81051d367757e1c7c6a5a86423ece9afcf63c -- name: github.com/google/subcommands - version: ce3d4cfc062faac7115d44e5befec8b5a08c3faa - name: github.com/googleapis/gnostic version: 0c5108395e2debce0d731cf0287ddf7242066aba subpackages: - OpenAPIv2 - compiler - extensions -- name: github.com/gorilla/context - version: 215affda49addc4c8ef7e2534915df2c8c35c6cd -- name: github.com/gorilla/mux - version: 53c1911da2b537f792e7cafcb446b05ffe33b996 - name: github.com/gregjones/httpcache version: 787624de3eb7bd915c329cba748687a3b22666a6 subpackages: @@ -87,13 +66,6 @@ imports: version: 36b14963da70d11297d313183d7e6388c8510e1e - name: github.com/juju/ratelimit version: 5b9ff866471762aa2ab2dced63c9fb6f53921342 -- name: github.com/llgcode/draw2d - version: 274031cf2abe8acd15c4a911e1f7f1295fc4830c - subpackages: - - draw2dbase - - draw2dimg -- name: github.com/lucasb-eyer/go-colorful - version: 231272389856c976b7500c4fffcc52ddf06ff4eb - name: github.com/mailru/easyjson version: d5b7844b561a7bc640052f1b935f7b800330d7e0 subpackages: @@ -118,19 +90,11 @@ imports: version: 81e90905daefcd6fd217b62423c0908922eadb30 subpackages: - ssh/terminal -- name: golang.org/x/image - version: 12117c17ca67ffa1ce22e9409f3b0b0a93ac08c7 - subpackages: - - draw - - font - - math/f64 - - math/fixed - - tiff - - tiff/lzw - name: golang.org/x/net version: 1c05540f6879653db88113bc4a2b70aec4bd491f subpackages: - context + - context/ctxhttp - http2 - http2/hpack - idna @@ -154,23 +118,10 @@ imports: - unicode/bidi - unicode/norm - width -- name: gonum.org/v1/plot - version: feab214a240f4312b98ab52baf662b55ff1ee377 - subpackages: - - palette - - plotter - - tools/bezier - - vg - - vg/draw - - vg/fonts - - vg/vgeps - - vg/vgimg - - vg/vgpdf - - vg/vgsvg - name: gopkg.in/inf.v0 version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 - name: gopkg.in/yaml.v2 - version: d670f9405373e636a5a2765eea47fac0c9bc91a4 + version: 53feefa2559fb8dfa8d81baad31be332c97d6c77 - name: k8s.io/api version: 389dfa299845bcf399c16af89987e8775718ea48 subpackages: @@ -199,7 +150,7 @@ imports: - storage/v1 - storage/v1beta1 - name: k8s.io/apimachinery - version: bc110fd540ab678abbf2bc71d9ce908eb9325ef6 + version: 019ae5ada31de202164b118aee88ee2d14075c31 subpackages: - pkg/api/equality - pkg/api/errors @@ -232,23 +183,29 @@ imports: - pkg/util/diff - pkg/util/errors - pkg/util/framer + - pkg/util/httpstream + - pkg/util/httpstream/spdy - pkg/util/intstr - pkg/util/json + - pkg/util/mergepatch - pkg/util/net + - pkg/util/remotecommand - pkg/util/runtime - pkg/util/sets + - pkg/util/strategicpatch - pkg/util/validation - pkg/util/validation/field - pkg/util/wait - pkg/util/yaml - pkg/version - pkg/watch + - third_party/forked/golang/json + - third_party/forked/golang/netutil - third_party/forked/golang/reflect - name: k8s.io/client-go version: 35874c597fed17ca62cd197e516d7d5ff9a2958c subpackages: - discovery - - discovery/fake - kubernetes - kubernetes/scheme - kubernetes/typed/admissionregistration/v1alpha1 @@ -278,7 +235,6 @@ imports: - pkg/version - rest - rest/watch - - testing - tools/auth - tools/cache - tools/clientcmd @@ -293,14 +249,12 @@ imports: - util/flowcontrol - util/homedir - util/integer -- name: k8s.io/code-generator - version: 25fd8c8ddbf75b223882df4479f8b8e615da05ae - name: k8s.io/kube-openapi version: 868f2f29720b192240e18284659231b440f9cda5 subpackages: - pkg/common - name: k8s.io/kubernetes - version: 849d464b18a9897b5aa696a14420914b6abbb0ca + version: ed7147fdc1fa64981096eb76b86001eac0f00af6 subpackages: - pkg/api testImports: @@ -312,4 +266,3 @@ testImports: version: f6abca593680b2315d2075e0f5e2a9751e3f431a subpackages: - assert - - require diff --git a/glide.yaml b/glide.yaml index 8497dbb8..3333f431 100644 --- a/glide.yaml +++ b/glide.yaml @@ -1,25 +1,11 @@ -package: github.com/PaddlePaddle/cloud +package: github.com/paddlepaddle/edl import: -- package: github.com/bitly/go-simplejson - version: ^0.5.0 -- package: github.com/golang/glog -- package: github.com/google/subcommands -- package: github.com/gorilla/mux - version: ^1.4.0 -- package: gopkg.in/yaml.v2 -- package: github.com/fatih/color - package: k8s.io/client-go - version: v5.0.0 + version: kubernetes-1.8.0 - package: k8s.io/kubernetes version: release-1.8 - package: k8s.io/api version: release-1.8 - package: github.com/inconshreveable/log15 version: v2.13 -- package: github.com/go-stack/stack - version: v1.6.0 -- package: k8s.io/code-generator - version: kubernetes-1.8.5 - package: github.com/wangkuiyi/candy -- package: gonum.org/v1/plot -- package: github.com/lucasb-eyer/go-colorful diff --git a/go/.gitignore b/go/.gitignore deleted file mode 100644 index c27f2914..00000000 --- a/go/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.glide/ diff --git a/go/Dockerfile b/go/Dockerfile deleted file mode 100644 index a12b202a..00000000 --- a/go/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM ubuntu:16.04 -ADD ./cmd/pfsserver/pfsserver /pfsserver/ -RUN mkdir /pfsserver/log diff --git a/go/apis/paddlepaddle/register.go b/go/apis/paddlepaddle/register.go deleted file mode 100644 index 90d23c9b..00000000 --- a/go/apis/paddlepaddle/register.go +++ /dev/null @@ -1,22 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package paddlepaddle - -const ( - // GroupName is the name of group. - GroupName = "paddlepaddle.org" -) diff --git a/go/apis/paddlepaddle/v1/doc.go b/go/apis/paddlepaddle/v1/doc.go deleted file mode 100644 index 42a1dbc5..00000000 --- a/go/apis/paddlepaddle/v1/doc.go +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// +k8s:deepcopy-gen=package - -// Package v1 is the v1 version of the API. -// +groupName=paddlepaddle.org -package v1 diff --git a/go/apis/paddlepaddle/v1/register.go b/go/apis/paddlepaddle/v1/register.go deleted file mode 100644 index 84239b68..00000000 --- a/go/apis/paddlepaddle/v1/register.go +++ /dev/null @@ -1,32 +0,0 @@ -package v1 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" -) - -var ( - // SchemeBuilder will call register - SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) - // AddToScheme will apply all the stored functions to the scheme - AddToScheme = SchemeBuilder.AddToScheme -) - -// SchemeGroupVersion is the group version used to register these objects. -var SchemeGroupVersion = schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} - -// Resource takes an unqualified resource and returns a Group-qualified GroupResource. -func Resource(resource string) schema.GroupResource { - return SchemeGroupVersion.WithResource(resource).GroupResource() -} - -// addKnownTypes adds the set of types defined in this package to the supplied scheme. -func addKnownTypes(scheme *runtime.Scheme) error { - scheme.AddKnownTypes(SchemeGroupVersion, - &TrainingJob{}, - &TrainingJobList{}, - ) - metav1.AddToGroupVersion(scheme, SchemeGroupVersion) - return nil -} diff --git a/go/apis/paddlepaddle/v1/types.go b/go/apis/paddlepaddle/v1/types.go deleted file mode 100644 index dbf8039c..00000000 --- a/go/apis/paddlepaddle/v1/types.go +++ /dev/null @@ -1,171 +0,0 @@ -package v1 - -import ( - "fmt" - - batchv1 "k8s.io/api/batch/v1" - apiv1 "k8s.io/api/core/v1" - v1beta1 "k8s.io/api/extensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -const ( - // CRDKind is the kind of K8s CRD. - CRDKind = "TrainingJob" - // CRDKindPlural is the plural of CRDKind. - CRDKindPlural = "trainingjobs" - // CRDShortName is the short name of CRD. - CRDShortName = "tj" - // CRDGroup is the name of group. - CRDGroup = "paddlepaddle.org" - // CRDVersion is the version of CRD. - CRDVersion = "v1" -) - -// CRDName returns name of crd -func CRDName() string { - return fmt.Sprintf("%s.%s", CRDKindPlural, CRDGroup) -} - -// +genclient -// +genclient:noStatus -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +resource:path=trainingjob - -// TrainingJob is a specification for a TrainingJob resource -type TrainingJob struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - Spec TrainingJobSpec `json:"spec"` - Status TrainingJobStatus `json:"status"` -} - -// TrainingJobSpec is the spec for a TrainingJob resource -type TrainingJobSpec struct { - // General job attributes. - Image string `json:"image,omitempty"` - // If you want to use the hostnetwork instead of container network - // portmanager is necessary. About portmanager, please refer to - // https://github.com/PaddlePaddle/cloud/blob/develop/doc/hostnetwork/hostnetwork.md - HostNetwork bool `json:"host_network,omitempty"` - Port int `json:"port,omitempty"` - PortsNum int `json:"ports_num,omitempty"` - PortsNumForSparse int `json:"ports_num_for_sparse,omitempty"` - FaultTolerant bool `json:"fault_tolerant,omitempty"` - Passes int `json:"passes,omitempty"` - Volumes []apiv1.Volume `json:"volumes"` - VolumeMounts []apiv1.VolumeMount `json:"VolumeMounts"` - //TrainingJob components. - Master MasterSpec `json:"master"` - Pserver PserverSpec `json:"pserver"` - Trainer TrainerSpec `json:"trainer"` -} - -// MasterSpec is the spec for a master in the paddle job -type MasterSpec struct { - EtcdEndpoint string `json:"etcd-endpoint"` - Resources apiv1.ResourceRequirements `json:"resources"` - ReplicaSpec *v1beta1.ReplicaSet `json:"replicaSpec"` -} - -// PserverSpec is the spec for pservers in the paddle job -type PserverSpec struct { - MinInstance int `json:"min-instance"` - MaxInstance int `json:"max-instance"` - Resources apiv1.ResourceRequirements `json:"resources"` - ReplicaSpec *v1beta1.ReplicaSet `json:"replicaSpec"` -} - -// TrainerSpec is the spec for trainers in the paddle job -type TrainerSpec struct { - EtcdEndpoint string `json:"etcd-endpoint"` - Entrypoint string `json:"entrypoint"` - Workspace string `json:"workspace"` - MinInstance int `json:"min-instance"` - MaxInstance int `json:"max-instance"` - Resources apiv1.ResourceRequirements `json:"resources"` - ReplicaSpec *batchv1.Job `json:"replicaSpec"` -} - -// TrainingJobPhase is the phase of TrainingJob -type TrainingJobPhase string - -const ( - // TrainingJobPhaseNone is empty TrainingJobPhase. - TrainingJobPhaseNone TrainingJobPhase = "" - // TrainingJobPhaseCreating is creating TrainingJobPhase. - TrainingJobPhaseCreating = "creating" - // TrainingJobPhaseRunning is running TrainingJobPhase. - TrainingJobPhaseRunning = "running" - // TrainingJobPhaseSucceeded is succeeded TrainingJobPhase. - TrainingJobPhaseSucceeded = "succeeded" - // TrainingJobPhaseFailed is failed TrainingJobPhase. - TrainingJobPhaseFailed = "failed" -) - -// TrainerJobScaleStatus is status of trainer jobs. -type TrainerJobScaleStatus struct { -} - -// TrainingResourceType the type of TrainingJob resource, include MASTER PSERVER and TRAINER -type TrainingResourceType string - -const ( - // MASTER is the master name of TrainingResourceType. - MASTER TrainingResourceType = "MASTER" - // PSERVER is the pserver name of TrainingResourceType. - PSERVER TrainingResourceType = "PSERVER" - // TRAINER is the trainer name of TrainingResourceType. - TRAINER TrainingResourceType = "TRAINER" -) - -// ResourceState is the state of a type of resource -type ResourceState string - -const ( - // ResourceStateNone is the initial state of training job - ResourceStateNone ResourceState = "" - // ResourceStateStarting is the starting state of ResourceState. - ResourceStateStarting = "starting" - // ResourceStateRunning is the running state of ResourceState. - ResourceStateRunning = "running" - // ResourceStateFailed is the failed state of ResourceState. - ResourceStateFailed = "failed" - // ResourceStateSucceeded is the succeeded state of ResourceState - ResourceStateSucceeded = "succeeded" -) - -// TrainingResourceStatus is the status of every resource -type TrainingResourceStatus struct { - // TrainingResourceType the type of TrainingJob resource, include MASTER PSERVER and TRAINER - TrainingResourceType `json:"training_resource_type"` - // State is the state of a type of resource - State ResourceState `json:"state"` - // ResourceStates is the number of resource in different state - ResourceStates map[ResourceState]int `json:"resource_states"` -} - -// TrainingJobStatus is the status for a TrainingJob resource. -type TrainingJobStatus struct { - // Phase is phase of TrainingJob - Phase TrainingJobPhase `json:"phase"` - // Reason is the reason of job phase failed - Reason string `json:"reason"` - // ScaleStatus is autoscale status of trainer jobs - // TODO(ZhengQi): this will used in autoscale mode in future. - ScaleStatus TrainerJobScaleStatus `json:"scale_status"` - // ReplicaStatuses is detail status of resources - // TODO(ZhengQi): should we only considered trainer job now? - ReplicaStatuses []*TrainingResourceStatus `json:"replica_statuses"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +resource:path=trainingjobs - -// TrainingJobList is a list of TrainingJob resources -type TrainingJobList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata"` - // Items means the list of paddle job/TrainingJob - Items []TrainingJob `json:"items"` -} diff --git a/go/apis/paddlepaddle/v1/zz_generated.deepcopy.go b/go/apis/paddlepaddle/v1/zz_generated.deepcopy.go deleted file mode 100644 index 737b8d28..00000000 --- a/go/apis/paddlepaddle/v1/zz_generated.deepcopy.go +++ /dev/null @@ -1,315 +0,0 @@ -// +build !ignore_autogenerated - -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was autogenerated by deepcopy-gen. Do not edit it manually! - -package v1 - -import ( - batch_v1 "k8s.io/api/batch/v1" - core_v1 "k8s.io/api/core/v1" - v1beta1 "k8s.io/api/extensions/v1beta1" - conversion "k8s.io/apimachinery/pkg/conversion" - runtime "k8s.io/apimachinery/pkg/runtime" - reflect "reflect" -) - -// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. -// -// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented. -func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { - return []conversion.GeneratedDeepCopyFunc{ - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*MasterSpec).DeepCopyInto(out.(*MasterSpec)) - return nil - }, InType: reflect.TypeOf(&MasterSpec{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*PserverSpec).DeepCopyInto(out.(*PserverSpec)) - return nil - }, InType: reflect.TypeOf(&PserverSpec{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*TrainerJobScaleStatus).DeepCopyInto(out.(*TrainerJobScaleStatus)) - return nil - }, InType: reflect.TypeOf(&TrainerJobScaleStatus{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*TrainerSpec).DeepCopyInto(out.(*TrainerSpec)) - return nil - }, InType: reflect.TypeOf(&TrainerSpec{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*TrainingJob).DeepCopyInto(out.(*TrainingJob)) - return nil - }, InType: reflect.TypeOf(&TrainingJob{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*TrainingJobList).DeepCopyInto(out.(*TrainingJobList)) - return nil - }, InType: reflect.TypeOf(&TrainingJobList{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*TrainingJobSpec).DeepCopyInto(out.(*TrainingJobSpec)) - return nil - }, InType: reflect.TypeOf(&TrainingJobSpec{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*TrainingJobStatus).DeepCopyInto(out.(*TrainingJobStatus)) - return nil - }, InType: reflect.TypeOf(&TrainingJobStatus{})}, - {Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { - in.(*TrainingResourceStatus).DeepCopyInto(out.(*TrainingResourceStatus)) - return nil - }, InType: reflect.TypeOf(&TrainingResourceStatus{})}, - } -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MasterSpec) DeepCopyInto(out *MasterSpec) { - *out = *in - in.Resources.DeepCopyInto(&out.Resources) - if in.ReplicaSpec != nil { - in, out := &in.ReplicaSpec, &out.ReplicaSpec - if *in == nil { - *out = nil - } else { - *out = new(v1beta1.ReplicaSet) - (*in).DeepCopyInto(*out) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterSpec. -func (in *MasterSpec) DeepCopy() *MasterSpec { - if in == nil { - return nil - } - out := new(MasterSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PserverSpec) DeepCopyInto(out *PserverSpec) { - *out = *in - in.Resources.DeepCopyInto(&out.Resources) - if in.ReplicaSpec != nil { - in, out := &in.ReplicaSpec, &out.ReplicaSpec - if *in == nil { - *out = nil - } else { - *out = new(v1beta1.ReplicaSet) - (*in).DeepCopyInto(*out) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PserverSpec. -func (in *PserverSpec) DeepCopy() *PserverSpec { - if in == nil { - return nil - } - out := new(PserverSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrainerJobScaleStatus) DeepCopyInto(out *TrainerJobScaleStatus) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainerJobScaleStatus. -func (in *TrainerJobScaleStatus) DeepCopy() *TrainerJobScaleStatus { - if in == nil { - return nil - } - out := new(TrainerJobScaleStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrainerSpec) DeepCopyInto(out *TrainerSpec) { - *out = *in - in.Resources.DeepCopyInto(&out.Resources) - if in.ReplicaSpec != nil { - in, out := &in.ReplicaSpec, &out.ReplicaSpec - if *in == nil { - *out = nil - } else { - *out = new(batch_v1.Job) - (*in).DeepCopyInto(*out) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainerSpec. -func (in *TrainerSpec) DeepCopy() *TrainerSpec { - if in == nil { - return nil - } - out := new(TrainerSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrainingJob) DeepCopyInto(out *TrainingJob) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainingJob. -func (in *TrainingJob) DeepCopy() *TrainingJob { - if in == nil { - return nil - } - out := new(TrainingJob) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *TrainingJob) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } else { - return nil - } -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrainingJobList) DeepCopyInto(out *TrainingJobList) { - *out = *in - out.TypeMeta = in.TypeMeta - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]TrainingJob, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainingJobList. -func (in *TrainingJobList) DeepCopy() *TrainingJobList { - if in == nil { - return nil - } - out := new(TrainingJobList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *TrainingJobList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } else { - return nil - } -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrainingJobSpec) DeepCopyInto(out *TrainingJobSpec) { - *out = *in - if in.Volumes != nil { - in, out := &in.Volumes, &out.Volumes - *out = make([]core_v1.Volume, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.VolumeMounts != nil { - in, out := &in.VolumeMounts, &out.VolumeMounts - *out = make([]core_v1.VolumeMount, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - in.Master.DeepCopyInto(&out.Master) - in.Pserver.DeepCopyInto(&out.Pserver) - in.Trainer.DeepCopyInto(&out.Trainer) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainingJobSpec. -func (in *TrainingJobSpec) DeepCopy() *TrainingJobSpec { - if in == nil { - return nil - } - out := new(TrainingJobSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrainingJobStatus) DeepCopyInto(out *TrainingJobStatus) { - *out = *in - out.ScaleStatus = in.ScaleStatus - if in.ReplicaStatuses != nil { - in, out := &in.ReplicaStatuses, &out.ReplicaStatuses - *out = make([]*TrainingResourceStatus, len(*in)) - for i := range *in { - if (*in)[i] == nil { - (*out)[i] = nil - } else { - (*out)[i] = new(TrainingResourceStatus) - (*in)[i].DeepCopyInto((*out)[i]) - } - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainingJobStatus. -func (in *TrainingJobStatus) DeepCopy() *TrainingJobStatus { - if in == nil { - return nil - } - out := new(TrainingJobStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TrainingResourceStatus) DeepCopyInto(out *TrainingResourceStatus) { - *out = *in - if in.ResourceStates != nil { - in, out := &in.ResourceStates, &out.ResourceStates - *out = make(map[ResourceState]int, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainingResourceStatus. -func (in *TrainingResourceStatus) DeepCopy() *TrainingResourceStatus { - if in == nil { - return nil - } - out := new(TrainingResourceStatus) - in.DeepCopyInto(out) - return out -} diff --git a/go/cfs/cfs.go b/go/cfs/cfs.go deleted file mode 100644 index 56e42078..00000000 --- a/go/cfs/cfs.go +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. */ - -package cfs - -// We can import a RB Tree implementation from here in initial -// implement, and refine it later - -// import ( -// "github.com/sakeven/RbTree" -// ) - -// PrioLevel is enum type indicating priority levels. -type PrioLevel int - -const ( - // Experiement priority level - Experiement PrioLevel = 0 - // Offline job - Offline = 3 - // Normal jobs - Normal = 7 - // Production level job - Production = 11 -) - -// Node is the atimic schedule unit for the scheduler. -type Node interface { - // GetPrio returns the current priority level. - GetPrio() PrioLevel - // SetPrio set the node priority level directly. - SetPrio(prio PrioLevel) - - // MaxInstances returns the desired max parallelism of the job. - MaxInstances() int - // MinInstances returns the minimal parallelism the job can be running. - MinInstances() int - // ResourceScore returns resource score of a single pod. It's - // caculated by sum(weight*ResourceValue). - ResourceScore() int64 - - // Expected returns expected parallelism (how much pods) to run for - // current scheduling step. - Expected() int64 - // Running returns the current parrallelism of the node. - // If Running == 0 means the job is waiting for resources. - Running() int64 - - // Obj returns inner scheduling unit. - Obj() *interface{} -} - -// GpuPriorityCFS is a scheduler to schedule jobs/processes to use -// multiple kind of processers, like both CPU and GPU, or mix with FPGA etc. -type GpuPriorityCFS interface { - // AddNode insert new node to the scheduler. - AddNode(node *Node) error - // DelNode remove the completed node from scheduler. - DelNode(node *Node) error - // GetLeftMost return the smallest valued node in the scheduler's tree. - GetLeftMost() *Node - // GetRightMost return the maximum valued node in the scheduler's tree. - GetRightMost() *Node - // Len return number of nodes in the scheduler. - Len() int - - // Tranverse go thought every nodes in the scheduler. - Tranverse(callback ...func(*Node)) error -} diff --git a/go/client/clientset/versioned/clientset.go b/go/client/clientset/versioned/clientset.go deleted file mode 100644 index e22b2204..00000000 --- a/go/client/clientset/versioned/clientset.go +++ /dev/null @@ -1,96 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package versioned - -import ( - paddlepaddlev1 "github.com/PaddlePaddle/cloud/go/client/clientset/versioned/typed/paddlepaddle/v1" - glog "github.com/golang/glog" - discovery "k8s.io/client-go/discovery" - rest "k8s.io/client-go/rest" - flowcontrol "k8s.io/client-go/util/flowcontrol" -) - -type Interface interface { - Discovery() discovery.DiscoveryInterface - PaddlepaddleV1() paddlepaddlev1.PaddlepaddleV1Interface - // Deprecated: please explicitly pick a version if possible. - Paddlepaddle() paddlepaddlev1.PaddlepaddleV1Interface -} - -// Clientset contains the clients for groups. Each group has exactly one -// version included in a Clientset. -type Clientset struct { - *discovery.DiscoveryClient - paddlepaddleV1 *paddlepaddlev1.PaddlepaddleV1Client -} - -// PaddlepaddleV1 retrieves the PaddlepaddleV1Client -func (c *Clientset) PaddlepaddleV1() paddlepaddlev1.PaddlepaddleV1Interface { - return c.paddlepaddleV1 -} - -// Deprecated: Paddlepaddle retrieves the default version of PaddlepaddleClient. -// Please explicitly pick a version. -func (c *Clientset) Paddlepaddle() paddlepaddlev1.PaddlepaddleV1Interface { - return c.paddlepaddleV1 -} - -// Discovery retrieves the DiscoveryClient -func (c *Clientset) Discovery() discovery.DiscoveryInterface { - if c == nil { - return nil - } - return c.DiscoveryClient -} - -// NewForConfig creates a new Clientset for the given config. -func NewForConfig(c *rest.Config) (*Clientset, error) { - configShallowCopy := *c - if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { - configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) - } - var cs Clientset - var err error - cs.paddlepaddleV1, err = paddlepaddlev1.NewForConfig(&configShallowCopy) - if err != nil { - return nil, err - } - - cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy) - if err != nil { - glog.Errorf("failed to create the DiscoveryClient: %v", err) - return nil, err - } - return &cs, nil -} - -// NewForConfigOrDie creates a new Clientset for the given config and -// panics if there is an error in the config. -func NewForConfigOrDie(c *rest.Config) *Clientset { - var cs Clientset - cs.paddlepaddleV1 = paddlepaddlev1.NewForConfigOrDie(c) - - cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) - return &cs -} - -// New creates a new Clientset for the given RESTClient. -func New(c rest.Interface) *Clientset { - var cs Clientset - cs.paddlepaddleV1 = paddlepaddlev1.New(c) - - cs.DiscoveryClient = discovery.NewDiscoveryClient(c) - return &cs -} diff --git a/go/client/clientset/versioned/doc.go b/go/client/clientset/versioned/doc.go deleted file mode 100644 index 97b89cd3..00000000 --- a/go/client/clientset/versioned/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This package is generated by client-gen with custom arguments. - -// This package has the automatically generated clientset. -package versioned diff --git a/go/client/clientset/versioned/fake/clientset_generated.go b/go/client/clientset/versioned/fake/clientset_generated.go deleted file mode 100644 index ed0307df..00000000 --- a/go/client/clientset/versioned/fake/clientset_generated.go +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package fake - -import ( - clientset "github.com/PaddlePaddle/cloud/go/client/clientset/versioned" - paddlepaddlev1 "github.com/PaddlePaddle/cloud/go/client/clientset/versioned/typed/paddlepaddle/v1" - fakepaddlepaddlev1 "github.com/PaddlePaddle/cloud/go/client/clientset/versioned/typed/paddlepaddle/v1/fake" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/discovery" - fakediscovery "k8s.io/client-go/discovery/fake" - "k8s.io/client-go/testing" -) - -// NewSimpleClientset returns a clientset that will respond with the provided objects. -// It's backed by a very simple object tracker that processes creates, updates and deletions as-is, -// without applying any validations and/or defaults. It shouldn't be considered a replacement -// for a real clientset and is mostly useful in simple unit tests. -func NewSimpleClientset(objects ...runtime.Object) *Clientset { - o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) - for _, obj := range objects { - if err := o.Add(obj); err != nil { - panic(err) - } - } - - fakePtr := testing.Fake{} - fakePtr.AddReactor("*", "*", testing.ObjectReaction(o)) - fakePtr.AddWatchReactor("*", testing.DefaultWatchReactor(watch.NewFake(), nil)) - - return &Clientset{fakePtr, &fakediscovery.FakeDiscovery{Fake: &fakePtr}} -} - -// Clientset implements clientset.Interface. Meant to be embedded into a -// struct to get a default implementation. This makes faking out just the method -// you want to test easier. -type Clientset struct { - testing.Fake - discovery *fakediscovery.FakeDiscovery -} - -func (c *Clientset) Discovery() discovery.DiscoveryInterface { - return c.discovery -} - -var _ clientset.Interface = &Clientset{} - -// PaddlepaddleV1 retrieves the PaddlepaddleV1Client -func (c *Clientset) PaddlepaddleV1() paddlepaddlev1.PaddlepaddleV1Interface { - return &fakepaddlepaddlev1.FakePaddlepaddleV1{Fake: &c.Fake} -} - -// Paddlepaddle retrieves the PaddlepaddleV1Client -func (c *Clientset) Paddlepaddle() paddlepaddlev1.PaddlepaddleV1Interface { - return &fakepaddlepaddlev1.FakePaddlepaddleV1{Fake: &c.Fake} -} diff --git a/go/client/clientset/versioned/fake/doc.go b/go/client/clientset/versioned/fake/doc.go deleted file mode 100644 index 98428601..00000000 --- a/go/client/clientset/versioned/fake/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This package is generated by client-gen with custom arguments. - -// This package has the automatically generated fake clientset. -package fake diff --git a/go/client/clientset/versioned/fake/register.go b/go/client/clientset/versioned/fake/register.go deleted file mode 100644 index ad1096a9..00000000 --- a/go/client/clientset/versioned/fake/register.go +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package fake - -import ( - paddlepaddlev1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" -) - -var scheme = runtime.NewScheme() -var codecs = serializer.NewCodecFactory(scheme) -var parameterCodec = runtime.NewParameterCodec(scheme) - -func init() { - v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) - AddToScheme(scheme) -} - -// AddToScheme adds all types of this clientset into the given scheme. This allows composition -// of clientsets, like in: -// -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kuberentes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) -// -// kclientset, _ := kubernetes.NewForConfig(c) -// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) -// -// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types -// correctly. -func AddToScheme(scheme *runtime.Scheme) { - paddlepaddlev1.AddToScheme(scheme) - -} diff --git a/go/client/clientset/versioned/scheme/doc.go b/go/client/clientset/versioned/scheme/doc.go deleted file mode 100644 index 962c99c1..00000000 --- a/go/client/clientset/versioned/scheme/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This package is generated by client-gen with custom arguments. - -// This package contains the scheme of the automatically generated clientset. -package scheme diff --git a/go/client/clientset/versioned/scheme/register.go b/go/client/clientset/versioned/scheme/register.go deleted file mode 100644 index 23226eab..00000000 --- a/go/client/clientset/versioned/scheme/register.go +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package scheme - -import ( - paddlepaddlev1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" -) - -var Scheme = runtime.NewScheme() -var Codecs = serializer.NewCodecFactory(Scheme) -var ParameterCodec = runtime.NewParameterCodec(Scheme) - -func init() { - v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) - AddToScheme(Scheme) -} - -// AddToScheme adds all types of this clientset into the given scheme. This allows composition -// of clientsets, like in: -// -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kuberentes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) -// -// kclientset, _ := kubernetes.NewForConfig(c) -// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) -// -// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types -// correctly. -func AddToScheme(scheme *runtime.Scheme) { - paddlepaddlev1.AddToScheme(scheme) - -} diff --git a/go/client/clientset/versioned/typed/paddlepaddle/v1/doc.go b/go/client/clientset/versioned/typed/paddlepaddle/v1/doc.go deleted file mode 100644 index aa756941..00000000 --- a/go/client/clientset/versioned/typed/paddlepaddle/v1/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This package is generated by client-gen with custom arguments. - -// This package has the automatically generated typed clients. -package v1 diff --git a/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/doc.go b/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/doc.go deleted file mode 100644 index 600b5875..00000000 --- a/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This package is generated by client-gen with custom arguments. - -// Package fake has the automatically generated clients. -package fake diff --git a/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/fake_paddlepaddle_client.go b/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/fake_paddlepaddle_client.go deleted file mode 100644 index 9b82da99..00000000 --- a/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/fake_paddlepaddle_client.go +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package fake - -import ( - v1 "github.com/PaddlePaddle/cloud/go/client/clientset/versioned/typed/paddlepaddle/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakePaddlepaddleV1 struct { - *testing.Fake -} - -func (c *FakePaddlepaddleV1) TrainingJobs(namespace string) v1.TrainingJobInterface { - return &FakeTrainingJobs{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakePaddlepaddleV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/fake_trainingjob.go b/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/fake_trainingjob.go deleted file mode 100644 index 8a065d91..00000000 --- a/go/client/clientset/versioned/typed/paddlepaddle/v1/fake/fake_trainingjob.go +++ /dev/null @@ -1,124 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package fake - -import ( - paddlepaddle_v1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeTrainingJobs implements TrainingJobInterface -type FakeTrainingJobs struct { - Fake *FakePaddlepaddleV1 - ns string -} - -var trainingjobsResource = schema.GroupVersionResource{Group: "paddlepaddle.org", Version: "v1", Resource: "trainingjobs"} - -var trainingjobsKind = schema.GroupVersionKind{Group: "paddlepaddle.org", Version: "v1", Kind: "TrainingJob"} - -// Get takes name of the trainingJob, and returns the corresponding trainingJob object, and an error if there is any. -func (c *FakeTrainingJobs) Get(name string, options v1.GetOptions) (result *paddlepaddle_v1.TrainingJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(trainingjobsResource, c.ns, name), &paddlepaddle_v1.TrainingJob{}) - - if obj == nil { - return nil, err - } - return obj.(*paddlepaddle_v1.TrainingJob), err -} - -// List takes label and field selectors, and returns the list of TrainingJobs that match those selectors. -func (c *FakeTrainingJobs) List(opts v1.ListOptions) (result *paddlepaddle_v1.TrainingJobList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(trainingjobsResource, trainingjobsKind, c.ns, opts), &paddlepaddle_v1.TrainingJobList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &paddlepaddle_v1.TrainingJobList{} - for _, item := range obj.(*paddlepaddle_v1.TrainingJobList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested trainingJobs. -func (c *FakeTrainingJobs) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(trainingjobsResource, c.ns, opts)) - -} - -// Create takes the representation of a trainingJob and creates it. Returns the server's representation of the trainingJob, and an error, if there is any. -func (c *FakeTrainingJobs) Create(trainingJob *paddlepaddle_v1.TrainingJob) (result *paddlepaddle_v1.TrainingJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(trainingjobsResource, c.ns, trainingJob), &paddlepaddle_v1.TrainingJob{}) - - if obj == nil { - return nil, err - } - return obj.(*paddlepaddle_v1.TrainingJob), err -} - -// Update takes the representation of a trainingJob and updates it. Returns the server's representation of the trainingJob, and an error, if there is any. -func (c *FakeTrainingJobs) Update(trainingJob *paddlepaddle_v1.TrainingJob) (result *paddlepaddle_v1.TrainingJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(trainingjobsResource, c.ns, trainingJob), &paddlepaddle_v1.TrainingJob{}) - - if obj == nil { - return nil, err - } - return obj.(*paddlepaddle_v1.TrainingJob), err -} - -// Delete takes name of the trainingJob and deletes it. Returns an error if one occurs. -func (c *FakeTrainingJobs) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(trainingjobsResource, c.ns, name), &paddlepaddle_v1.TrainingJob{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeTrainingJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(trainingjobsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &paddlepaddle_v1.TrainingJobList{}) - return err -} - -// Patch applies the patch and returns the patched trainingJob. -func (c *FakeTrainingJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *paddlepaddle_v1.TrainingJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(trainingjobsResource, c.ns, name, data, subresources...), &paddlepaddle_v1.TrainingJob{}) - - if obj == nil { - return nil, err - } - return obj.(*paddlepaddle_v1.TrainingJob), err -} diff --git a/go/client/clientset/versioned/typed/paddlepaddle/v1/generated_expansion.go b/go/client/clientset/versioned/typed/paddlepaddle/v1/generated_expansion.go deleted file mode 100644 index 4a471c78..00000000 --- a/go/client/clientset/versioned/typed/paddlepaddle/v1/generated_expansion.go +++ /dev/null @@ -1,17 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package v1 - -type TrainingJobExpansion interface{} diff --git a/go/client/clientset/versioned/typed/paddlepaddle/v1/paddlepaddle_client.go b/go/client/clientset/versioned/typed/paddlepaddle/v1/paddlepaddle_client.go deleted file mode 100644 index 0a1474ed..00000000 --- a/go/client/clientset/versioned/typed/paddlepaddle/v1/paddlepaddle_client.go +++ /dev/null @@ -1,86 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package v1 - -import ( - v1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - "github.com/PaddlePaddle/cloud/go/client/clientset/versioned/scheme" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" - rest "k8s.io/client-go/rest" -) - -type PaddlepaddleV1Interface interface { - RESTClient() rest.Interface - TrainingJobsGetter -} - -// PaddlepaddleV1Client is used to interact with features provided by the paddlepaddle.org group. -type PaddlepaddleV1Client struct { - restClient rest.Interface -} - -func (c *PaddlepaddleV1Client) TrainingJobs(namespace string) TrainingJobInterface { - return newTrainingJobs(c, namespace) -} - -// NewForConfig creates a new PaddlepaddleV1Client for the given config. -func NewForConfig(c *rest.Config) (*PaddlepaddleV1Client, error) { - config := *c - if err := setConfigDefaults(&config); err != nil { - return nil, err - } - client, err := rest.RESTClientFor(&config) - if err != nil { - return nil, err - } - return &PaddlepaddleV1Client{client}, nil -} - -// NewForConfigOrDie creates a new PaddlepaddleV1Client for the given config and -// panics if there is an error in the config. -func NewForConfigOrDie(c *rest.Config) *PaddlepaddleV1Client { - client, err := NewForConfig(c) - if err != nil { - panic(err) - } - return client -} - -// New creates a new PaddlepaddleV1Client for the given RESTClient. -func New(c rest.Interface) *PaddlepaddleV1Client { - return &PaddlepaddleV1Client{c} -} - -func setConfigDefaults(config *rest.Config) error { - gv := v1.SchemeGroupVersion - config.GroupVersion = &gv - config.APIPath = "/apis" - config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} - - if config.UserAgent == "" { - config.UserAgent = rest.DefaultKubernetesUserAgent() - } - - return nil -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *PaddlepaddleV1Client) RESTClient() rest.Interface { - if c == nil { - return nil - } - return c.restClient -} diff --git a/go/client/clientset/versioned/typed/paddlepaddle/v1/trainingjob.go b/go/client/clientset/versioned/typed/paddlepaddle/v1/trainingjob.go deleted file mode 100644 index 81bb8a64..00000000 --- a/go/client/clientset/versioned/typed/paddlepaddle/v1/trainingjob.go +++ /dev/null @@ -1,153 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/package v1 - -import ( - v1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - scheme "github.com/PaddlePaddle/cloud/go/client/clientset/versioned/scheme" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" -) - -// TrainingJobsGetter has a method to return a TrainingJobInterface. -// A group's client should implement this interface. -type TrainingJobsGetter interface { - TrainingJobs(namespace string) TrainingJobInterface -} - -// TrainingJobInterface has methods to work with TrainingJob resources. -type TrainingJobInterface interface { - Create(*v1.TrainingJob) (*v1.TrainingJob, error) - Update(*v1.TrainingJob) (*v1.TrainingJob, error) - Delete(name string, options *meta_v1.DeleteOptions) error - DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error - Get(name string, options meta_v1.GetOptions) (*v1.TrainingJob, error) - List(opts meta_v1.ListOptions) (*v1.TrainingJobList, error) - Watch(opts meta_v1.ListOptions) (watch.Interface, error) - Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.TrainingJob, err error) - TrainingJobExpansion -} - -// trainingJobs implements TrainingJobInterface -type trainingJobs struct { - client rest.Interface - ns string -} - -// newTrainingJobs returns a TrainingJobs -func newTrainingJobs(c *PaddlepaddleV1Client, namespace string) *trainingJobs { - return &trainingJobs{ - client: c.RESTClient(), - ns: namespace, - } -} - -// Get takes name of the trainingJob, and returns the corresponding trainingJob object, and an error if there is any. -func (c *trainingJobs) Get(name string, options meta_v1.GetOptions) (result *v1.TrainingJob, err error) { - result = &v1.TrainingJob{} - err = c.client.Get(). - Namespace(c.ns). - Resource("trainingjobs"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of TrainingJobs that match those selectors. -func (c *trainingJobs) List(opts meta_v1.ListOptions) (result *v1.TrainingJobList, err error) { - result = &v1.TrainingJobList{} - err = c.client.Get(). - Namespace(c.ns). - Resource("trainingjobs"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested trainingJobs. -func (c *trainingJobs) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { - opts.Watch = true - return c.client.Get(). - Namespace(c.ns). - Resource("trainingjobs"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch() -} - -// Create takes the representation of a trainingJob and creates it. Returns the server's representation of the trainingJob, and an error, if there is any. -func (c *trainingJobs) Create(trainingJob *v1.TrainingJob) (result *v1.TrainingJob, err error) { - result = &v1.TrainingJob{} - err = c.client.Post(). - Namespace(c.ns). - Resource("trainingjobs"). - Body(trainingJob). - Do(). - Into(result) - return -} - -// Update takes the representation of a trainingJob and updates it. Returns the server's representation of the trainingJob, and an error, if there is any. -func (c *trainingJobs) Update(trainingJob *v1.TrainingJob) (result *v1.TrainingJob, err error) { - result = &v1.TrainingJob{} - err = c.client.Put(). - Namespace(c.ns). - Resource("trainingjobs"). - Name(trainingJob.Name). - Body(trainingJob). - Do(). - Into(result) - return -} - -// Delete takes name of the trainingJob and deletes it. Returns an error if one occurs. -func (c *trainingJobs) Delete(name string, options *meta_v1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("trainingjobs"). - Name(name). - Body(options). - Do(). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *trainingJobs) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("trainingjobs"). - VersionedParams(&listOptions, scheme.ParameterCodec). - Body(options). - Do(). - Error() -} - -// Patch applies the patch and returns the patched trainingJob. -func (c *trainingJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.TrainingJob, err error) { - result = &v1.TrainingJob{} - err = c.client.Patch(pt). - Namespace(c.ns). - Resource("trainingjobs"). - SubResource(subresources...). - Name(name). - Body(data). - Do(). - Into(result) - return -} diff --git a/go/client/informers/externalversions/factory.go b/go/client/informers/externalversions/factory.go deleted file mode 100644 index 51010798..00000000 --- a/go/client/informers/externalversions/factory.go +++ /dev/null @@ -1,117 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by informer-gen - -package externalversions - -import ( - versioned "github.com/PaddlePaddle/cloud/go/client/clientset/versioned" - internalinterfaces "github.com/PaddlePaddle/cloud/go/client/informers/externalversions/internalinterfaces" - paddlepaddle "github.com/PaddlePaddle/cloud/go/client/informers/externalversions/paddlepaddle" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - cache "k8s.io/client-go/tools/cache" - reflect "reflect" - sync "sync" - time "time" -) - -type sharedInformerFactory struct { - client versioned.Interface - lock sync.Mutex - defaultResync time.Duration - - informers map[reflect.Type]cache.SharedIndexInformer - // startedInformers is used for tracking which informers have been started. - // This allows Start() to be called multiple times safely. - startedInformers map[reflect.Type]bool -} - -// NewSharedInformerFactory constructs a new instance of sharedInformerFactory -func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory { - return &sharedInformerFactory{ - client: client, - defaultResync: defaultResync, - informers: make(map[reflect.Type]cache.SharedIndexInformer), - startedInformers: make(map[reflect.Type]bool), - } -} - -// Start initializes all requested informers. -func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) { - f.lock.Lock() - defer f.lock.Unlock() - - for informerType, informer := range f.informers { - if !f.startedInformers[informerType] { - go informer.Run(stopCh) - f.startedInformers[informerType] = true - } - } -} - -// WaitForCacheSync waits for all started informers' cache were synced. -func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool { - informers := func() map[reflect.Type]cache.SharedIndexInformer { - f.lock.Lock() - defer f.lock.Unlock() - - informers := map[reflect.Type]cache.SharedIndexInformer{} - for informerType, informer := range f.informers { - if f.startedInformers[informerType] { - informers[informerType] = informer - } - } - return informers - }() - - res := map[reflect.Type]bool{} - for informType, informer := range informers { - res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced) - } - return res -} - -// InternalInformerFor returns the SharedIndexInformer for obj using an internal -// client. -func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer { - f.lock.Lock() - defer f.lock.Unlock() - - informerType := reflect.TypeOf(obj) - informer, exists := f.informers[informerType] - if exists { - return informer - } - informer = newFunc(f.client, f.defaultResync) - f.informers[informerType] = informer - - return informer -} - -// SharedInformerFactory provides shared informers for resources in all known -// API group versions. -type SharedInformerFactory interface { - internalinterfaces.SharedInformerFactory - ForResource(resource schema.GroupVersionResource) (GenericInformer, error) - WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool - - Paddlepaddle() paddlepaddle.Interface -} - -func (f *sharedInformerFactory) Paddlepaddle() paddlepaddle.Interface { - return paddlepaddle.New(f) -} diff --git a/go/client/informers/externalversions/generic.go b/go/client/informers/externalversions/generic.go deleted file mode 100644 index 9f5aa332..00000000 --- a/go/client/informers/externalversions/generic.go +++ /dev/null @@ -1,60 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by informer-gen - -package externalversions - -import ( - "fmt" - v1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - schema "k8s.io/apimachinery/pkg/runtime/schema" - cache "k8s.io/client-go/tools/cache" -) - -// GenericInformer is type of SharedIndexInformer which will locate and delegate to other -// sharedInformers based on type -type GenericInformer interface { - Informer() cache.SharedIndexInformer - Lister() cache.GenericLister -} - -type genericInformer struct { - informer cache.SharedIndexInformer - resource schema.GroupResource -} - -// Informer returns the SharedIndexInformer. -func (f *genericInformer) Informer() cache.SharedIndexInformer { - return f.informer -} - -// Lister returns the GenericLister. -func (f *genericInformer) Lister() cache.GenericLister { - return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource) -} - -// ForResource gives generic access to a shared informer of the matching type -// TODO extend this to unknown resources with a client pool -func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { - switch resource { - // Group=Paddlepaddle, Version=V1 - case v1.SchemeGroupVersion.WithResource("trainingjobs"): - return &genericInformer{resource: resource.GroupResource(), informer: f.Paddlepaddle().V1().TrainingJobs().Informer()}, nil - - } - - return nil, fmt.Errorf("no informer found for %v", resource) -} diff --git a/go/client/informers/externalversions/internalinterfaces/factory_interfaces.go b/go/client/informers/externalversions/internalinterfaces/factory_interfaces.go deleted file mode 100644 index 8cd3882c..00000000 --- a/go/client/informers/externalversions/internalinterfaces/factory_interfaces.go +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by informer-gen - -package internalinterfaces - -import ( - versioned "github.com/PaddlePaddle/cloud/go/client/clientset/versioned" - runtime "k8s.io/apimachinery/pkg/runtime" - cache "k8s.io/client-go/tools/cache" - time "time" -) - -type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer - -// SharedInformerFactory a small interface to allow for adding an informer without an import cycle -type SharedInformerFactory interface { - Start(stopCh <-chan struct{}) - InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer -} diff --git a/go/client/informers/externalversions/paddlepaddle/interface.go b/go/client/informers/externalversions/paddlepaddle/interface.go deleted file mode 100644 index 4c2710a2..00000000 --- a/go/client/informers/externalversions/paddlepaddle/interface.go +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by informer-gen - -package paddlepaddle - -import ( - internalinterfaces "github.com/PaddlePaddle/cloud/go/client/informers/externalversions/internalinterfaces" - v1 "github.com/PaddlePaddle/cloud/go/client/informers/externalversions/paddlepaddle/v1" -) - -// Interface provides access to each of this group's versions. -type Interface interface { - // V1 provides access to shared informers for resources in V1. - V1() v1.Interface -} - -type group struct { - internalinterfaces.SharedInformerFactory -} - -// New returns a new Interface. -func New(f internalinterfaces.SharedInformerFactory) Interface { - return &group{f} -} - -// V1 returns a new v1.Interface. -func (g *group) V1() v1.Interface { - return v1.New(g.SharedInformerFactory) -} diff --git a/go/client/informers/externalversions/paddlepaddle/v1/interface.go b/go/client/informers/externalversions/paddlepaddle/v1/interface.go deleted file mode 100644 index bf3e3a5b..00000000 --- a/go/client/informers/externalversions/paddlepaddle/v1/interface.go +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by informer-gen - -package v1 - -import ( - internalinterfaces "github.com/PaddlePaddle/cloud/go/client/informers/externalversions/internalinterfaces" -) - -// Interface provides access to all the informers in this group version. -type Interface interface { - // TrainingJobs returns a TrainingJobInformer. - TrainingJobs() TrainingJobInformer -} - -type version struct { - internalinterfaces.SharedInformerFactory -} - -// New returns a new Interface. -func New(f internalinterfaces.SharedInformerFactory) Interface { - return &version{f} -} - -// TrainingJobs returns a TrainingJobInformer. -func (v *version) TrainingJobs() TrainingJobInformer { - return &trainingJobInformer{factory: v.SharedInformerFactory} -} diff --git a/go/client/informers/externalversions/paddlepaddle/v1/trainingjob.go b/go/client/informers/externalversions/paddlepaddle/v1/trainingjob.go deleted file mode 100644 index f3f3c051..00000000 --- a/go/client/informers/externalversions/paddlepaddle/v1/trainingjob.go +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by informer-gen - -package v1 - -import ( - paddlepaddle_v1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - versioned "github.com/PaddlePaddle/cloud/go/client/clientset/versioned" - internalinterfaces "github.com/PaddlePaddle/cloud/go/client/informers/externalversions/internalinterfaces" - v1 "github.com/PaddlePaddle/cloud/go/client/listers/paddlepaddle/v1" - meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - watch "k8s.io/apimachinery/pkg/watch" - cache "k8s.io/client-go/tools/cache" - time "time" -) - -// TrainingJobInformer provides access to a shared informer and lister for -// TrainingJobs. -type TrainingJobInformer interface { - Informer() cache.SharedIndexInformer - Lister() v1.TrainingJobLister -} - -type trainingJobInformer struct { - factory internalinterfaces.SharedInformerFactory -} - -// NewTrainingJobInformer constructs a new informer for TrainingJob type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewTrainingJobInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { - return cache.NewSharedIndexInformer( - &cache.ListWatch{ - ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { - return client.PaddlepaddleV1().TrainingJobs(namespace).List(options) - }, - WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { - return client.PaddlepaddleV1().TrainingJobs(namespace).Watch(options) - }, - }, - &paddlepaddle_v1.TrainingJob{}, - resyncPeriod, - indexers, - ) -} - -func defaultTrainingJobInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return NewTrainingJobInformer(client, meta_v1.NamespaceAll, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) -} - -func (f *trainingJobInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&paddlepaddle_v1.TrainingJob{}, defaultTrainingJobInformer) -} - -func (f *trainingJobInformer) Lister() v1.TrainingJobLister { - return v1.NewTrainingJobLister(f.Informer().GetIndexer()) -} diff --git a/go/client/listers/paddlepaddle/v1/expansion_generated.go b/go/client/listers/paddlepaddle/v1/expansion_generated.go deleted file mode 100644 index 11cd782b..00000000 --- a/go/client/listers/paddlepaddle/v1/expansion_generated.go +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by lister-gen - -package v1 - -// TrainingJobListerExpansion allows custom methods to be added to -// TrainingJobLister. -type TrainingJobListerExpansion interface{} - -// TrainingJobNamespaceListerExpansion allows custom methods to be added to -// TrainingJobNamespaceLister. -type TrainingJobNamespaceListerExpansion interface{} diff --git a/go/client/listers/paddlepaddle/v1/trainingjob.go b/go/client/listers/paddlepaddle/v1/trainingjob.go deleted file mode 100644 index 350a2f3e..00000000 --- a/go/client/listers/paddlepaddle/v1/trainingjob.go +++ /dev/null @@ -1,93 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -// This file was automatically generated by lister-gen - -package v1 - -import ( - v1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" -) - -// TrainingJobLister helps list TrainingJobs. -type TrainingJobLister interface { - // List lists all TrainingJobs in the indexer. - List(selector labels.Selector) (ret []*v1.TrainingJob, err error) - // TrainingJobs returns an object that can list and get TrainingJobs. - TrainingJobs(namespace string) TrainingJobNamespaceLister - TrainingJobListerExpansion -} - -// trainingJobLister implements the TrainingJobLister interface. -type trainingJobLister struct { - indexer cache.Indexer -} - -// NewTrainingJobLister returns a new TrainingJobLister. -func NewTrainingJobLister(indexer cache.Indexer) TrainingJobLister { - return &trainingJobLister{indexer: indexer} -} - -// List lists all TrainingJobs in the indexer. -func (s *trainingJobLister) List(selector labels.Selector) (ret []*v1.TrainingJob, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.TrainingJob)) - }) - return ret, err -} - -// TrainingJobs returns an object that can list and get TrainingJobs. -func (s *trainingJobLister) TrainingJobs(namespace string) TrainingJobNamespaceLister { - return trainingJobNamespaceLister{indexer: s.indexer, namespace: namespace} -} - -// TrainingJobNamespaceLister helps list and get TrainingJobs. -type TrainingJobNamespaceLister interface { - // List lists all TrainingJobs in the indexer for a given namespace. - List(selector labels.Selector) (ret []*v1.TrainingJob, err error) - // Get retrieves the TrainingJob from the indexer for a given namespace and name. - Get(name string) (*v1.TrainingJob, error) - TrainingJobNamespaceListerExpansion -} - -// trainingJobNamespaceLister implements the TrainingJobNamespaceLister -// interface. -type trainingJobNamespaceLister struct { - indexer cache.Indexer - namespace string -} - -// List lists all TrainingJobs in the indexer for a given namespace. -func (s trainingJobNamespaceLister) List(selector labels.Selector) (ret []*v1.TrainingJob, err error) { - err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*v1.TrainingJob)) - }) - return ret, err -} - -// Get retrieves the TrainingJob from the indexer for a given namespace and name. -func (s trainingJobNamespaceLister) Get(name string) (*v1.TrainingJob, error) { - obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("trainingjob"), name) - } - return obj.(*v1.TrainingJob), nil -} diff --git a/go/cmd/edl/Dockerfile b/go/cmd/edl/Dockerfile deleted file mode 100644 index 4990d135..00000000 --- a/go/cmd/edl/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM golang:1.8 -RUN go get github.com/Masterminds/glide -RUN apt-get update && apt-get install -y git -WORKDIR $GOPATH/src/github.com/PaddlePaddle -RUN git clone https://github.com/PaddlePaddle/cloud.git -WORKDIR $GOPATH/src/github.com/PaddlePaddle/cloud/go -RUN glide install --strip-vendor -RUN go build -o /usr/local/bin/edl github.com/PaddlePaddle/cloud/go/cmd/edl -CMD ["edl"] diff --git a/go/cmd/paddlecloud/.gitignore b/go/cmd/paddlecloud/.gitignore deleted file mode 100644 index 6ca6d6c8..00000000 --- a/go/cmd/paddlecloud/.gitignore +++ /dev/null @@ -1 +0,0 @@ -paddlecloud diff --git a/go/cmd/paddlecloud/paddlecloud.go b/go/cmd/paddlecloud/paddlecloud.go deleted file mode 100644 index 5128c6e9..00000000 --- a/go/cmd/paddlecloud/paddlecloud.go +++ /dev/null @@ -1,36 +0,0 @@ -package main - -import ( - "context" - "flag" - "os" - - pfsmod "github.com/PaddlePaddle/cloud/go/filemanager/pfsmodules" - "github.com/PaddlePaddle/cloud/go/paddlecloud" - "github.com/PaddlePaddle/cloud/go/utils/config" - "github.com/google/subcommands" -) - -func main() { - pfsmod.Config = config.ParseDefaultConfig() - paddlecloud.Config = pfsmod.Config - - subcommands.Register(subcommands.HelpCommand(), "") - subcommands.Register(subcommands.CommandsCommand(), "") - subcommands.Register(&paddlecloud.SubmitCmd{}, "") - subcommands.Register(&paddlecloud.LogsCommand{}, "") - subcommands.Register(&paddlecloud.GetCommand{}, "") - subcommands.Register(&paddlecloud.KillCommand{}, "") - subcommands.Register(&paddlecloud.SimpleFileCmd{}, "") - subcommands.Register(&paddlecloud.RegistryCmd{}, "") - subcommands.Register(&paddlecloud.DeleteCommand{}, "") - subcommands.Register(&paddlecloud.PublishCmd{}, "") - subcommands.Register(&pfsmod.LsCmd{}, "PFS") - subcommands.Register(&pfsmod.CpCmd{}, "PFS") - subcommands.Register(&pfsmod.RmCmd{}, "PFS") - subcommands.Register(&pfsmod.MkdirCmd{}, "PFS") - - flag.Parse() - ctx := context.Background() - os.Exit(int(subcommands.Execute(ctx))) -} diff --git a/go/cmd/paddlectl/main.go b/go/cmd/paddlectl/main.go deleted file mode 100644 index b2f6ab5e..00000000 --- a/go/cmd/paddlectl/main.go +++ /dev/null @@ -1,29 +0,0 @@ -package main - -import ( - "context" - "flag" - "os" - - pfsmod "github.com/PaddlePaddle/cloud/go/filemanager/pfsmodules" - "github.com/PaddlePaddle/cloud/go/paddlecloud" - "github.com/PaddlePaddle/cloud/go/paddlectl" - "github.com/PaddlePaddle/cloud/go/utils/config" - "github.com/google/subcommands" -) - -func main() { - pfsmod.Config = config.ParseDefaultConfig() - paddlecloud.Config = pfsmod.Config - - subcommands.Register(subcommands.HelpCommand(), "") - subcommands.Register(subcommands.CommandsCommand(), "") - subcommands.Register(&paddlectl.SubmitCmd{}, "") - - // TODO(gongwb): add more commands. - subcommands.Register(&paddlectl.SimpleFileCmd{}, "") - - flag.Parse() - ctx := context.Background() - os.Exit(int(subcommands.Execute(ctx))) -} diff --git a/go/cmd/pfsserver/main.go b/go/cmd/pfsserver/main.go deleted file mode 100644 index f736bd29..00000000 --- a/go/cmd/pfsserver/main.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "net/http" - - "github.com/PaddlePaddle/cloud/go/filemanager/pfsserver" - log "github.com/golang/glog" -) - -func main() { - port := flag.Int("port", 8080, "port of server") - ip := flag.String("ip", "0.0.0.0", "ip of server") - tokenURI := flag.String("tokenuri", "http://cloud.paddlepaddle.org", "uri of token server") - flag.Parse() - - router := pfsserver.NewRouter() - addr := fmt.Sprintf("%s:%d", *ip, *port) - pfsserver.TokenURI = *tokenURI - - log.Infof("server on:%s and tokenuri:%s\n", addr, *tokenURI) - log.Fatal(http.ListenAndServe(addr, router)) -} diff --git a/go/edl/README.md b/go/edl/README.md deleted file mode 100644 index 30c9b065..00000000 --- a/go/edl/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# PaddlePaddle EDL: Elastic Deep Learning - -While many hardware and software manufacturers are working on improving the running time of deep learning jobs, EDL optimizes (1) the global utilization of the cluster and (2) the waiting time of job submitters. - -For more about the project EDL, please refer to this [invited blog post](http://blog.kubernetes.io/2017/12/paddle-paddle-fluid-elastic-learning.html) on the Kubernetes official blog. - -EDL includes two parts: - -1. a Kubernetes controller for the elastic scheduling of distributed deep learning jobs, and - -1. making PaddlePaddle a fault-tolerable deep learning framework. This directory contains the Kubernetes controller. For more information about fault-tolerance, please refer to this [PaddlePaddle design doc](https://github.com/PaddlePaddle/Paddle/tree/develop/doc/design/cluster_train). - -We deployed EDL on a real Kubernetes cluster, dlnel.com, opened for graduate students of Tsinghua University. The performance test report of EDL on this cluster is [here](https://github.com/PaddlePaddle/cloud/blob/develop/doc/autoscale/experiment/README.md). - - -## Build - -```bash -glide install --strip-vendor -go build -o path/to/output github.com/PaddlePaddle/cloud/go/cmd/edl -``` diff --git a/go/filemanager/README_CN.md b/go/filemanager/README_CN.md deleted file mode 100644 index 0dff235b..00000000 --- a/go/filemanager/README_CN.md +++ /dev/null @@ -1,62 +0,0 @@ -1. 如何构建PFSServer的DockerImage - - 构建PFSServer的编译环境 - - ``` - cd cloud/docker/pfs - bash build.sh - ``` - - - 编译PFSServer - - ``` - cd cloud/go - docker run --rm -v $(pwd):/root/gopath/src/github.com/PaddlePaddle/cloud/go pfsserver:dev - ``` - - - 构建PFSServer的DockerImage - - ``` - cd cloud/go - docker build . -t pfsserver:latest - ``` - - PFSServer启动命令 - - ``` - docker run pfsserver:latest /pfsserver/pfsserver -tokenuri http://cloud.paddlepaddle.org -logtostderr=true -v=3 - ``` - -2. 如何部署PFSServer - - ``` - cd ../k8s - kuberctl create -f cloud_pfsserver.yaml - ``` - -3. 如何使用PFSClient - - cp - - ``` - upload: - paddlecloud cp ./file /pfs/$DATACENTER/home/$USER/file - - download: - paddlecloud cp /pfs/$DATACENTER/home/$USER/file ./file - ``` - - ls - - ``` - paddlecloud ls /pfs/$DATACENTER/home/$USER/folder - ``` - - - rm - - ``` - paddlecloud rm /pfs/$DATACENTER/home/$USER/file - paddlecloud rm -r /pfs/$DATACENTER/home/$USER/folder - ``` - - - mkdir - - ``` - paddlecloud mkdir /pfs/$DATACENTER/home/$USER/folder - ``` diff --git a/go/filemanager/pfsmodules/chunk.go b/go/filemanager/pfsmodules/chunk.go deleted file mode 100644 index 1482cf98..00000000 --- a/go/filemanager/pfsmodules/chunk.go +++ /dev/null @@ -1,83 +0,0 @@ -package pfsmodules - -import ( - "errors" - "fmt" - "net/url" - "strconv" -) - -// ChunkParam respresents a chunk info. -type ChunkParam struct { - Path string - Offset int64 - Size int64 -} - -// String packs info of ChunkParam. -func (p *ChunkParam) String() string { - return fmt.Sprintf("Path:%s Offset:%d Size:%d", p.Path, p.Offset, p.Size) -} - -// ToURLParam encodes variables to url encoding parameters. -func (p *ChunkParam) ToURLParam() url.Values { - parameters := url.Values{} - parameters.Add("path", p.Path) - - str := fmt.Sprint(p.Offset) - parameters.Add("offset", str) - - str = fmt.Sprint(p.Size) - parameters.Add("chunksize", str) - - return parameters -} - -// ParseChunkParam get a Chunk struct from path. -// path example: -// path=/pfs/datacenter1/1.txt&offset=4096&chunksize=4096 -func ParseChunkParam(path string) (*ChunkParam, error) { - cmd := ChunkParam{} - - m, err := url.ParseQuery(path) - if err != nil || - len(m["path"]) == 0 || - len(m["offset"]) == 0 || - len(m["chunksize"]) == 0 { - return nil, errors.New(StatusJSONErr) - } - - cmd.Path = m["path"][0] - cmd.Offset, err = strconv.ParseInt(m["offset"][0], 10, 64) - if err != nil { - return nil, errors.New(StatusJSONErr) - } - - chunkSize, err := strconv.ParseInt(m["chunksize"][0], 10, 64) - if err != nil { - return nil, errors.New(StatusBadChunkSize) - } - cmd.Size = chunkSize - - return &cmd, nil -} - -// Chunk is struct. -type Chunk struct { - Offset int64 - Len int64 - Checksum string - Data []byte -} - -// String packs info of Chunk -func (c *Chunk) String() string { - return fmt.Sprintf("Offset:%d Len:%d Checksum:%s", c.Offset, c.Len, c.Checksum) -} - -// NewChunk make a Chunk struct. -func NewChunk(capcity int64) *Chunk { - c := Chunk{} - c.Data = make([]byte, capcity) - return &c -} diff --git a/go/filemanager/pfsmodules/chunkmeta.go b/go/filemanager/pfsmodules/chunkmeta.go deleted file mode 100644 index cfbf6b9b..00000000 --- a/go/filemanager/pfsmodules/chunkmeta.go +++ /dev/null @@ -1,167 +0,0 @@ -package pfsmodules - -import ( - "encoding/json" - "errors" - "fmt" - "io" - "net/http" - "net/url" - "os" - "strconv" - "strings" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" -) - -const ( - defaultMaxChunkSize = 32 * 1024 * 1024 - defaultMinChunkSize = 4 * 1024 -) -const ( - // ChunkMetaCmdName is the name of GetChunkMeta command. - ChunkMetaCmdName = "GetChunkMeta" -) - -// ChunkMeta holds the chunk meta's info. -type ChunkMeta struct { - Offset int64 `json:"offset"` - Checksum string `json:"checksum"` - Len int64 `json:"len"` -} - -// String pack a info tring of ChunkMeta. -func (m *ChunkMeta) String() string { - return fmt.Sprintf("Offset:%d Checksum:%s Len:%d", m.Offset, m.Checksum, m.Len) -} - -// ChunkMetaCmd is a command. -type ChunkMetaCmd struct { - Method string `json:"method"` - FilePath string `json:"path"` - Offset int64 `json:"offset"` - ChunkSize int64 `json:"chunksize"` -} - -// ToURLParam encodes ChunkMetaCmd to URL encoding string. -func (p *ChunkMetaCmd) ToURLParam() url.Values { - parameters := url.Values{} - parameters.Add("method", p.Method) - parameters.Add("path", p.FilePath) - - str := fmt.Sprint(p.ChunkSize) - parameters.Add("chunksize", str) - - str = fmt.Sprint(p.Offset) - parameters.Add("offset", str) - - return parameters -} - -// ToJSON encodes ChunkMetaCmd to JSON string. -func (p *ChunkMetaCmd) ToJSON() ([]byte, error) { - return json.Marshal(p) -} - -// Run is a functions which run ChunkMetaCmd. -func (p *ChunkMetaCmd) Run() (interface{}, error) { - f := FileHandle{} - if err := f.Open(p.FilePath, os.O_RDONLY, 0); err != nil { - return nil, err - } - - defer f.Close() - - return f.GetChunkMeta(p.Offset, p.ChunkSize) -} - -func (p *ChunkMetaCmd) checkChunkSize() error { - if p.ChunkSize < defaultMinChunkSize || - p.ChunkSize > defaultMaxChunkSize { - return errors.New(StatusBadChunkSize) - } - - return nil -} - -// ValidateCloudArgs checks the conditions when running on cloud. -func (p *ChunkMetaCmd) ValidateCloudArgs(userName string) error { - if err := ValidatePfsPath([]string{p.FilePath}, userName, ChunkMetaCmdName); err != nil { - return err - } - - return p.checkChunkSize() -} - -// ValidateLocalArgs checks the conditions when running locally. -func (p *ChunkMetaCmd) ValidateLocalArgs() error { - return p.checkChunkSize() -} - -// NewChunkMetaCmdFromURLParam get a new ChunkMetaCmd. -func NewChunkMetaCmdFromURLParam(r *http.Request) (*ChunkMetaCmd, error) { - method := r.URL.Query().Get("method") - path := r.URL.Query().Get("path") - chunkStr := r.URL.Query().Get("chunksize") - offsetStr := r.URL.Query().Get("offset") - - if len(method) == 0 || - method != ChunkMetaCmdName || - len(path) == 0 || - len(chunkStr) == 0 || - len(offsetStr) == 0 { - return nil, errors.New(http.StatusText(http.StatusBadRequest)) - } - - chunkSize, err := strconv.ParseInt(chunkStr, 10, 64) - if err != nil { - return nil, errors.New(StatusBadChunkSize) - } - - offset, err := strconv.ParseInt(offsetStr, 10, 64) - if err != nil { - return nil, errors.New(StatusBadChunkSize) - } - - return &ChunkMetaCmd{ - Method: method, - FilePath: path, - ChunkSize: chunkSize, - Offset: offset, - }, nil -} -func remoteChunkMeta(path string, offset int64, - chunkSize int64) (*ChunkMeta, error) { - cmd := ChunkMetaCmd{ - Method: ChunkMetaCmdName, - FilePath: path, - ChunkSize: chunkSize, - Offset: offset, - } - - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTChunksPath) - ret, err := restclient.GetCall(t, cmd.ToURLParam()) - if err != nil { - return nil, err - } - - type chunkMetaResponse struct { - Err string `json:"err"` - Results ChunkMeta `json:"results"` - } - - resp := chunkMetaResponse{} - if err := json.Unmarshal(ret, &resp); err != nil { - return nil, err - } - - if resp.Err == "" { - return &resp.Results, nil - } - - if strings.Contains(resp.Err, StatusFileEOF) { - return &resp.Results, io.EOF - } - - return &resp.Results, errors.New(resp.Err) -} diff --git a/go/filemanager/pfsmodules/command.go b/go/filemanager/pfsmodules/command.go deleted file mode 100644 index e4eec9c6..00000000 --- a/go/filemanager/pfsmodules/command.go +++ /dev/null @@ -1,119 +0,0 @@ -package pfsmodules - -import ( - "errors" - "io" - "net/url" - "path" - "strings" - - log "github.com/golang/glog" -) - -const ( - // DefaultMultiPartBoundary is the default multipart form boudary. - DefaultMultiPartBoundary = "8d7b0e5709d756e21e971ff4d9ac3b20" - - // MaxJSONRequestSize is the max body size when server receives a request. - MaxJSONRequestSize = 2048 -) - -const ( - // RESTChunksStoragePath is chunk's storage path of REST API. - RESTChunksStoragePath = "api/v1/pfs/storage/chunks" - // RESTFilesPath is files' path of REST API. - RESTFilesPath = "api/v1/pfs/files" - // RESTChunksPath is chunks' path of REST API. - RESTChunksPath = "api/v1/pfs/chunks" - // RESTTokenPath is token's path of REST API. - RESTTokenPath = "api/v1/token2user/" -) - -// Command is a interface of all commands. -type Command interface { - // ToURLParam generates url.Values of the command struct. - ToURLParam() url.Values - // ToJSON generates JSON string of the command struct. - ToJSON() ([]byte, error) - // Run runs a command. - Run() (interface{}, error) - // ValidateLocalArgs validates arguments when running locally. - ValidateLocalArgs() error - // ValidateCloudArgs validates arguments when running on cloud. - ValidateCloudArgs(userName string) error -} - -// CheckUser checks if a user has authority to access a path. -// path example:/pfs/$datacenter/home/$user -func checkUser(pathStr string, user string) error { - pathStr = path.Clean(strings.TrimSpace(pathStr)) - a := strings.Split(pathStr, "/") - // the first / is convert to " " - if len(a) < 5 { - return errors.New(StatusBadPath) - } - - if a[4] != user { - log.V(4).Infof("request path:%s user:%s split_path:%s\n", pathStr, user, a[4]) - return errors.New(StatusUnAuthorized) - } - return nil -} - -func isPublic(pathStr string) bool { - pathStr = path.Clean(strings.TrimSpace(pathStr)) - a := strings.Split(pathStr, "/") - - if len(a) >= 4 && a[3] == "public" { - return true - } - - return false -} - -func checkPublic(cmdName string) error { - switch cmdName { - case "ls", "stat", "GetChunk": - return nil - default: - return errors.New("public data supports only ls or stat command") - } -} - -// ValidatePfsPath returns whether a pfspath is valid and autorized -func ValidatePfsPath(paths []string, userName string, cmdName string) error { - if len(paths) == 0 { - return errors.New(StatusNotEnoughArgs) - } - - for _, path := range paths { - if !strings.HasPrefix(path, "/pfs/") { - return errors.New(StatusShouldBePfsPath + ":" + path) - } - - if isPublic(path) { - if err := checkPublic(cmdName); err != nil { - return err - } - continue - } - - if err := checkUser(path, userName); err != nil { - return err - } - } - return nil -} - -// IsCloudPath returns whether a path is a pfspath. -func IsCloudPath(path string) bool { - return strings.HasPrefix(path, "/pfs/") -} - -// Close closes c and log it. -func Close(c io.Closer) { - err := c.Close() - if err != nil { - log.Error(err) - } -} diff --git a/go/filemanager/pfsmodules/command_test.go b/go/filemanager/pfsmodules/command_test.go deleted file mode 100644 index c106d932..00000000 --- a/go/filemanager/pfsmodules/command_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package pfsmodules - -import "testing" - -func TestValidPfsPath(t *testing.T) { - path := []string{"/pfs/xxx/public/dataset"} - err := ValidatePfsPath(path, "user", "ls") - if err != nil { - t.Error("valid meets error") - } - - err = ValidatePfsPath(path, "user", "mkdir") - if err == nil { - t.Error("valid meets error") - } - - path = []string{"/pfs/xxx/home/user/dataset"} - err = ValidatePfsPath(path, "user1", "ls") - if err == nil { - t.Error("valid meets error") - } - - path = []string{"/pfs/xxx/home/user/dataset"} - err = ValidatePfsPath(path, "user", "ls") - if err != nil { - t.Errorf("valid meets error:%v", err) - } -} diff --git a/go/filemanager/pfsmodules/cp.go b/go/filemanager/pfsmodules/cp.go deleted file mode 100644 index 4d7a21b0..00000000 --- a/go/filemanager/pfsmodules/cp.go +++ /dev/null @@ -1,162 +0,0 @@ -package pfsmodules - -import ( - "context" - "errors" - "flag" - "fmt" - "strconv" - - log "github.com/golang/glog" - "github.com/google/subcommands" -) - -const ( - cpCmdName = "cp" - defaultChunkSize int64 = 4 * 1024 * 1024 -) - -// CpCmdResult means the copy-command's result. -type CpCmdResult struct { - Src string `json:"Path"` - Dst string `json:"Dst"` -} - -// CpCmd means copy-command. -type CpCmd struct { - Method string - V bool - Src []string - Dst string - ChunkSize int64 -} - -func newCpCmdFromFlag(f *flag.FlagSet) (*CpCmd, error) { - cmd := CpCmd{} - - cmd.Method = cpCmdName - cmd.Src = make([]string, 0, f.NArg()) - - var err error - f.Visit(func(flag *flag.Flag) { - if flag.Name == "v" { - cmd.V, err = strconv.ParseBool(flag.Value.String()) - if err != nil { - log.Errorln("meets error when parsing argument v") - return - } - } - - if flag.Name == "chunksize" { - cmd.ChunkSize, err = strconv.ParseInt(flag.Value.String(), 10, 64) - if err != nil { - log.Errorln("meets error when parsing argument v") - return - } - - cmd.ChunkSize = cmd.ChunkSize * 1024 - - if cmd.ChunkSize > defaultMaxChunkSize || - cmd.ChunkSize < defaultMinChunkSize { - log.Errorln("ChunkSize should be in [%d, %d]", defaultMinChunkSize, defaultMaxChunkSize) - return - } - } - - }) - - if err != nil { - return nil, err - } - - for i, arg := range f.Args() { - if i >= len(f.Args())-1 { - break - } - cmd.Src = append(cmd.Src, arg) - } - - cmd.Dst = f.Args()[len(f.Args())-1] - - return &cmd, nil -} - -// PartToString prints command's info. -func (p *CpCmd) PartToString(src, dst string) string { - return fmt.Sprintf("cp %s %s", src, dst) -} - -// Name returns CpCmd's name. -func (*CpCmd) Name() string { return "cp" } - -// Synopsis returns synopsis of CpCmd. -func (*CpCmd) Synopsis() string { return "upload or download files" } - -// Usage returns usage of CpCmd. -func (*CpCmd) Usage() string { - return `cp [-v] [-chunksize] ... - upload or downlod files, does't support directories this version - Options: - ` -} - -// SetFlags sets CpCmd's parameter. -func (p *CpCmd) SetFlags(f *flag.FlagSet) { - f.Int64Var(&p.ChunkSize, "chunksize", defaultChunkSize, "Upload or download unit KB.") - f.BoolVar(&p.V, "v", false, "Cause cp to be verbose, showing files after they are copied.") -} - -// Execute runs CpCmd. -func (p *CpCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() < 2 { - f.Usage() - return subcommands.ExitFailure - } - - cmd, err := newCpCmdFromFlag(f) - if err != nil { - return subcommands.ExitSuccess - } - - if err := RunCp(cmd); err != nil { - return subcommands.ExitFailure - } - - return subcommands.ExitSuccess -} - -// RunCp runs CpCmd. -func RunCp(cmd *CpCmd) error { - var results []CpCmdResult - - for _, arg := range cmd.Src { - var ret []CpCmdResult - var err error - - if IsCloudPath(arg) { - if IsCloudPath(cmd.Dst) { - err = errors.New(StatusOnlySupportFiles) - } else { - err = download(arg, cmd.Dst, cmd.V, cmd.ChunkSize) - } - } else { - if IsCloudPath(cmd.Dst) { - err = upload(arg, cmd.Dst, cmd.V, cmd.ChunkSize) - } else { - //can't do that - err = errors.New(StatusOnlySupportFiles) - } - } - - if err != nil { - ColorError("proc %s err:%s\n", arg, err) - return err - } - - if ret != nil { - results = append(results, ret...) - } - } - - return nil -} diff --git a/go/filemanager/pfsmodules/cp_test.go b/go/filemanager/pfsmodules/cp_test.go deleted file mode 100644 index 38521fa9..00000000 --- a/go/filemanager/pfsmodules/cp_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package pfsmodules - -import ( - "flag" - "strings" - "testing" -) - -func TestNewCpCmdFromFlag(t *testing.T) { - cmdLine := "cp -v /pfs/datacenter/home/user1/1.txt /pfs/datacenter/home/user1/2.txt ./user1/" - a := strings.Split(cmdLine, " ") - - flag := flag.NewFlagSet("cp", flag.ExitOnError) - flag.Bool("v", false, "") - - if err := flag.Parse(a[1:]); err != nil { - t.Error(err.Error()) - } - - d, err := newCpCmdFromFlag(flag) - if err != nil { - t.Error(err.Error()) - } - - if d.Method != "cp" { - t.Error(d.Method) - } - - if !d.V { - t.Error(d.V) - } - - if d.Dst != "./user1/" { - t.Error(d.Dst) - } - - if len(d.Src) != 2 { - t.Error(len(d.Src)) - } - - for _, s := range d.Src { - if s != "/pfs/datacenter/home/user1/1.txt" && - s != "/pfs/datacenter/home/user1/2.txt" { - t.Error(s) - } - } -} diff --git a/go/filemanager/pfsmodules/download.go b/go/filemanager/pfsmodules/download.go deleted file mode 100644 index cb4bcf11..00000000 --- a/go/filemanager/pfsmodules/download.go +++ /dev/null @@ -1,136 +0,0 @@ -package pfsmodules - -import ( - "errors" - "fmt" - "io" - "os" - "path/filepath" - "time" - - log "github.com/golang/glog" -) - -func downloadFile(src string, srcFileSize int64, dst string, verbose bool, chunkSize int64) error { - w := FileHandle{} - if err := w.Open(dst, os.O_RDWR, srcFileSize); err != nil { - return err - } - defer w.Close() - - r := RemoteFile{} - if err := r.Open(src, os.O_RDONLY, 0); err != nil { - return err - } - defer r.Close() - - offset := int64(0) - if chunkSize <= 0 { - chunkSize = defaultChunkSize - } - - for { - start := time.Now() - sm, errs := r.GetChunkMeta(offset, chunkSize) - if errs != nil && errs != io.EOF { - return errs - } - log.V(2).Infoln("remote chunk info:", sm) - - wm, errw := w.GetChunkMeta(offset, chunkSize) - if errw != nil && errw != io.EOF { - return errw - } - log.V(2).Infoln("local chunk info:", wm) - - if sm.Checksum == wm.Checksum { - if verbose { - used := time.Since(start).Nanoseconds() / time.Millisecond.Nanoseconds() - ColorInfoOverWrite("%s download %d%% %dKB/s", src, offset*100/srcFileSize, sm.Len/used) - } - offset += sm.Len - log.V(2).Infoln("remote chunk is same as local chunk:", sm) - if errs == io.EOF || errw == io.EOF { - break - } - continue - } - - c, err := r.ReadChunk(offset, sm.Len) - if err != nil && err != io.EOF { - return err - } - - if err := w.WriteChunk(c); err != nil { - return err - } - offset += sm.Len - - if verbose { - used := time.Since(start).Nanoseconds() / time.Millisecond.Nanoseconds() - ColorInfoOverWrite("%s download %d%% %dKB/s", src, offset*100/srcFileSize, sm.Len/used) - } - - log.V(2).Infof("downlod chunk:%s ok\n\n", c.String()) - if errs == io.EOF || errw == io.EOF { - break - } - } - - if offset != srcFileSize { - return fmt.Errorf("expect %d but read %d", srcFileSize, offset) - } - - return nil -} - -func checkBeforeDownLoad(src []LsResult, dst string) (bool, error) { - var bDir bool - fi, err := os.Stat(dst) - if err == nil { - bDir = fi.IsDir() - if !fi.IsDir() && len(src) > 1 { - return bDir, errors.New(StatusDestShouldBeDirectory) - } - } else if os.IsNotExist(err) { - return false, nil - } - - return bDir, err -} - -func download(src, dst string, verbose bool, chunkSize int64) error { - log.V(1).Infof("download %s to %s\n", src, dst) - lsRet, err := RemoteLs(NewLsCmd(true, src)) - if err != nil { - return err - } - - bDir, err := checkBeforeDownLoad(lsRet, dst) - if err != nil { - return err - } - - for _, attr := range lsRet { - if attr.IsDir { - ColorError("Download %s error info:%s\n", StatusOnlySupportFiles) - return errors.New(StatusOnlySupportFiles) - } - - realSrc := attr.Path - realDst := dst - - if bDir { - _, file := filepath.Split(attr.Path) - realDst = dst + "/" + file - } - - if err := downloadFile(realSrc, attr.Size, realDst, verbose, chunkSize); err != nil { - ColorError("Download %s to %s error info:%s\n", realSrc, realDst, err) - return err - } - ColorInfoOverWrite("Downloaded %s\n", realSrc) - } - - return nil -} diff --git a/go/filemanager/pfsmodules/localfile.go b/go/filemanager/pfsmodules/localfile.go deleted file mode 100644 index b1db58c8..00000000 --- a/go/filemanager/pfsmodules/localfile.go +++ /dev/null @@ -1,164 +0,0 @@ -package pfsmodules - -import ( - "bytes" - "crypto/md5" - "encoding/hex" - "errors" - "io" - "os" - - log "github.com/golang/glog" -) - -// FileHandle is a local *os.File with offset. -type FileHandle struct { - F *os.File - Offset int64 -} - -// Close closes FileHandle. -func (f *FileHandle) Close() { - if f.F != nil { - f.F.Close() - } - - f.Offset = 0 -} - -// Open opens a file. -func (f *FileHandle) Open(path string, flag int, size int64) error { - if flag != os.O_RDONLY && - flag != os.O_WRONLY && - flag != os.O_RDWR { - return errors.New("only support os.O_RDONLY, os.O_WRONLY, os.O_RDWR") - } - - if (flag == os.O_WRONLY || - flag == os.O_RDWR) && size >= 0 { - - cmd := TouchCmd{ - Method: TouchCmdName, - Path: path, - FileSize: size, - } - - // attempt to create sized file if it does't exist or - // file's size != size - if err := localTouch(&cmd); err != nil { - return err - } - } - - fd, err := os.OpenFile(path, flag, 0666) - if err != nil { - return err - } - - f.F = fd - return nil -} - -func (f *FileHandle) checkOffset(offset int64) error { - if offset != f.Offset { - if _, err := f.F.Seek(offset, 0); err != nil { - return err - } - f.Offset = offset - } - return nil -} - -// GetChunkMeta returns ChunkMeta at offset with size. -func (f *FileHandle) GetChunkMeta(offset, size int64) (*ChunkMeta, error) { - c, err := f.ReadChunk(offset, size) - if err != nil && err != io.EOF { - return nil, err - } - - return &ChunkMeta{ - Offset: offset, - Checksum: c.Checksum, - Len: c.Len, - }, err -} - -// ReadChunk loads a chunk at offset with len. -func (f *FileHandle) ReadChunk(offset int64, size int64) (*Chunk, error) { - if err := f.checkOffset(offset); err != nil { - return nil, err - } - - c := NewChunk(size) - - //n, err := f.F.Read(c.Data) - n, err := io.ReadFull(f.F, c.Data) - if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF { - return nil, err - } - f.Offset += int64(n) - - c.Offset = offset - c.Len = int64(n) - sum := md5.Sum(c.Data[:n]) - c.Checksum = hex.EncodeToString(sum[:]) - - log.V(3).Infof("f:%d offset:%d need offset:%d size:%d Readed Chunk:%s error_info:%v\n", - f.F, f.Offset-int64(n), offset, size, c.String(), err) - - fi, errfi := f.F.Stat() - log.V(3).Infof("f.stat size:%d error:%v", fi.Size(), errfi) - - if err == io.ErrUnexpectedEOF { - err = io.EOF - } - - return c, err -} - -// CopyN loads filedata to io.Writer. -func (f *FileHandle) CopyN(w io.Writer, offset, len int64) error { - if err := f.checkOffset(offset); err != nil { - return err - } - - n, err := io.CopyN(w, f.F, len) - log.V(2).Infof("CopyN expect %d real %d\n", len, n) - - if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF { - return err - } - f.Offset += int64(n) - - if err == io.ErrUnexpectedEOF { - err = io.EOF - } - - return err -} - -// WriteChunk writes data to file. -func (f *FileHandle) WriteChunk(c *Chunk) error { - if c.Len == 0 { - return nil - } - - return f.Write(bytes.NewReader(c.Data), c.Offset, c.Len) -} - -// Write writes data from io.Reader. -func (f *FileHandle) Write(r io.Reader, offset int64, size int64) error { - if err := f.checkOffset(offset); err != nil { - return err - } - - n, err := io.CopyN(f.F, r, size) - if n > 0 { - f.Offset += n - } - - log.V(3).Infof("f:%d offset:%d need offset:%d size:%d writen:%d\n", - f.F, f.Offset-n, offset, size, n) - - return err -} diff --git a/go/filemanager/pfsmodules/ls.go b/go/filemanager/pfsmodules/ls.go deleted file mode 100644 index 86097ad5..00000000 --- a/go/filemanager/pfsmodules/ls.go +++ /dev/null @@ -1,313 +0,0 @@ -package pfsmodules - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "net/http" - "net/url" - "os" - "path/filepath" - "strconv" - "time" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - log "github.com/golang/glog" - "github.com/google/subcommands" -) - -const ( - lsCmdName = "ls" -) - -// LsResult represents a LsCmd's result. -type LsResult struct { - Path string `json:"Path"` - ModTime int64 `json:"ModTime"` - Size int64 `json:"Size"` - IsDir bool `json:"IsDir"` -} - -// LsCmd means LsCmd structure. -type LsCmd struct { - Method string - R bool - Args []string -} - -// ToURLParam encoding LsCmd to URL Encoding string. -func (p *LsCmd) ToURLParam() url.Values { - parameters := url.Values{} - parameters.Add("method", p.Method) - parameters.Add("r", strconv.FormatBool(p.R)) - - for _, arg := range p.Args { - parameters.Add("arg", arg) - } - - return parameters -} - -// ToJSON encodes cmd members to json string. -func (p *LsCmd) ToJSON() ([]byte, error) { - return json.Marshal(p) -} - -func newLsCmdFromFlag(f *flag.FlagSet) (*LsCmd, error) { - cmd := LsCmd{} - - cmd.Method = lsCmdName - cmd.Args = make([]string, 0, f.NArg()) - - var err error - f.Visit(func(flag *flag.Flag) { - if flag.Name == "r" { - cmd.R, err = strconv.ParseBool(flag.Value.String()) - if err != nil { - log.Errorln("meets error when parsing argument r") - return - } - } - }) - - if err != nil { - return nil, err - } - - for _, arg := range f.Args() { - log.V(2).Info(arg) - cmd.Args = append(cmd.Args, arg) - } - - return &cmd, nil -} - -// NewLsCmdFromURLParam returns a new LsCmd according path variable. -func NewLsCmdFromURLParam(path string) (*LsCmd, error) { - cmd := LsCmd{} - - m, err := url.ParseQuery(path) - if err != nil { - return nil, err - } - - if len(m["method"]) == 0 || - len(m["r"]) == 0 || - len(m["arg"]) == 0 { - return nil, errors.New(StatusNotEnoughArgs) - } - - cmd.Method = m["method"][0] - if cmd.Method != lsCmdName { - return nil, errors.New(http.StatusText(http.StatusMethodNotAllowed) + ":" + cmd.Method) - } - - cmd.R, err = strconv.ParseBool(m["r"][0]) - if err != nil { - return nil, errors.New(StatusInvalidArgs + ":r") - } - - cmd.Args = m["arg"] - - return &cmd, nil -} - -// NewLsCmd return a new LsCmd according r and path variable. -func NewLsCmd(r bool, path string) *LsCmd { - return &LsCmd{ - Method: lsCmdName, - R: r, - Args: []string{path}, - } -} - -func lsPath(path string, r bool) ([]LsResult, error) { - var ret []LsResult - - err := filepath.Walk(path, func(subpath string, info os.FileInfo, err error) error { - - if err != nil { - return err - } - - m := LsResult{} - m.Path = subpath - m.Size = info.Size() - m.ModTime = info.ModTime().UnixNano() - m.IsDir = info.IsDir() - - if subpath == path { - if info.IsDir() { - } else { - ret = append(ret, m) - } - } else { - ret = append(ret, m) - } - - if info.IsDir() && !r && subpath != path { - return filepath.SkipDir - } - - return nil - }) - - return ret, err -} - -// ValidateCloudArgs checks the conditions when running on cloud. -func (p *LsCmd) ValidateCloudArgs(userName string) error { - return ValidatePfsPath(p.Args, userName, lsCmdName) -} - -// ValidateLocalArgs checks the conditions when running local. -func (p *LsCmd) ValidateLocalArgs() error { - if len(p.Args) == 0 { - return errors.New(StatusNotEnoughArgs) - } - return nil -} - -// Run functions runs LsCmd and return LsResult and error if any happened. -func (p *LsCmd) Run() (interface{}, error) { - var results []LsResult - - for _, arg := range p.Args { - log.V(1).Infof("ls %s\n", arg) - - list, err := filepath.Glob(arg) - if err != nil { - return nil, err - } - - if len(list) == 0 { - return results, errors.New(StatusFileNotFound) - } - - for _, path := range list { - ret, err := lsPath(path, p.R) - if err != nil { - return results, err - } - results = append(results, ret...) - } - } - - return results, nil -} - -// Name returns LsCmd's name. -func (*LsCmd) Name() string { return "ls" } - -// Synopsis returns Synopsis of LsCmd. -func (*LsCmd) Synopsis() string { return "List files on PaddlePaddle Cloud" } - -// Usage returns usage of LsCmd. -func (*LsCmd) Usage() string { - return `ls [-r] : - List files on PaddlePaddleCloud - Options: -` -} - -// SetFlags sets LsCmd's parameters. -func (p *LsCmd) SetFlags(f *flag.FlagSet) { - f.BoolVar(&p.R, "r", false, "list files recursively") -} - -// getFormatPrint gets max width of filesize and return format string to print. -func getFormatString(result []LsResult) string { - max := 0 - for _, t := range result { - str := fmt.Sprintf("%d", t.Size) - - if len(str) > max { - max = len(str) - } - } - - return fmt.Sprintf("%%s %%s %%%dd %%s\n", max) -} - -func formatPrint(result []LsResult) { - formatStr := getFormatString(result) - - for _, t := range result { - timeStr := time.Unix(0, t.ModTime).Format("2006-01-02 15:04:05") - - if t.IsDir { - fmt.Printf(formatStr, timeStr, "d", t.Size, t.Path) - } else { - fmt.Printf(formatStr, timeStr, "f", t.Size, t.Path) - } - } - - fmt.Printf("\n") -} - -// RemoteLs gets LsCmd result from cloud. -func RemoteLs(cmd *LsCmd) ([]LsResult, error) { - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTFilesPath) - body, err := restclient.GetCall(t, cmd.ToURLParam()) - if err != nil { - return nil, err - } - - type lsResponse struct { - Err string `json:"err"` - Results []LsResult `json:"results"` - } - - log.V(4).Infoln(string(body[:])) - - resp := lsResponse{} - if err := json.Unmarshal(body, &resp); err != nil { - return resp.Results, err - } - - if len(resp.Err) == 0 { - return resp.Results, nil - } - - return resp.Results, errors.New(resp.Err) -} - -func remoteLs(cmd *LsCmd) error { - for _, arg := range cmd.Args { - subcmd := NewLsCmd( - cmd.R, - arg, - ) - result, err := RemoteLs(subcmd) - - fmt.Printf("%s :\n", arg) - if err != nil { - fmt.Printf(" error:%s\n\n", err.Error()) - return err - } - - formatPrint(result) - } - return nil -} - -// Execute runs a LsCmd. -func (p *LsCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() < 1 { - f.Usage() - return subcommands.ExitFailure - } - - cmd, err := newLsCmdFromFlag(f) - if err != nil { - return subcommands.ExitFailure - } - log.V(1).Infof("%#v\n", cmd) - - if err := remoteLs(cmd); err != nil { - return subcommands.ExitFailure - } - return subcommands.ExitSuccess -} diff --git a/go/filemanager/pfsmodules/ls_test.go b/go/filemanager/pfsmodules/ls_test.go deleted file mode 100644 index 1045b1c8..00000000 --- a/go/filemanager/pfsmodules/ls_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package pfsmodules - -import ( - "flag" - "reflect" - "strings" - "testing" -) - -func TestNewLsCmdFromURLParam(t *testing.T) { - s := LsCmd{ - Method: "ls", - R: false, - Args: []string{"/pfs/test1/", "/pfs/test2/"}, - } - - path := "arg=%2Fpfs%2Ftest1%2F&arg=%2Fpfs%2Ftest2%2F&method=ls&r=false" - - d, err := NewLsCmdFromURLParam(path) - if err != nil { - t.Error(err.Error()) - } - - if s.Method != d.Method { - t.Error(d.Method) - } - - if s.R != d.R { - t.Error(d.R) - } - - eq := reflect.DeepEqual(s.Args, d.Args) - if !eq { - t.Error(s.Args) - t.Error(d.Args) - } -} - -func TestNewLsCmdFromFlag(t *testing.T) { - cmdLine := "ls -r /pfs/datacenter/home/user1/1.txt /pfs/datacenter/home/user1/" - a := strings.Split(cmdLine, " ") - - flag := flag.NewFlagSet("ls", flag.ExitOnError) - flag.Bool("r", false, "") - - if err := flag.Parse(a[1:]); err != nil { - t.Error(err.Error()) - } - - d, err := newLsCmdFromFlag(flag) - if err != nil { - t.Error(err.Error()) - } - - if d.Method != "ls" { - t.Error(d.Method) - } - - if !d.R { - t.Error(d.R) - } - - if len(d.Args) != 2 { - t.Error(len(d.Args)) - } - - for _, s := range d.Args { - if s != "/pfs/datacenter/home/user1/1.txt" && - s != "/pfs/datacenter/home/user1/" { - t.Error(s) - } - } -} diff --git a/go/filemanager/pfsmodules/mkdir.go b/go/filemanager/pfsmodules/mkdir.go deleted file mode 100644 index 1813f27f..00000000 --- a/go/filemanager/pfsmodules/mkdir.go +++ /dev/null @@ -1,187 +0,0 @@ -package pfsmodules - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "net/url" - "os" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - log "github.com/golang/glog" - "github.com/google/subcommands" -) - -const ( - mkdirCmdName = "mkdir" -) - -// MkdirResult means Mkdir command's result. -type MkdirResult struct { - Path string `json:"path"` -} - -// MkdirCmd means Mkdir command. -type MkdirCmd struct { - Method string `json:"method"` - Args []string `json:"path"` -} - -// ValidateLocalArgs checks the conditions when running on local. -func (p *MkdirCmd) ValidateLocalArgs() error { - if len(p.Args) == 0 { - return errors.New(StatusNotEnoughArgs) - } - return nil -} - -// ValidateCloudArgs checks the conditions when running on cloud. -func (p *MkdirCmd) ValidateCloudArgs(userName string) error { - return ValidatePfsPath(p.Args, userName, mkdirCmdName) -} - -// ToURLParam need not to be implemented. -func (p *MkdirCmd) ToURLParam() url.Values { - panic("not implemented") -} - -// ToJSON encodes MkdirCmd to JSON string. -func (p *MkdirCmd) ToJSON() ([]byte, error) { - return json.Marshal(p) -} - -// NewMkdirCmd returns a new MkdirCmd. -func NewMkdirCmd(path string) *MkdirCmd { - return &MkdirCmd{ - Method: mkdirCmdName, - Args: []string{path}, - } -} - -// newMkdirCmdFromFlag returns a new MkdirCmd from parsed flags. -func newMkdirCmdFromFlag(f *flag.FlagSet) (*MkdirCmd, error) { - cmd := MkdirCmd{} - - cmd.Method = mkdirCmdName - cmd.Args = make([]string, 0, f.NArg()) - - for _, arg := range f.Args() { - log.V(2).Info(arg) - cmd.Args = append(cmd.Args, arg) - } - - return &cmd, nil -} - -// Run runs MkdirCmd. -func (p *MkdirCmd) Run() (interface{}, error) { - var results []MkdirResult - for _, path := range p.Args { - fi, err := os.Stat(path) - - if os.IsExist(err) && !fi.IsDir() { - return results, errors.New(StatusAlreadyExist) - } - - if err := os.MkdirAll(path, 0700); err != nil { - return results, err - } - - results = append(results, MkdirResult{Path: path}) - } - - return results, nil -} - -// Name returns name of MkdirComand. -func (*MkdirCmd) Name() string { return "mkdir" } - -// Synopsis returns synopsis of MkdirCmd. -func (*MkdirCmd) Synopsis() string { return "mkdir directoies on PaddlePaddle Cloud" } - -// Usage returns usage of MkdirCmd. -func (*MkdirCmd) Usage() string { - return `mkdir : - mkdir directories on PaddlePaddleCloud - Options: -` -} - -// SetFlags sets MkdirCmd's parameters. -func (p *MkdirCmd) SetFlags(f *flag.FlagSet) { -} - -func formatMkdirPrint(results []MkdirResult, err error) { - if err != nil { - fmt.Println("\t" + err.Error()) - } -} - -// RemoteMkdir creat a directory on cloud. -func RemoteMkdir(cmd *MkdirCmd) ([]MkdirResult, error) { - j, err := cmd.ToJSON() - if err != nil { - return nil, err - } - - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTFilesPath) - log.V(2).Infoln(t) - body, err := restclient.PostCall(t, j) - if err != nil { - return nil, err - } - - log.V(3).Info(string(body[:])) - - type mkdirResponse struct { - Err string `json:"err"` - Results []MkdirResult `json:"results"` - } - - resp := mkdirResponse{} - if err := json.Unmarshal(body, &resp); err != nil { - return resp.Results, err - } - - log.V(1).Infof("%#v\n", resp) - - if len(resp.Err) == 0 { - return resp.Results, nil - } - - return resp.Results, errors.New(resp.Err) -} - -func remoteMkdir(cmd *MkdirCmd) error { - for _, arg := range cmd.Args { - subcmd := NewMkdirCmd(arg) - - fmt.Printf("mkdir %s\n", arg) - results, err := RemoteMkdir(subcmd) - formatMkdirPrint(results, err) - } - return nil - -} - -// Execute runs a MkdirCmd. -func (p *MkdirCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() < 1 { - f.Usage() - return subcommands.ExitFailure - } - - cmd, err := newMkdirCmdFromFlag(f) - if err != nil { - return subcommands.ExitFailure - } - log.V(1).Infof("%#v\n", cmd) - - if err := remoteMkdir(cmd); err != nil { - return subcommands.ExitFailure - } - - return subcommands.ExitSuccess -} diff --git a/go/filemanager/pfsmodules/remotefile.go b/go/filemanager/pfsmodules/remotefile.go deleted file mode 100644 index a5e5b8db..00000000 --- a/go/filemanager/pfsmodules/remotefile.go +++ /dev/null @@ -1,162 +0,0 @@ -package pfsmodules - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "mime/multipart" - "os" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - log "github.com/golang/glog" -) - -// RemoteFile is a remote file's handle. -type RemoteFile struct { - Path string - Flag int - Size int64 -} - -// Open file to read ,write or read-write. -// if flag == O_WRONLY or flag == O_RDWR, this function will -// attempt to create a sized file on remote if it does't exist. -func (f *RemoteFile) Open(path string, flag int, size int64) error { - if flag != os.O_RDONLY && - flag != os.O_WRONLY && - flag != os.O_RDWR { - return errors.New("only support os.O_RDONLY, os.O_WRONLY, os.O_RDWR") - } - - f.Path = path - f.Flag = flag - f.Size = size - - if flag == os.O_WRONLY || - flag == os.O_RDWR { - - cmd := TouchCmd{ - Method: TouchCmdName, - Path: path, - FileSize: size, - } - - // create sized file. - if err := remoteTouch(&cmd); err != nil { - return err - } - } - return nil -} - -func getChunkData(m ChunkParam) (*Chunk, error) { - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTChunksStoragePath) - log.V(1).Info("target url: " + t) - - resp, err := restclient.GetChunk(t, m.ToURLParam()) - if err != nil { - return nil, err - } - defer Close(resp.Body) - - if resp.Status != restclient.HTTPOK { - return nil, errors.New("http server returned non-200 status: " + resp.Status) - } - - var c = &Chunk{} - partReader := multipart.NewReader(resp.Body, DefaultMultiPartBoundary) - for { - part, err := partReader.NextPart() - if err == io.EOF { - break - } - - if part.FormName() != "chunk" { - continue - } - - log.V(2).Infof("received post chunk param:%s\n", part.FileName()) - m1, err := ParseChunkParam(part.FileName()) - if err != nil { - return nil, errors.New(err.Error()) - } - - c = NewChunk(m1.Size) - c.Len = m1.Size - c.Offset = m1.Offset - n, err := io.ReadFull(part, c.Data) - if err != nil { - return c, err - } - - if int64(n) != m1.Size { - log.V(2).Infof("download chunk data error expected %d real %d", m1.Size, n) - } - } - - return c, nil -} - -// ReadChunk reads Chunk data from f. -func (f *RemoteFile) ReadChunk(offset int64, len int64) (*Chunk, error) { - if len == 0 { - return &Chunk{}, nil - } - - m := ChunkParam{ - Path: f.Path, - Offset: offset, - Size: len, - } - - return getChunkData(m) -} - -// GetChunkMeta gets ChunkMeta info from f. -func (f *RemoteFile) GetChunkMeta(offset int64, len int64) (*ChunkMeta, error) { - if len == 0 { - return &ChunkMeta{}, nil - } - - return remoteChunkMeta(f.Path, offset, len) -} - -// WriteChunk writes chunk data to f. -func (f *RemoteFile) WriteChunk(c *Chunk) error { - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTChunksStoragePath) - log.V(3).Infoln("chunk's URI:" + t) - - p := ChunkParam{ - Path: f.Path, - Offset: c.Offset, - Size: c.Len, - } - log.V(3).Infof("write chunk param:%v\n", p) - param := p.ToURLParam().Encode() - - body, err := restclient.PostChunk(t, param, - bytes.NewReader(c.Data), c.Len, DefaultMultiPartBoundary) - - if err != nil { - return err - } - - log.V(3).Info("received body:" + string(body[:])) - - resp := uploadChunkResponse{} - if err := json.Unmarshal(body, &resp); err != nil { - return err - } - - if len(resp.Err) == 0 { - return nil - } - - return errors.New(resp.Err) -} - -// Close is function not need implement. -func (f *RemoteFile) Close() { -} diff --git a/go/filemanager/pfsmodules/rm.go b/go/filemanager/pfsmodules/rm.go deleted file mode 100644 index a3e05104..00000000 --- a/go/filemanager/pfsmodules/rm.go +++ /dev/null @@ -1,225 +0,0 @@ -package pfsmodules - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "net/url" - "os" - "path/filepath" - "strconv" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - log "github.com/golang/glog" - "github.com/google/subcommands" -) - -const ( - rmCmdName = "rm" -) - -// RmResult means Rm-command's result. -type RmResult struct { - Path string `json:"path"` -} - -// RmCmd means Rm command. -type RmCmd struct { - Method string `json:"method"` - R bool `json:"r"` - Args []string `json:"path"` -} - -// ValidateLocalArgs checks the conditions when running local. -func (p *RmCmd) ValidateLocalArgs() error { - if len(p.Args) == 0 { - return errors.New(StatusInvalidArgs) - } - return nil -} - -// ValidateCloudArgs checks the conditions when running on cloud. -func (p *RmCmd) ValidateCloudArgs(userName string) error { - return ValidatePfsPath(p.Args, userName, rmCmdName) -} - -// ToURLParam needs not to be implemented. -func (p *RmCmd) ToURLParam() url.Values { - panic("not implemented") -} - -// ToJSON encodes RmCmd to JSON string. -func (p *RmCmd) ToJSON() ([]byte, error) { - return json.Marshal(p) -} - -// NewRmCmd returns a new RmCmd. -func NewRmCmd(r bool, path string) *RmCmd { - return &RmCmd{ - Method: rmCmdName, - R: r, - Args: []string{path}, - } -} - -func newRmCmdFromFlag(f *flag.FlagSet) (*RmCmd, error) { - cmd := RmCmd{} - - cmd.Method = rmCmdName - cmd.Args = make([]string, 0, f.NArg()) - - var err error - f.Visit(func(flag *flag.Flag) { - if flag.Name == "r" { - cmd.R, err = strconv.ParseBool(flag.Value.String()) - if err != nil { - log.Errorln("meets error when parsing argument r") - return - } - } - }) - - if err != nil { - return nil, err - } - - for _, arg := range f.Args() { - log.V(2).Info(arg) - cmd.Args = append(cmd.Args, arg) - } - - return &cmd, nil -} - -// Run runs RmCmd. -func (p *RmCmd) Run() (interface{}, error) { - var result []RmResult - - for _, path := range p.Args { - list, err := filepath.Glob(path) - if err != nil { - return result, err - } - - for _, arg := range list { - fi, err := os.Stat(arg) - if err != nil { - return result, err - } - - if fi.IsDir() && !p.R { - return result, errors.New(StatusCannotDelDirectory + ":" + arg) - } - - if err := os.RemoveAll(arg); err != nil { - return result, err - } - - result = append(result, RmResult{Path: arg}) - } - } - - return result, nil -} - -// Name returns RmCmd's name. -func (*RmCmd) Name() string { return "rm" } - -// Synopsis returns synopsis of RmCmd. -func (*RmCmd) Synopsis() string { return "rm files on PaddlePaddle Cloud" } - -// Usage returns usage of RmCmd. -func (*RmCmd) Usage() string { - return `rm -r : - rm files on PaddlePaddleCloud - Options: -` -} - -// SetFlags sets RmCmd's parameters. -func (p *RmCmd) SetFlags(f *flag.FlagSet) { - f.BoolVar(&p.R, "r", false, "rm files recursively") -} - -func formatRmPrint(results []RmResult, err error) { - for _, result := range results { - fmt.Printf("rm %s\n", result.Path) - } - - if err != nil { - fmt.Println("\t" + err.Error()) - } - - return -} - -// RemoteRm gets RmCmd Result from cloud. -func RemoteRm(cmd *RmCmd) ([]RmResult, error) { - j, err := cmd.ToJSON() - if err != nil { - return nil, err - } - - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTFilesPath) - body, err := restclient.DeleteCall(t, j) - if err != nil { - return nil, err - } - - log.V(3).Info(string(body[:])) - - type rmResponse struct { - Err string `json:"err"` - Results []RmResult `json:"path"` - } - - resp := rmResponse{} - if err := json.Unmarshal(body, &resp); err != nil { - return resp.Results, err - } - - log.V(1).Infof("%#v\n", resp) - - if len(resp.Err) == 0 { - return resp.Results, nil - } - - return resp.Results, errors.New(resp.Err) -} - -func remoteRm(cmd *RmCmd) error { - for _, arg := range cmd.Args { - subcmd := NewRmCmd( - cmd.R, - arg, - ) - - fmt.Printf("rm %s\n", arg) - result, err := RemoteRm(subcmd) - formatRmPrint(result, err) - } - return nil - -} - -// Execute runs a RmCmd. -func (p *RmCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() < 1 { - f.Usage() - return subcommands.ExitFailure - } - - cmd, err := newRmCmdFromFlag(f) - if err != nil { - return subcommands.ExitFailure - } - log.V(1).Infof("%#v\n", cmd) - - if err := remoteRm(cmd); err != nil { - return subcommands.ExitFailure - } - - return subcommands.ExitSuccess -} diff --git a/go/filemanager/pfsmodules/stat.go b/go/filemanager/pfsmodules/stat.go deleted file mode 100644 index 867c20d8..00000000 --- a/go/filemanager/pfsmodules/stat.go +++ /dev/null @@ -1,110 +0,0 @@ -package pfsmodules - -import ( - "encoding/json" - "errors" - "fmt" - "net/http" - "net/url" - "os" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - log "github.com/golang/glog" -) - -const ( - // StatCmdName means stat command name. - StatCmdName = "stat" -) - -// StatCmd means stat command. -type StatCmd struct { - Method string - Path string -} - -// ToURLParam encodes StatCmd to URL Encoding string. -func (p *StatCmd) ToURLParam() url.Values { - parameters := url.Values{} - parameters.Add("method", p.Method) - parameters.Add("path", p.Path) - - return parameters -} - -// ToJSON encodes memebers to json string. -func (p *StatCmd) ToJSON() ([]byte, error) { - return json.Marshal(p) -} - -// NewStatCmdFromURLParam return a new StatCmd. -func NewStatCmdFromURLParam(path string) (*StatCmd, error) { - cmd := StatCmd{} - - m, err := url.ParseQuery(path) - if err != nil || - len(m["method"]) == 0 || - len(m["path"]) == 0 { - return nil, errors.New(StatusNotEnoughArgs) - } - - cmd.Method = m["method"][0] - if cmd.Method != StatCmdName { - return nil, errors.New(http.StatusText(http.StatusMethodNotAllowed) + ":" + cmd.Method) - } - - cmd.Path = m["path"][0] - return &cmd, nil -} - -// ValidateLocalArgs checks the condition when running local. -func (p *StatCmd) ValidateLocalArgs() error { - panic("not implement") -} - -// ValidateCloudArgs checks the conditions when running on cloud. -func (p *StatCmd) ValidateCloudArgs(userName string) error { - return ValidatePfsPath([]string{p.Path}, userName, StatCmdName) -} - -// Run runs the StatCmd. -func (p *StatCmd) Run() (interface{}, error) { - fi, err := os.Stat(p.Path) - if err != nil { - return nil, err - } - - return &LsResult{ - Path: p.Path, - ModTime: fi.ModTime().UnixNano(), - IsDir: fi.IsDir(), - Size: fi.Size(), - }, nil -} - -func remoteStat(cmd *StatCmd) (*LsResult, error) { - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTFilesPath) - log.V(3).Infoln("remotestat target URI:" + t) - body, err := restclient.GetCall(t, cmd.ToURLParam()) - if err != nil { - return nil, err - } - - type statResponse struct { - Err string `json:"err"` - Results LsResult `json:"results"` - } - - resp := statResponse{} - if err := json.Unmarshal(body, &resp); err != nil { - return nil, err - } - - log.V(1).Infof("result:%#v\n", resp) - - if len(resp.Err) != 0 { - return nil, errors.New(resp.Err) - } - - return &resp.Results, nil -} diff --git a/go/filemanager/pfsmodules/status.go b/go/filemanager/pfsmodules/status.go deleted file mode 100644 index 93e31196..00000000 --- a/go/filemanager/pfsmodules/status.go +++ /dev/null @@ -1,42 +0,0 @@ -package pfsmodules - -// TODO -// need a custom error type? - -const ( - // StatusFileNotFound is a error string of that there is no file or directory. - StatusFileNotFound = "no such file or directory" - // StatusDirectoryNotAFile is a error string of that the destination should be a file. - StatusDirectoryNotAFile = "should be a file not a directory" - // StatusCopyFromLocalToLocal is a error string of that this system does't support copy local to local. - StatusCopyFromLocalToLocal = "don't support copy local to local" - // StatusDestShouldBeDirectory is a error string of that destination shoule be a directory. - StatusDestShouldBeDirectory = "dest should be a directory" - // StatusOnlySupportFiles is a error string of that the system only support upload or download files not directories. - StatusOnlySupportFiles = "only support upload or download files not directories" - // StatusBadFileSize is a error string of that the file size is no valid. - StatusBadFileSize = "bad file size" - // StatusDirectoryAlreadyExist is a error string of that the directory is already exist. - StatusDirectoryAlreadyExist = "directory already exist" - // StatusBadChunkSize is a error string of that the chunksize is error. - StatusBadChunkSize = "chunksize error" - // StatusShouldBePfsPath is a error string of that a path should be a pfs path. - StatusShouldBePfsPath = "should be pfs path" - // StatusNotEnoughArgs is a error string of that there is not enough arguments. - StatusNotEnoughArgs = "not enough arguments" - // StatusInvalidArgs is a error string of that arguments are not valid. - StatusInvalidArgs = "invalid arguments" - // StatusUnAuthorized is a error string of that what you request should have authorization. - StatusUnAuthorized = "what you request is unauthorized" - // StatusJSONErr is a error string of that the system parses json error. - StatusJSONErr = "parse json error" - // StatusCannotDelDirectory is a error string of that what you input can't delete a directory. - StatusCannotDelDirectory = "can't del directory" - // StatusAlreadyExist is a error string of that the destination is already exist. - StatusAlreadyExist = "already exist" - // StatusBadPath is a error string of that the form of path is not correct. - StatusBadPath = "the path should be in format eg:/pf/datacentername/" - - // StatusFileEOF is a status string indicates that the file reaches end - StatusFileEOF = "this file reaches end" -) diff --git a/go/filemanager/pfsmodules/touch.go b/go/filemanager/pfsmodules/touch.go deleted file mode 100644 index 2860e171..00000000 --- a/go/filemanager/pfsmodules/touch.go +++ /dev/null @@ -1,184 +0,0 @@ -package pfsmodules - -import ( - "encoding/json" - "errors" - "fmt" - "net/http" - "net/url" - "os" - "strconv" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - log "github.com/golang/glog" -) - -const ( - defaultMaxCreateFileSize = int64(1 * 1024 * 1024 * 1024 * 1024) -) - -const ( - // TouchCmdName is the name of touch command. - TouchCmdName = "touch" -) - -// TouchResult represents touch-command's result. -type TouchResult struct { - Path string `json:"path"` -} - -// TouchCmd is holds touch command's variables. -type TouchCmd struct { - Method string `json:"method"` - FileSize int64 `json:"filesize"` - Path string `json:"path"` -} - -func (p *TouchCmd) checkFileSize() error { - if p.FileSize < 0 || p.FileSize > defaultMaxCreateFileSize { - return errors.New(StatusBadFileSize + ":" + fmt.Sprint(p.FileSize)) - } - return nil -} - -// ValidateLocalArgs check the conditions when running local. -func (p *TouchCmd) ValidateLocalArgs() error { - return p.checkFileSize() -} - -// ValidateCloudArgs checks the conditions when running on cloud. -func (p *TouchCmd) ValidateCloudArgs(userName string) error { - if err := ValidatePfsPath([]string{p.Path}, userName, TouchCmdName); err != nil { - return err - } - - return p.checkFileSize() -} - -// ToURLParam encodes a TouchCmd to a URL encoding string. -func (p *TouchCmd) ToURLParam() url.Values { - parameters := url.Values{} - parameters.Add("method", p.Method) - parameters.Add("path", p.Path) - - str := fmt.Sprint(p.FileSize) - parameters.Add("path", str) - - return parameters -} - -// ToJSON encodes a TouchCmd to a JSON string. -func (p *TouchCmd) ToJSON() ([]byte, error) { - return json.Marshal(p) -} - -// NewTouchCmdFromURLParam return a new TouchCmd with specified path. -func NewTouchCmdFromURLParam(path string) (*TouchCmd, int32) { - cmd := TouchCmd{} - - m, err := url.ParseQuery(path) - if err != nil || - len(m["method"]) == 0 || - len(m["filesize"]) == 0 || - len(m["path"]) == 0 { - return nil, http.StatusBadRequest - } - - cmd.Method = m["method"][0] - if cmd.Method != TouchCmdName { - return nil, http.StatusBadRequest - } - - cmd.FileSize, err = strconv.ParseInt(m["filesize"][0], 0, 64) - if err != nil { - return nil, http.StatusBadRequest - } - - cmd.Path = m["path"][0] - - return &cmd, http.StatusOK -} - -// CreateSizedFile creates a file with specified size. -func CreateSizedFile(path string, size int64) error { - fd, err := os.Create(path) - if err != nil { - log.Errorf("create path:%v error:%v\n", path, err) - return err - } - defer Close(fd) - - if size <= 0 { - return nil - } - - _, err = fd.Seek(size-1, 0) - if err != nil { - log.Errorf("seek path:%v size:%v error:%v\n", path, size, err) - return err - } - - _, err = fd.Write([]byte{0}) - if err != nil { - log.Errorf("write byte{0} fd:%v path:%v size:%v error:%v\n", fd, path, size, err) - } - return err -} - -// Run is a function runs TouchCmd. -func (p *TouchCmd) Run() (interface{}, error) { - if p.FileSize < 0 || p.FileSize > defaultMaxCreateFileSize { - return nil, errors.New(StatusBadFileSize) - } - - fi, err := os.Stat(p.Path) - if os.IsExist(err) && fi.IsDir() { - return nil, errors.New(StatusDirectoryAlreadyExist) - } - - if os.IsNotExist(err) || fi.Size() != p.FileSize { - if err := CreateSizedFile(p.Path, p.FileSize); err != nil { - return nil, err - } - } - - return &TouchResult{ - Path: p.Path, - }, nil -} - -func localTouch(cmd *TouchCmd) error { - if _, err := cmd.Run(); err != nil { - return err - } - - return nil -} -func remoteTouch(cmd *TouchCmd) error { - j, err := cmd.ToJSON() - if err != nil { - return err - } - - t := fmt.Sprintf("%s/%s", Config.ActiveConfig.Endpoint, RESTFilesPath) - body, err := restclient.PostCall(t, j) - if err != nil { - return err - } - - type touchResponse struct { - Err string `json:"err"` - Results TouchResult `json:"results"` - } - - resp := touchResponse{} - if err := json.Unmarshal(body, &resp); err != nil { - return err - } - - if len(resp.Err) == 0 { - return nil - } - - return errors.New(resp.Err) -} diff --git a/go/filemanager/pfsmodules/upload.go b/go/filemanager/pfsmodules/upload.go deleted file mode 100644 index 9ceacab1..00000000 --- a/go/filemanager/pfsmodules/upload.go +++ /dev/null @@ -1,166 +0,0 @@ -package pfsmodules - -import ( - "errors" - "fmt" - "io" - "os" - "path/filepath" - "strings" - "time" - - "github.com/PaddlePaddle/cloud/go/utils/config" - "github.com/fatih/color" - log "github.com/golang/glog" -) - -// Config is global config object for pfs commandline -var Config *config.SubmitConfig - -type uploadChunkResponse struct { - Err string `json:"err"` -} - -func getChunkReader(path string, offset int64) (*os.File, error) { - f, err := os.Open(path) - if err != nil { - return nil, err - } - - _, err = f.Seek(offset, 0) - if err != nil { - Close(f) - return nil, err - } - - return f, nil -} - -func uploadFile(src, dst string, srcFileSize int64, verbose bool, chunkSize int64) error { - r := FileHandle{} - if err := r.Open(src, os.O_RDONLY, 0); err != nil { - return err - } - defer r.Close() - - w := RemoteFile{} - if err := w.Open(dst, os.O_RDWR, srcFileSize); err != nil { - return err - } - defer w.Close() - - // upload chunks. - if chunkSize <= 0 { - chunkSize = defaultChunkSize - } - - offset := int64(0) - for { - start := time.Now() - c, errc := r.ReadChunk(offset, chunkSize) - if errc != nil && errc != io.EOF { - return errc - } - log.V(2).Infoln("local chunk info:" + c.String()) - - m, errm := w.GetChunkMeta(offset, chunkSize) - if errm != nil && errm != io.EOF { - return errm - } - log.V(2).Infoln("remote chunk info:" + m.String()) - offset += c.Len - - if c.Checksum == m.Checksum { - if verbose { - used := time.Since(start).Nanoseconds() / time.Millisecond.Nanoseconds() - ColorInfoOverWrite("%s upload %d%% %dKB/s", src, offset*100/srcFileSize, c.Len/used) - } - log.V(2).Infof("remote and local chunk are same chunk info:%s\n", c.String()) - if errm == io.EOF || errc == io.EOF { - break - } - continue - } - - if verbose { - used := time.Since(start).Nanoseconds() / time.Millisecond.Nanoseconds() - ColorInfoOverWrite("%s upload %d%% %dKB/s", src, offset*100/srcFileSize, c.Len/used) - } - - if err := w.WriteChunk(c); err != nil { - return err - } - log.V(2).Infof("upload chunk:%s ok\n\n", c.String()) - if errm == io.EOF || errc == io.EOF { - break - } - } - - if offset != srcFileSize { - return fmt.Errorf("expect %d upload %d", srcFileSize, offset) - } - - return nil -} - -// ColorError print red ERROR before message. -func ColorError(format string, a ...interface{}) { - color.New(color.FgRed).Printf("[ERROR] ") - fmt.Printf(format, a...) -} - -// ColorInfo print green INFO before message. -func ColorInfo(format string, a ...interface{}) { - color.New(color.FgGreen).Printf("[INFO] ") - fmt.Printf(format, a...) -} - -// ColorInfoOverWrite print green INFO before message overwrite last line. -func ColorInfoOverWrite(format string, a ...interface{}) { - fmt.Printf("\r%c[2K", 27) - color.New(color.FgGreen).Printf("[INFO] ") - fmt.Printf(format, a...) -} - -func upload(src, dst string, verbose bool, chunkSize int64) error { - lsCmd := NewLsCmd(true, src) - srcRet, err := lsCmd.Run() - if err != nil { - return err - } - log.V(3).Infof("ls src:%s result:%#v\n", src, srcRet) - - dstMeta, err := remoteStat(&StatCmd{Path: dst, Method: StatCmdName}) - if err != nil && !strings.Contains(err.Error(), StatusFileNotFound) { - ColorError("Upload %s to %s error info:%s\n", src, dst, err) - return err - } - log.V(3).Infof("stat dst:%s result:%#v\n", dst, dstMeta) - - srcMetas := srcRet.([]LsResult) - - for _, srcMeta := range srcMetas { - if srcMeta.IsDir { - return errors.New(StatusOnlySupportFiles) - } - - realSrc := srcMeta.Path - realDst := dst - - _, file := filepath.Split(srcMeta.Path) - if dstMeta != nil && dstMeta.IsDir { - realDst = dst + "/" + file - } - - log.V(1).Infof("upload src_path:%s src_file_size:%d dst_path:%s\n", - realSrc, srcMeta.Size, realDst) - - if err := uploadFile(realSrc, realDst, srcMeta.Size, verbose, chunkSize); err != nil { - ColorError("Upload %s to %s error:%v\n", realSrc, realDst, err) - return err - } - ColorInfoOverWrite("Uploaded %s\n", realSrc) - } - - return nil -} diff --git a/go/filemanager/pfsserver/handler.go b/go/filemanager/pfsserver/handler.go deleted file mode 100644 index 5d46c0d3..00000000 --- a/go/filemanager/pfsserver/handler.go +++ /dev/null @@ -1,444 +0,0 @@ -package pfsserver - -import ( - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "mime/multipart" - "net/http" - "os" - - pfsmod "github.com/PaddlePaddle/cloud/go/filemanager/pfsmodules" - "github.com/PaddlePaddle/cloud/go/utils/restclient" - sjson "github.com/bitly/go-simplejson" - log "github.com/golang/glog" -) - -type response struct { - Err string `json:"err"` - Results interface{} `json:"results"` -} - -// TokenURI is the address of token server -var TokenURI = "" - -func getUserName(uri string, token string) (string, error) { - authHeader := make(map[string]string) - authHeader["Authorization"] = token - - str := fmt.Sprintf("get uri with token error uri:%s token:%s\n", uri, token) - - req, err := restclient.MakeRequest(uri, "GET", nil, "", nil, authHeader) - if err != nil { - log.Errorln(str) - return "", err - } - - body, err := restclient.GetResponse(req) - if err != nil { - log.Errorln(str) - return "", err - } - - log.V(4).Infoln("get token2user resp:" + string(body[:])) - var resp interface{} - if err := json.Unmarshal(body, &resp); err != nil { - log.Errorln(string(body[:])) - return "", err - } - - user := resp.(map[string]interface{})["user"].(string) - if len(user) < 1 { - log.Errorln(resp) - return "", errors.New("can't get username") - } - - return user, nil -} - -func cmdHandler(w http.ResponseWriter, req string, cmd pfsmod.Command, header http.Header) { - resp := response{} - - user, err := getUserName(TokenURI+"/"+pfsmod.RESTTokenPath, header.Get("Authorization")) - if err != nil { - resp.Err = "get username error:" + err.Error() - writeJSONResponse(w, req, http.StatusOK, resp) - return - } - - if err := cmd.ValidateCloudArgs(user); err != nil { - resp.Err = err.Error() - writeJSONResponse(w, req, http.StatusOK, resp) - return - } - - ret, _ := cmd.ToJSON() - log.Infof("user:%s cmd:%s\n", user, string(ret[:])) - - result, err := cmd.Run() - if err != nil && err != io.EOF { - resp.Err = err.Error() - writeJSONResponse(w, req, http.StatusOK, resp) - return - } - - resp.Results = result - writeJSONResponse(w, req, http.StatusOK, resp) -} - -func lsHandler(w http.ResponseWriter, r *http.Request) { - cmd, err := pfsmod.NewLsCmdFromURLParam(r.URL.RawQuery) - - resp := response{} - if err != nil { - resp.Err = err.Error() - writeJSONResponse(w, r.URL.RawQuery, http.StatusOK, resp) - return - } - - cmdHandler(w, r.URL.RawQuery, cmd, r.Header) -} - -func statHandler(w http.ResponseWriter, r *http.Request) { - log.V(1).Info("begin stathandler") - cmd, err := pfsmod.NewStatCmdFromURLParam(r.URL.RawQuery) - - resp := response{} - if err != nil { - resp.Err = err.Error() - writeJSONResponse(w, r.URL.RawQuery, http.StatusOK, resp) - return - } - - cmdHandler(w, r.URL.RawQuery, cmd, r.Header) -} - -func writeJSONResponse(w http.ResponseWriter, - req string, - httpStatus int, - resp response) { - if httpStatus != http.StatusOK || len(resp.Err) > 0 { - log.Errorf("%s httpStatus:%d resp:=%v\n", - req, httpStatus, resp.Err) - } else { - log.V(1).Infof("%s httpStatus:%d resp:%#v\n", - req, httpStatus, resp) - } - - w.Header().Set("Content-Type", "application/json; charset=UTF-8") - w.WriteHeader(httpStatus) - - if err := json.NewEncoder(w).Encode(resp); err != nil { - log.Error(err) - } -} - -// GetFilesHandler processes files's GET request. -func GetFilesHandler(w http.ResponseWriter, r *http.Request) { - method := r.URL.Query().Get("method") - log.V(3).Infoln(r.URL.RawQuery) - - switch method { - case "ls": - lsHandler(w, r) - case "md5sum": - // TODO - // err := md5Handler(w, r) - case "stat": - statHandler(w, r) - default: - resp := response{} - writeJSONResponse(w, r.URL.RawQuery, - http.StatusMethodNotAllowed, resp) - } -} - -func rmHandler(w http.ResponseWriter, body []byte, header http.Header) { - log.V(1).Infof("begin proc rmHandler\n") - cmd := pfsmod.RmCmd{} - - resp := response{} - if err := json.Unmarshal(body, &cmd); err != nil { - writeJSONResponse(w, string(body[:]), http.StatusOK, resp) - return - } - - log.V(1).Infof("request :%#v\n", cmd) - - cmdHandler(w, string(body[:]), &cmd, header) - log.V(1).Infof("end proc handler\n") - -} - -func mkdirHandler(w http.ResponseWriter, body []byte, header http.Header) { - log.V(1).Infof("begin proc mkdir\n") - cmd := pfsmod.MkdirCmd{} - - resp := response{} - if err := json.Unmarshal(body, &cmd); err != nil { - writeJSONResponse(w, string(body[:]), http.StatusOK, resp) - return - } - - log.V(1).Infof("request :%#v\n", cmd) - - cmdHandler(w, string(body[:]), &cmd, header) - log.V(1).Infof("end proc mkdir\n") - -} - -func touchHandler(w http.ResponseWriter, body []byte, header http.Header) { - log.V(1).Infof("begin proc touch\n") - cmd := pfsmod.TouchCmd{} - - resp := response{} - if err := json.Unmarshal(body, &cmd); err != nil { - writeJSONResponse(w, string(body[:]), http.StatusOK, resp) - return - } - - log.V(1).Infof("request :%#v\n", cmd) - - cmdHandler(w, string(body[:]), &cmd, header) - log.V(1).Infof("end proc touch\n") -} - -func getBody(r *http.Request) ([]byte, error) { - body, err := ioutil.ReadAll(io.LimitReader(r.Body, pfsmod.MaxJSONRequestSize)) - if err != nil { - return nil, err - } - - if err := r.Body.Close(); err != nil { - return nil, err - } - - return body, nil -} - -func getMethod(body []byte) (string, error) { - o, err := sjson.NewJson(body) - if err != nil { - return "", errors.New(pfsmod.StatusJSONErr) - } - - j := o.Get("method") - if j == nil { - return "", errors.New(pfsmod.StatusJSONErr) - } - - method, _ := j.String() - if err != nil { - return "", errors.New(pfsmod.StatusJSONErr) - } - - return method, nil -} - -func modifyFilesHandler(w http.ResponseWriter, r *http.Request) { - resp := response{} - body, err := getBody(r) - log.V(3).Infof(string(body[:])) - if err != nil { - resp.Err = err.Error() - writeJSONResponse(w, string(body[:]), http.StatusOK, resp) - return - } - - method, err := getMethod(body) - if err != nil { - resp.Err = err.Error() - writeJSONResponse(w, string(body[:]), http.StatusOK, resp) - return - } - - switch method { - case "rm": - rmHandler(w, body, r.Header) - case "touch": - touchHandler(w, body, r.Header) - case "mkdir": - mkdirHandler(w, body, r.Header) - default: - resp := response{} - writeJSONResponse(w, string(body[:]), http.StatusMethodNotAllowed, resp) - } -} - -// DeleteFilesHandler processes files' DELETE request. -func DeleteFilesHandler(w http.ResponseWriter, r *http.Request) { - log.V(1).Infof("begin DeleteFilesHandler") - - modifyFilesHandler(w, r) - - log.V(1).Infof("end DeleteFilesHandler") -} - -// PostFilesHandler processes files' POST request. -func PostFilesHandler(w http.ResponseWriter, r *http.Request) { - log.V(1).Infof("begin PostFilesHandler\n") - - modifyFilesHandler(w, r) - - log.V(1).Infof("end PostFilesHandler\n") -} - -func getChunkMetaHandler(w http.ResponseWriter, r *http.Request) { - log.V(1).Infof("begin proc getChunkMeta\n") - cmd, err := pfsmod.NewChunkMetaCmdFromURLParam(r) - resp := response{} - - if err != nil { - resp.Err = err.Error() - writeJSONResponse(w, r.URL.RawQuery, http.StatusOK, resp) - return - } - - cmdHandler(w, r.URL.RawQuery, cmd, r.Header) - log.V(1).Infof("end proc getChunkMeta\n") -} - -// GetChunkMetaHandler processes GET ChunkMeta request. -func GetChunkMetaHandler(w http.ResponseWriter, r *http.Request) { - method := r.URL.Query().Get("method") - - switch method { - case "GetChunkMeta": - getChunkMetaHandler(w, r) - default: - writeJSONResponse(w, r.URL.RawQuery, http.StatusMethodNotAllowed, response{}) - } -} - -func checkChunkAuthorization(path string, header http.Header, cmdName string) (string, response) { - resp := response{} - // Check user authorization. - user, err := getUserName(TokenURI+"/"+pfsmod.RESTTokenPath, header.Get("Authorization")) - if err != nil { - resp.Err = "get username error:" + err.Error() - return "", resp - } - - if err := pfsmod.ValidatePfsPath([]string{path}, user, cmdName); err != nil { - resp.Err = err.Error() - return user, resp - } - - return user, resp -} - -func getChunk(w http.ResponseWriter, r *http.Request, param *pfsmod.ChunkParam) error { - writer := multipart.NewWriter(w) - writer.SetBoundary(pfsmod.DefaultMultiPartBoundary) - - fileName := param.ToURLParam().Encode() - part, err := writer.CreateFormFile("chunk", fileName) - if err != nil { - return err - } - defer writer.Close() - - fr := pfsmod.FileHandle{} - if err := fr.Open(param.Path, os.O_RDONLY, 0); err != nil { - return err - } - defer fr.Close() - - err = fr.CopyN(part, param.Offset, param.Size) - if err != nil { - if err != io.EOF { - return err - } - - return errors.New(pfsmod.StatusFileEOF) - } - return nil -} - -// GetChunkHandler processes GET Chunk request. -func GetChunkHandler(w http.ResponseWriter, r *http.Request) { - log.V(1).Infof("begin proc GetChunkHandler") - - p, err := pfsmod.ParseChunkParam(r.URL.RawQuery) - if err != nil { - writeJSONResponse(w, r.URL.RawQuery, http.StatusOK, response{}) - return - } - - user, resp := checkChunkAuthorization(p.Path, r.Header, "GetChunk") - if resp.Err != "" { - writeJSONResponse(w, r.URL.RawQuery, http.StatusOK, resp) - return - } - log.Infof("user:%s download %s\n", user, p.String()) - - err = getChunk(w, r, p) - if err != nil { - if err.Error() != pfsmod.StatusFileEOF { - log.Errorln("cmd %s error info:%s", p.String(), err) - } - resp.Err = err.Error() - } - - writeJSONResponse(w, r.URL.RawQuery, http.StatusOK, resp) - log.V(1).Info("end proc GetChunkHandler") - return -} - -// PostChunkHandler processes POST Chunk request. -func PostChunkHandler(w http.ResponseWriter, r *http.Request) { - log.V(1).Infoln("") - log.V(1).Infof("begin proc PostChunksHandler\n") - - resp := response{} - partReader, err := r.MultipartReader() - if err != nil { - writeJSONResponse(w, "ChunkHandler", http.StatusBadRequest, resp) - return - } - - for { - part, err := partReader.NextPart() - if err == io.EOF { - break - } - - if part.FormName() != "chunk" { - continue - } - - param, err := pfsmod.ParseChunkParam(part.FileName()) - if err != nil { - resp.Err = err.Error() - writeJSONResponse(w, part.FileName(), http.StatusOK, resp) - return - } - - user, resp := checkChunkAuthorization(param.Path, r.Header, "PostChunk") - if resp.Err != "" { - writeJSONResponse(w, r.URL.RawQuery, http.StatusOK, resp) - return - } - - log.V(2).Infof("received post chunk param:%s\n", param.String()) - log.Infof("user:%s upload %s\n", user, param.String()) - - fw := pfsmod.FileHandle{} - if err := fw.Open(param.Path, os.O_RDWR, -1); err != nil { - resp.Err = err.Error() - writeJSONResponse(w, part.FileName(), http.StatusOK, resp) - } - - if err := fw.Write(part, param.Offset, param.Size); err != nil { - resp.Err = err.Error() - writeJSONResponse(w, part.FileName(), http.StatusOK, resp) - } - defer fw.Close() - - writeJSONResponse(w, part.FileName(), http.StatusOK, resp) - } - - log.V(1).Infof("end proc PostChunksHandler\n\n") -} diff --git a/go/filemanager/pfsserver/handler_test.go b/go/filemanager/pfsserver/handler_test.go deleted file mode 100644 index 40e938b2..00000000 --- a/go/filemanager/pfsserver/handler_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package pfsserver - -import ( - "crypto/md5" - "encoding/hex" - "fmt" - "io" - "mime/multipart" - "net/http/httptest" - "reflect" - "testing" - - pfsmod "github.com/PaddlePaddle/cloud/go/filemanager/pfsmodules" -) - -func TestGetChunk(t *testing.T) { - param := pfsmod.ChunkParam{} - param.Path = "./testdata/test_lt_chunk.dat" - param.Offset = 0 - param.Size = int64(4096) - - req := httptest.NewRequest("GET", "http://example.com/foo", nil) - w := httptest.NewRecorder() - err := getChunk(w, req, ¶m) - if err == nil || - err.Error() != pfsmod.StatusFileEOF { - t.Error(err) - } - - fmt.Println(w) - - partReader := multipart.NewReader(w.Body, pfsmod.DefaultMultiPartBoundary) - for { - part, err := partReader.NextPart() - if err == io.EOF { - break - } - - if part.FormName() != "chunk" { - continue - } - - m1, err := pfsmod.ParseChunkParam(part.FileName()) - if err != nil { - t.Error(err) - } - - if reflect.DeepEqual(m1, param) { - t.Error("m1 != param, m1:%v", m1) - } - - data := make([]byte, m1.Size) - n, err := io.ReadFull(part, data) - if err != io.ErrUnexpectedEOF { - t.Error(err) - } - - sum := md5.Sum(data[:n]) - checksum := hex.EncodeToString(sum[:]) - if checksum != "77c58f04583c86f78c51df158e3f35e8" { - t.Error("checksum error") - } - } -} diff --git a/go/filemanager/pfsserver/router.go b/go/filemanager/pfsserver/router.go deleted file mode 100644 index 2f4f6c86..00000000 --- a/go/filemanager/pfsserver/router.go +++ /dev/null @@ -1,46 +0,0 @@ -package pfsserver - -import ( - "net/http" - "time" - - log "github.com/golang/glog" - "github.com/gorilla/mux" -) - -func logger(inner http.Handler, name string) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - start := time.Now() - - inner.ServeHTTP(w, r) - - log.Infof( - "%s\t%s\t%s\t%s", - r.Method, - r.RequestURI, - name, - time.Since(start), - ) - }) -} - -// NewRouter returns a new Router struct. -func NewRouter() *mux.Router { - - router := mux.NewRouter().StrictSlash(true) - for _, route := range routes { - var handler http.Handler - - handler = route.HandlerFunc - handler = logger(handler, route.Name) - - router. - Methods(route.Method). - Path(route.Pattern). - Name(route.Name). - Handler(handler) - - } - - return router -} diff --git a/go/filemanager/pfsserver/routes.go b/go/filemanager/pfsserver/routes.go deleted file mode 100644 index 41c3e010..00000000 --- a/go/filemanager/pfsserver/routes.go +++ /dev/null @@ -1,59 +0,0 @@ -package pfsserver - -import ( - "net/http" - - pfsmod "github.com/PaddlePaddle/cloud/go/filemanager/pfsmodules" -) - -// Route represents route struct. -type Route struct { - Name string - Method string - Pattern string - HandlerFunc http.HandlerFunc -} - -// Routes is the a Route array -type Routes []Route - -var routes = Routes{ - Route{ - "GetFiles", - "GET", - "/" + pfsmod.RESTFilesPath, - GetFilesHandler, - }, - Route{ - "PostFiles", - "POST", - "/" + pfsmod.RESTFilesPath, - PostFilesHandler, - }, - Route{ - "DeleteFiles", - "DELETE", - "/" + pfsmod.RESTFilesPath, - DeleteFilesHandler, - }, - - Route{ - "GetChunksMeta", - "GET", - "/" + pfsmod.RESTChunksPath, - GetChunkMetaHandler, - }, - Route{ - "GetChunksData", - "GET", - "/" + pfsmod.RESTChunksStoragePath, - GetChunkHandler, - }, - - Route{ - "PostChunksData", - "POST", - "/" + pfsmod.RESTChunksStoragePath, - PostChunkHandler, - }, -} diff --git a/go/filemanager/pfsserver/testdata/test_lt_chunk.dat b/go/filemanager/pfsserver/testdata/test_lt_chunk.dat deleted file mode 100644 index 06e567b1..00000000 --- a/go/filemanager/pfsserver/testdata/test_lt_chunk.dat +++ /dev/null @@ -1,7 +0,0 @@ -1 -2 -3 -4 -5 -6 -7 diff --git a/go/paddlecloud/delete.go b/go/paddlecloud/delete.go deleted file mode 100644 index 7f0d1a77..00000000 --- a/go/paddlecloud/delete.go +++ /dev/null @@ -1,52 +0,0 @@ -package paddlecloud - -import ( - "context" - "flag" - "fmt" - "os" - - "github.com/google/subcommands" -) - -// DeleteCommand do job killings -type DeleteCommand struct { -} - -// Name is subcommands name -func (*DeleteCommand) Name() string { return "delete" } - -// Synopsis is subcommands synopsis -func (*DeleteCommand) Synopsis() string { return "Delete the specify resource." } - -// Usage is subcommands usage -func (*DeleteCommand) Usage() string { - return `delete registry [registry-name] -` -} - -// SetFlags registers subcommands flags -func (p *DeleteCommand) SetFlags(f *flag.FlagSet) { -} - -// Execute kill command -func (p *DeleteCommand) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() != 2 { - f.Usage() - return subcommands.ExitFailure - } - if f.Arg(0) == RegistryCmdName { - name := f.Arg(1) - r := RegistryCmd{SecretName: KubeRegistryName(name)} - err := r.Delete() - if err != nil { - fmt.Fprintf(os.Stderr, "error delete registry: %v\n", err) - return subcommands.ExitFailure - } - fmt.Fprintf(os.Stdout, "registry: [%s] is deleted\n", name) - } else { - f.Usage() - return subcommands.ExitFailure - } - return subcommands.ExitSuccess -} diff --git a/go/paddlecloud/get.go b/go/paddlecloud/get.go deleted file mode 100644 index 4f0719be..00000000 --- a/go/paddlecloud/get.go +++ /dev/null @@ -1,248 +0,0 @@ -package paddlecloud - -import ( - "context" - "encoding/json" - "flag" - "fmt" - "net/url" - "os" - "strings" - "text/tabwriter" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/google/subcommands" -) - -// GetCommand exports get subcommand for fetching status -type GetCommand struct { - a bool -} - -// Name is subcommands name -func (*GetCommand) Name() string { return "get" } - -// Synopsis is subcommands synopsis -func (*GetCommand) Synopsis() string { return "Print resources" } - -// Usage is subcommands usage -func (*GetCommand) Usage() string { - return `get [jobs|workers|registry [jobname]|quota]: - Print resources. -` -} - -// SetFlags registers subcommands flags -func (p *GetCommand) SetFlags(f *flag.FlagSet) { - f.BoolVar(&p.a, "a", false, "Get all resources.") -} - -// Execute get command -func (p *GetCommand) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() < 1 || f.NArg() > 2 { - f.Usage() - return subcommands.ExitFailure - } - if f.Arg(0) == "jobs" { - jobs() - } else if f.Arg(0) == "quota" { - quota() - } else if f.Arg(0) == "registry" { - registry() - } else if f.Arg(0) == "workers" { - if f.NArg() != 2 { - f.Usage() - return subcommands.ExitFailure - } - workers(f.Arg(1)) - } else { - f.Usage() - return subcommands.ExitFailure - } - - return subcommands.ExitSuccess -} - -func workers(jobname string) error { - queryMap := url.Values{} - queryMap.Add("jobname", jobname) - respBody, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/workers/", queryMap) - if err != nil { - fmt.Fprintf(os.Stderr, "error getting workers: %v\n", err) - return err - } - var respObj interface{} - err = json.Unmarshal(respBody, &respObj) - if err != nil { - fmt.Fprintf(os.Stderr, "bad server return: %s", respBody) - return err - } - - w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0) - - fmt.Fprintln(w, "NAME\tSTATUS\tSTART\tEXIT_CODE\tMSG\t") - if err != nil { - fmt.Fprintf(os.Stderr, "error parsing: %s", err) - return err - } - for _, item := range respObj.(map[string]interface{})["items"].([]interface{}) { - var exitCode, msg interface{} - terminateState := item.(map[string]interface{})["status"].(map[string]interface{})["container_statuses"].([]interface{})[0].(map[string]interface{})["state"].(map[string]interface{})["terminated"] - - if terminateState != nil { - exitCode = terminateState.(map[string]interface{})["exit_code"] - msg = terminateState.(map[string]interface{})["message"] - } - - fmt.Fprintf(w, "%s\t%s\t%v\t%v\t%v\t\n", - item.(map[string]interface{})["metadata"].(map[string]interface{})["name"].(string), - item.(map[string]interface{})["status"].(map[string]interface{})["phase"].(string), - item.(map[string]interface{})["status"].(map[string]interface{})["start_time"], - exitCode, msg) - } - w.Flush() - return nil -} -func registry() error { - respBody, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/registry/", nil) - if err != nil { - fmt.Fprintf(os.Stderr, "err getting registry secret: %v\n", err) - return err - } - var respObj interface{} - err = json.Unmarshal(respBody, &respObj) - if err != nil { - return err - } - items := respObj.(map[string]interface{})["msg"].(map[string]interface{})["items"].([]interface{}) - w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0) - if len(items) >= 0 { - fmt.Fprintf(w, "ID\tNAME\tDATA\n") - } - idx := 0 - for _, r := range items { - metadata := r.(map[string]interface{})["metadata"].(map[string]interface{}) - name := RegistryName(metadata["name"].(string)) - if len(name) != 0 { - cTime := metadata["creation_timestamp"].(string) - fmt.Fprintf(w, "%d\t%s\t%s\n", idx, name, cTime) - idx++ - } - } - w.Flush() - return err -} - -func jobs() error { - // NOTE: a job include pserver replicaset and a trainers job, display them - // get pserver replicaset - // "status": { - // "available_replicas": 1, - // "conditions": null, - // "fully_labeled_replicas": 1, - // "observed_generation": 1, - // "ready_replicas": 1, - // "replicas": 1 - var respObj interface{} - - respBody, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/pservers/", nil) - if err != nil { - fmt.Fprintf(os.Stderr, "error getting pservers: %v\n", err) - return err - } - err = json.Unmarshal(respBody, &respObj) - if err != nil { - return err - } - - pserverItems := respObj.(map[string]interface{})["items"].([]interface{}) - - // get kubernetes jobs info - respBody, err = restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/jobs/", nil) - if err != nil { - fmt.Fprintf(os.Stderr, "error getting jobs: %v\n", err) - return err - } - - err = json.Unmarshal(respBody, &respObj) - if err != nil { - return err - } - itemsRaw, ok := respObj.(map[string]interface{})["items"] - if !ok { - // nothing to print - return nil - } - items := itemsRaw.([]interface{}) - // NOTE: terminating section may not exist - var termJobs []interface{} - if termJobsRaw, ok := respObj.(map[string]interface{})["terminating"]; ok { - termJobs = termJobsRaw.([]interface{}) - } else { - termJobs = []interface{}{} - } - - w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0) - if len(items) >= 0 { - fmt.Fprintf(w, "NAME\tACTIVE\tSUCC\tFAIL\tSTART\tCOMP\tPS_READY\tPS_TOTAL\t\n") - } - for _, j := range items { - jobnameTrainer := j.(map[string]interface{})["metadata"].(map[string]interface{})["name"].(string) - jobnameParts := strings.Split(jobnameTrainer, "-") - jobname := strings.Join(jobnameParts[0:len(jobnameParts)-1], "-") - // get info for job pservers - var psrsname string - var readyReplicas, replicas interface{} - for _, psrs := range pserverItems { - psrsname = psrs.(map[string]interface{})["metadata"].(map[string]interface{})["name"].(string) - if psrsname == jobname+"-pserver" { - readyReplicas = psrs.(map[string]interface{})["status"].(map[string]interface{})["ready_replicas"] - replicas = psrs.(map[string]interface{})["status"].(map[string]interface{})["replicas"] - break - } - } - - fmt.Fprintf(w, "%s\t%v\t%v\t%v\t%v\t%v\t%v\t%v\t\n", - jobname, - j.(map[string]interface{})["status"].(map[string]interface{})["active"], - j.(map[string]interface{})["status"].(map[string]interface{})["succeeded"], - j.(map[string]interface{})["status"].(map[string]interface{})["failed"], - j.(map[string]interface{})["status"].(map[string]interface{})["start_time"], - j.(map[string]interface{})["status"].(map[string]interface{})["completion_time"], - readyReplicas, replicas) - } - - for _, t := range termJobs { - fmt.Fprintf(w, "%s\t%s\t%v\t%v\t%v\t%v\t%v\t%v\t\n", - t, - "Terminating", - nil, nil, nil, nil, nil, nil) - } - w.Flush() - return err -} - -func quota() error { - respBody, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/quota/", nil) - if err != nil { - fmt.Fprintf(os.Stderr, "error getting quota: %v\n", err) - return err - } - var respObj interface{} - err = json.Unmarshal(respBody, &respObj) - if err != nil { - return err - } - w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0) - fmt.Fprintf(w, "RESOURCE\tLIMIT\t\n") - for _, item := range respObj.(map[string]interface{})["items"].([]interface{}) { - fmt.Fprintf(w, "-----\t-----\t\n") - hardLimits := item.(map[string]interface{})["status"].(map[string]interface{})["hard"].(map[string]interface{}) - fmt.Fprintf(w, "Memory\t%s\t\n", hardLimits["requests.memory"]) - fmt.Fprintf(w, "CPU\t%s\t\n", hardLimits["requests.cpu"]) - fmt.Fprintf(w, "GPU\t%s\t\n", hardLimits["alpha.kubernetes.io/nvidia-gpu"]) - fmt.Fprintf(w, "MaxParallism\t%s\t\n", hardLimits["pods"]) - } - w.Flush() - return nil -} diff --git a/go/paddlecloud/kill.go b/go/paddlecloud/kill.go deleted file mode 100644 index 7c3eca4c..00000000 --- a/go/paddlecloud/kill.go +++ /dev/null @@ -1,61 +0,0 @@ -package paddlecloud - -import ( - "context" - "encoding/json" - "flag" - "fmt" - "os" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/google/subcommands" -) - -// KillCommand do job killings -type KillCommand struct { - rm bool -} - -// Name is subcommands name -func (*KillCommand) Name() string { return "kill" } - -// Synopsis is subcommands synopsis -func (*KillCommand) Synopsis() string { return "Stop the job. -rm will remove the job from history." } - -// Usage is subcommands usage -func (*KillCommand) Usage() string { - return `kill: - Stop the job. -rm will remove the job from history. -` -} - -// SetFlags registers subcommands flags -func (p *KillCommand) SetFlags(f *flag.FlagSet) { - f.BoolVar(&p.rm, "rm", false, "remove the job from history") -} - -// Execute kill command -func (p *KillCommand) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() != 1 { - f.Usage() - return subcommands.ExitFailure - } - - body, err := restclient.DeleteCall(Config.ActiveConfig.Endpoint+"/api/v1/jobs/", []byte("{\"jobname\": \""+f.Arg(0)+"\"}")) - if err != nil { - fmt.Fprintf(os.Stderr, "error kill job: %v\n", err) - return subcommands.ExitFailure - } - var jsonObj interface{} - err = json.Unmarshal(body, &jsonObj) - if err != nil { - fmt.Fprintf(os.Stderr, "error kill job: %v\n", err) - return subcommands.ExitFailure - } - respCode := jsonObj.(map[string]interface{})["code"].(float64) - if respCode != 200 { - fmt.Fprintf(os.Stderr, "error kill job: %s\n", jsonObj.(map[string]interface{})["msg"].(string)) - } - - return subcommands.ExitSuccess -} diff --git a/go/paddlecloud/logs.go b/go/paddlecloud/logs.go deleted file mode 100644 index 526edbae..00000000 --- a/go/paddlecloud/logs.go +++ /dev/null @@ -1,66 +0,0 @@ -package paddlecloud - -import ( - "context" - "encoding/json" - "flag" - "fmt" - "net/url" - "os" - "strconv" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/google/subcommands" -) - -// LogsCommand print aggregated job logs -type LogsCommand struct { - n int - w string -} - -// Name is subcommands name -func (*LogsCommand) Name() string { return "logs" } - -// Synopsis is subcommands synopsis -func (*LogsCommand) Synopsis() string { return "Print logs of the job." } - -// Usage is subcommands usage -func (*LogsCommand) Usage() string { - return `logs : - Print logs of the job. - Options: -` -} - -// SetFlags registers subcommands flags -func (p *LogsCommand) SetFlags(f *flag.FlagSet) { - f.IntVar(&p.n, "n", 10, "Number of lines to print from tail.") - f.StringVar(&p.w, "w", "", "Print logs for a single worker.") -} - -// Execute logs command -func (p *LogsCommand) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() != 1 { - f.Usage() - return subcommands.ExitFailure - } - - queryMap := url.Values{} - queryMap.Add("n", strconv.FormatInt(int64(p.n), 10)) - queryMap.Add("w", p.w) - queryMap.Add("jobname", f.Arg(0)) - - respBody, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/logs", queryMap) - if err != nil { - fmt.Fprintf(os.Stderr, "call paddle cloud error %v, %v", err, respBody) - return subcommands.ExitFailure - } - var respObj interface{} - errJSON := json.Unmarshal(respBody, &respObj) - if errJSON != nil { - fmt.Fprintf(os.Stderr, "bad server return: %s", respBody) - } - fmt.Printf("%s\n", respObj.(map[string]interface{})["msg"].(string)) - return subcommands.ExitSuccess -} diff --git a/go/paddlecloud/publish.go b/go/paddlecloud/publish.go deleted file mode 100644 index c7ec0d73..00000000 --- a/go/paddlecloud/publish.go +++ /dev/null @@ -1,57 +0,0 @@ -package paddlecloud - -import ( - "context" - "flag" - "fmt" - "net/url" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/google/subcommands" -) - -// PublishCmd used for publish file for download and list published files. -type PublishCmd struct { -} - -// Name is subcommands name. -func (*PublishCmd) Name() string { return "publish" } - -// Synopsis is subcommands synopsis. -func (*PublishCmd) Synopsis() string { - return "publish file for download and list published files." -} - -// Usage is subcommands Usage. -func (*PublishCmd) Usage() string { - return `publish [path] - path must be like /pfs/[datacenter]/home/[username] - if path not specified, will return a list of current published files. -` -} - -// SetFlags registers subcommands flags. -func (p *PublishCmd) SetFlags(f *flag.FlagSet) { -} - -// Execute publish ops. -func (p *PublishCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() > 1 { - f.Usage() - return subcommands.ExitFailure - } - if f.NArg() == 0 { - queries := url.Values{} - ret, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/publish/", queries) - if err != nil { - return subcommands.ExitFailure - } - fmt.Printf("%s\n", ret) - } else if f.NArg() == 1 { - queries := url.Values{} - queries.Set("path", f.Arg(0)) - restclient.PostCall(Config.ActiveConfig.Endpoint+"/api/v1/publish/", []byte("{\"path\": \""+f.Arg(0)+"\"}")) - } - - return subcommands.ExitSuccess -} diff --git a/go/paddlecloud/registry.go b/go/paddlecloud/registry.go deleted file mode 100644 index 04429c49..00000000 --- a/go/paddlecloud/registry.go +++ /dev/null @@ -1,123 +0,0 @@ -package paddlecloud - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "os" - "strings" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/golang/glog" - "github.com/google/subcommands" -) - -const ( - // RegistryCmdName is subcommand name - RegistryCmdName = "registry" - // RegistryPrefix is the prefix for Kubernetes secret name - RegistryPrefix = "pcloud-registry" -) - -// RegistryCmd is Docker registry secret information -type RegistryCmd struct { - SecretName string `json:"name"` - Username string `json:"username"` - Password string `json:"password"` - Server string `json:"server"` -} - -// Name is the subcommand name -func (r *RegistryCmd) Name() string { return RegistryCmdName } - -// Synopsis is the subcommand's synopsis -func (r *RegistryCmd) Synopsis() string { return "Add registry secret on paddlecloud." } - -// Usage is the subcommand's usage -func (r *RegistryCmd) Usage() string { - return `registry [add|del]: -` -} - -// SetFlags registers subcommands flags. -func (r *RegistryCmd) SetFlags(f *flag.FlagSet) { - f.StringVar(&r.SecretName, "name", "", "registry secret name") - f.StringVar(&r.Username, "username", "", "your Docker registry username") - f.StringVar(&r.Password, "password", "", "your Docker registry password") - f.StringVar(&r.Server, "server", "", "your Docker registry Server") -} -func (r *RegistryCmd) addRegistrySecret() error { - jsonString, err := json.Marshal(r) - if err != nil { - return err - } - glog.V(10).Infof("Add registry secret: %s to %s\n", jsonString, Config.ActiveConfig.Endpoint+"/api/v1/registry/") - respBody, err := restclient.PostCall(Config.ActiveConfig.Endpoint+"/api/v1/registry/", jsonString) - if err != nil { - return err - } - var respObj interface{} - if err = json.Unmarshal(respBody, &respObj); err != nil { - return err - } - // FIXME: Return an error if error message is not empty. Use response code instead - errMsg := respObj.(map[string]interface{})["msg"].(string) - if len(errMsg) > 0 { - return errors.New(errMsg) - } - return nil -} - -// Delete the specify registry -func (r *RegistryCmd) Delete() error { - jsonString, err := json.Marshal(r) - if err != nil { - return err - } - glog.V(10).Infof("Delete registry secret: %s to %s\n", jsonString, Config.ActiveConfig.Endpoint+"/api/v1/registry/") - respBody, err := restclient.DeleteCall(Config.ActiveConfig.Endpoint+"/api/v1/registry/", jsonString) - if err != nil { - return err - } - - var respObj interface{} - if err = json.Unmarshal(respBody, &respObj); err != nil { - return err - } - // FIXME: Return an error if error message is not empty. Use response code instead - errMsg := respObj.(map[string]interface{})["msg"].(string) - if len(errMsg) > 0 { - return errors.New(errMsg) - } - return nil -} - -// Execute runs RegistryCmd command. -func (r *RegistryCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if r.SecretName == "" || r.Username == "" || r.Password == "" || r.Server == "" { - f.Usage() - return subcommands.ExitFailure - } - r.SecretName = strings.Join([]string{RegistryPrefix, r.SecretName}, "-") - err := r.addRegistrySecret() - if err != nil { - fmt.Fprintf(os.Stderr, "add registry secret failed: %s\n", err) - return subcommands.ExitFailure - } - return subcommands.ExitSuccess -} - -// KubeRegistryName add a prefix for the name -func KubeRegistryName(name string) string { - return RegistryPrefix + "-" + name -} - -// RegistryName is registry secret name for PaddleCloud -func RegistryName(name string) string { - if strings.HasPrefix(name, RegistryPrefix) { - return name[len(RegistryPrefix)+1 : len(name)] - } - return "" -} diff --git a/go/paddlecloud/simplefile.go b/go/paddlecloud/simplefile.go deleted file mode 100644 index bf69b99c..00000000 --- a/go/paddlecloud/simplefile.go +++ /dev/null @@ -1,196 +0,0 @@ -package paddlecloud - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "io" - "net/url" - "os" - "path" - "path/filepath" - "strings" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/google/subcommands" -) - -// SimpleFileCmd define the subcommand of simple file operations. -type SimpleFileCmd struct { -} - -// Name is subcommands name. -func (*SimpleFileCmd) Name() string { return "file" } - -// Synopsis is subcommands synopsis. -func (*SimpleFileCmd) Synopsis() string { return "Simple file operations." } - -// Usage is subcommands Usage. -func (*SimpleFileCmd) Usage() string { - return `file [put|get] or file ls : - dst must be like /pfs/[datacenter]/home/[username] - Options: -` -} - -// SetFlags registers subcommands flags. -func (p *SimpleFileCmd) SetFlags(f *flag.FlagSet) { -} - -// Execute file ops. -func (p *SimpleFileCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() < 1 || f.NArg() > 3 { - f.Usage() - return subcommands.ExitFailure - } - switch f.Arg(0) { - case "put": - err := putFiles(f.Arg(1), f.Arg(2)) - if err != nil { - fmt.Fprintf(os.Stderr, "put file error: %s\n", err) - return subcommands.ExitFailure - } - case "get": - err := getFile(f.Arg(1), f.Arg(2)) - if err != nil { - fmt.Fprintf(os.Stderr, "get file error: %s\n", err) - return subcommands.ExitFailure - } - case "ls": - err := lsFile(f.Arg(1)) - if err != nil { - fmt.Fprintf(os.Stderr, "ls file error: %s\n", err) - return subcommands.ExitFailure - } - default: - f.Usage() - return subcommands.ExitFailure - } - return subcommands.ExitSuccess -} - -func lsFile(dst string) error { - query := url.Values{} - query.Set("path", dst) - query.Set("dc", Config.ActiveConfig.Name) - respStr, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/filelist/", query) - if err != nil { - return err - } - var respObj interface{} - if err = json.Unmarshal(respStr, &respObj); err != nil { - return err - } - // FIXME: Print an error if error message is not empty. Use response code instead - errMsg := respObj.(map[string]interface{})["msg"].(string) - if len(errMsg) > 0 { - return errors.New("list file error: " + errMsg) - } - items := respObj.(map[string]interface{})["items"].([]interface{}) - for _, fn := range items { - fmt.Println(fn.(string)) - } - return nil -} - -func putFiles(src string, dest string) error { - f, err := os.Stat(src) - if err != nil { - return err - } - if strings.HasPrefix(src, "..") { - return errors.New("src path should be inside your submiting path") - } - switch mode := f.Mode(); { - case mode.IsDir(): - if err := filepath.Walk(src, func(path string, info os.FileInfo, err error) error { - if info.Mode().IsRegular() { - srcs := strings.Split(filepath.Clean(src), string(os.PathSeparator)) - paths := strings.Split(path, string(os.PathSeparator)) - var destFile string - if strings.HasSuffix(src, "/") { - destFile = filepath.Join(dest, strings.Join(paths[len(srcs):len(paths)], string(os.PathSeparator))) - } else { - destFile = filepath.Join(dest, strings.Join(paths[len(srcs)-1:len(paths)], string(os.PathSeparator))) - } - putFile(path, destFile) - } - return nil - }); err != nil { - return err - } - - case mode.IsRegular(): - _, f := filepath.Split(src) - return putFile(src, filepath.Join(dest, f)) - } - return nil -} - -func putFile(src string, dest string) error { - fmt.Printf("Uploading ... %s %s\n", src, dest) - query := url.Values{} - _, srcFile := path.Split(src) - destDir, destFile := path.Split(dest) - var destFullPath string - if len(destFile) == 0 { - destFullPath = path.Join(destDir, srcFile) - } else { - destFullPath = dest - } - query.Set("path", destFullPath) - respStr, err := restclient.PostFile(Config.ActiveConfig.Endpoint+"/api/v1/file/", src, query) - if err != nil { - return err - } - var respObj interface{} - if err = json.Unmarshal(respStr, &respObj); err != nil { - return err - } - // FIXME: Print an error if error message is not empty. Use response code instead - errMsg := respObj.(map[string]interface{})["msg"].(string) - if len(errMsg) > 0 { - fmt.Fprintf(os.Stderr, "upload file error: %s\n", errMsg) - } - return nil -} - -func getFile(src string, dest string) error { - query := url.Values{} - query.Set("path", src) - req, err := restclient.MakeRequestToken(Config.ActiveConfig.Endpoint+"/api/v1/file/", "GET", nil, "", query) - if err != nil { - return err - } - resp, err := restclient.HTTPClient.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.Status != restclient.HTTPOK { - return errors.New("server error: " + resp.Status) - } - _, srcFile := path.Split(src) - destDir, destFile := path.Split(dest) - var destFullPath string - if len(destFile) == 0 { - destFullPath = path.Join(destDir, srcFile) - } else { - destFullPath = dest - } - if _, err = os.Stat(destFullPath); err == nil { - return errors.New("file already exist: " + destFullPath) - } - out, err := os.Create(destFullPath) - if err != nil { - return err - } - defer out.Close() - _, err = io.Copy(out, resp.Body) - if err != nil { - return err - } - return nil -} diff --git a/go/paddlecloud/submit.go b/go/paddlecloud/submit.go deleted file mode 100644 index 36f19c57..00000000 --- a/go/paddlecloud/submit.go +++ /dev/null @@ -1,166 +0,0 @@ -package paddlecloud - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "os" - "path" - "strings" - - "github.com/PaddlePaddle/cloud/go/utils/config" - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/golang/glog" - "github.com/google/subcommands" -) - -const ( - invalidJobName = "jobname can not contain '.' or '_'" -) - -// Config is global config object for paddlecloud commandline -var Config *config.SubmitConfig - -// SubmitCmd define the subcommand of submitting paddle training jobs. -type SubmitCmd struct { - Jobname string `json:"name"` - Jobpackage string `json:"jobPackage"` - Parallelism int `json:"parallelism"` - CPU int `json:"cpu"` - GPU int `json:"gpu"` - Memory string `json:"memory"` - Pservers int `json:"pservers"` - PSCPU int `json:"pscpu"` - PSMemory string `json:"psmemory"` - Entry string `json:"entry"` - Topology string `json:"topology"` - Datacenter string `json:"datacenter"` - Passes int `json:"passes"` - // docker image to run jobs - Image string `json:"image"` - Registry string `json:"registry"` - // Alpha features: - // TODO: separate API versions - FaultTolerant bool `json:"faulttolerant"` - MaxInstance int `json:"maxInstance"` - MinInstance int `json:"minInstance"` -} - -// Name is subcommands name. -func (*SubmitCmd) Name() string { return "submit" } - -// Synopsis is subcommands synopsis. -func (*SubmitCmd) Synopsis() string { return "Submit job to PaddlePaddle Cloud." } - -// Usage is subcommands Usage. -func (*SubmitCmd) Usage() string { - return `submit [options] : - Submit job to PaddlePaddle Cloud. - Options: -` -} - -// SetFlags registers subcommands flags. -func (p *SubmitCmd) SetFlags(f *flag.FlagSet) { - f.StringVar(&p.Jobname, "jobname", "paddle-cluster-job", "Cluster job name.") - f.IntVar(&p.Parallelism, "parallelism", 1, "Number of parrallel trainers. Defaults to 1.") - f.IntVar(&p.CPU, "cpu", 1, "CPU resource each trainer will use. Defaults to 1.") - f.IntVar(&p.GPU, "gpu", 0, "GPU resource each trainer will use. Defaults to 0.") - f.StringVar(&p.Memory, "memory", "1Gi", " Memory resource each trainer will use. Defaults to 1Gi.") - f.IntVar(&p.Pservers, "pservers", 0, "Number of parameter servers. Defaults equal to -p") - f.IntVar(&p.PSCPU, "pscpu", 1, "Parameter server CPU resource. Defaults to 1.") - f.StringVar(&p.PSMemory, "psmemory", "1Gi", "Parameter server momory resource. Defaults to 1Gi.") - f.StringVar(&p.Entry, "entry", "", "Command of starting trainer process. Defaults to paddle train") - f.StringVar(&p.Topology, "topology", "", "Will Be Deprecated .py file contains paddle v1 job configs") - f.IntVar(&p.Passes, "passes", 1, "Pass count for training job") - f.StringVar(&p.Image, "image", "", "Runtime Docker image for the job") - f.StringVar(&p.Registry, "registry", "", "Registry secret name for the runtime Docker image") - f.IntVar(&p.MinInstance, "min_instance", 1, "The minimum number of trainers"+ - "only used fo faulttolerant. Default to 1.") - f.IntVar(&p.MaxInstance, "max_instance", 1, "The minimum number of trainers,"+ - "only used for faulttolerant, Default to 1.") - f.BoolVar(&p.FaultTolerant, "faulttolerant", false, "if true, use new fault-tolerant pservers") -} - -// Execute submit command. -func (p *SubmitCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() != 1 { - f.Usage() - return subcommands.ExitFailure - } - // default pservers count equals to trainers count. - if p.Pservers == 0 { - p.Pservers = p.Parallelism - } - p.Jobpackage = f.Arg(0) - p.Datacenter = Config.ActiveConfig.Name - - s := NewSubmitter(p) - errS := s.Submit(f.Arg(0), p.Jobname) - if errS != nil { - fmt.Fprintf(os.Stderr, "error submiting job: %v\n", errS) - return subcommands.ExitFailure - } - fmt.Printf("%s submited.\n", p.Jobname) - return subcommands.ExitSuccess -} - -// Submitter submit job to cloud. -type Submitter struct { - args *SubmitCmd -} - -// NewSubmitter returns a submitter object. -func NewSubmitter(cmd *SubmitCmd) *Submitter { - s := Submitter{cmd} - return &s -} - -// Submit current job. -func (s *Submitter) Submit(jobPackage string, jobName string) error { - if err := checkJobName(jobName); err != nil { - return err - } - // if jobPackage is not a local dir, skip uploading package. - _, pkgerr := os.Stat(jobPackage) - if pkgerr == nil { - dest := path.Join("/pfs", Config.ActiveConfig.Name, "home", Config.ActiveConfig.Username, "jobs", jobName) - if !strings.HasSuffix(jobPackage, "/") { - jobPackage = jobPackage + "/" - } - err := putFiles(jobPackage, dest) - if err != nil { - return err - } - } else if os.IsNotExist(pkgerr) { - glog.Warning("jobpackage not a local dir, skip upload.") - } - // 2. call paddlecloud server to create kubernetes job - jsonString, err := json.Marshal(s.args) - if err != nil { - return err - } - glog.V(10).Infof("Submitting job: %s to %s\n", jsonString, Config.ActiveConfig.Endpoint+"/api/v1/jobs") - respBody, err := restclient.PostCall(Config.ActiveConfig.Endpoint+"/api/v1/jobs/", jsonString) - if err != nil { - return err - } - var respObj interface{} - if err = json.Unmarshal(respBody, &respObj); err != nil { - return err - } - // FIXME: Return an error if error message is not empty. Use response code instead - errMsg := respObj.(map[string]interface{})["msg"].(string) - if len(errMsg) > 0 { - return errors.New(errMsg) - } - return nil -} -func checkJobName(jobName string) error { - if strings.Contains(jobName, "_") || strings.Contains(jobName, ".") { - return errors.New(invalidJobName) - } - return nil -} diff --git a/go/paddlectl/simplefile.go b/go/paddlectl/simplefile.go deleted file mode 100644 index 3258b0f6..00000000 --- a/go/paddlectl/simplefile.go +++ /dev/null @@ -1,198 +0,0 @@ -package paddlectl - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "io" - "net/url" - "os" - "path" - "path/filepath" - "strings" - - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/google/subcommands" -) - -// TODO(gongwb): rm simplefile.go under paddlecloud/ - -// SimpleFileCmd define the subcommand of simple file operations. -type SimpleFileCmd struct { -} - -// Name is subcommands name. -func (*SimpleFileCmd) Name() string { return "file" } - -// Synopsis is subcommands synopsis. -func (*SimpleFileCmd) Synopsis() string { return "Simple file operations." } - -// Usage is subcommands Usage. -func (*SimpleFileCmd) Usage() string { - return `file [put|get] or file ls : - dst must be like /pfs/[datacenter]/home/[username] - Options: -` -} - -// SetFlags registers subcommands flags. -func (p *SimpleFileCmd) SetFlags(f *flag.FlagSet) { -} - -// Execute file ops. -func (p *SimpleFileCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() < 1 || f.NArg() > 3 { - f.Usage() - return subcommands.ExitFailure - } - switch f.Arg(0) { - case "put": - err := putFiles(f.Arg(1), f.Arg(2)) - if err != nil { - fmt.Fprintf(os.Stderr, "put file error: %s\n", err) - return subcommands.ExitFailure - } - case "get": - err := getFile(f.Arg(1), f.Arg(2)) - if err != nil { - fmt.Fprintf(os.Stderr, "get file error: %s\n", err) - return subcommands.ExitFailure - } - case "ls": - err := lsFile(f.Arg(1)) - if err != nil { - fmt.Fprintf(os.Stderr, "ls file error: %s\n", err) - return subcommands.ExitFailure - } - default: - f.Usage() - return subcommands.ExitFailure - } - return subcommands.ExitSuccess -} - -func lsFile(dst string) error { - query := url.Values{} - query.Set("path", dst) - query.Set("dc", Config.ActiveConfig.Name) - respStr, err := restclient.GetCall(Config.ActiveConfig.Endpoint+"/api/v1/filelist/", query) - if err != nil { - return err - } - var respObj interface{} - if err = json.Unmarshal(respStr, &respObj); err != nil { - return err - } - // FIXME: Print an error if error message is not empty. Use response code instead - errMsg := respObj.(map[string]interface{})["msg"].(string) - if len(errMsg) > 0 { - return errors.New("list file error: " + errMsg) - } - items := respObj.(map[string]interface{})["items"].([]interface{}) - for _, fn := range items { - fmt.Println(fn.(string)) - } - return nil -} - -func putFiles(src string, dest string) error { - f, err := os.Stat(src) - if err != nil { - return err - } - if strings.HasPrefix(src, "..") { - return errors.New("src path should be inside your submiting path") - } - switch mode := f.Mode(); { - case mode.IsDir(): - if err := filepath.Walk(src, func(path string, info os.FileInfo, err error) error { - if info.Mode().IsRegular() { - srcs := strings.Split(filepath.Clean(src), string(os.PathSeparator)) - paths := strings.Split(path, string(os.PathSeparator)) - var destFile string - if strings.HasSuffix(src, "/") { - destFile = filepath.Join(dest, strings.Join(paths[len(srcs):len(paths)], string(os.PathSeparator))) - } else { - destFile = filepath.Join(dest, strings.Join(paths[len(srcs)-1:len(paths)], string(os.PathSeparator))) - } - putFile(path, destFile) - } - return nil - }); err != nil { - return err - } - - case mode.IsRegular(): - _, f := filepath.Split(src) - return putFile(src, filepath.Join(dest, f)) - } - return nil -} - -func putFile(src string, dest string) error { - fmt.Printf("Uploading ... %s %s\n", src, dest) - query := url.Values{} - _, srcFile := path.Split(src) - destDir, destFile := path.Split(dest) - var destFullPath string - if len(destFile) == 0 { - destFullPath = path.Join(destDir, srcFile) - } else { - destFullPath = dest - } - query.Set("path", destFullPath) - respStr, err := restclient.PostFile(Config.ActiveConfig.Endpoint+"/api/v1/file/", src, query) - if err != nil { - return err - } - var respObj interface{} - if err = json.Unmarshal(respStr, &respObj); err != nil { - return err - } - // FIXME: Print an error if error message is not empty. Use response code instead - errMsg := respObj.(map[string]interface{})["msg"].(string) - if len(errMsg) > 0 { - fmt.Fprintf(os.Stderr, "upload file error: %s\n", errMsg) - } - return nil -} - -func getFile(src string, dest string) error { - query := url.Values{} - query.Set("path", src) - req, err := restclient.MakeRequestToken(Config.ActiveConfig.Endpoint+"/api/v1/file/", "GET", nil, "", query) - if err != nil { - return err - } - resp, err := restclient.HTTPClient.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.Status != restclient.HTTPOK { - return errors.New("server error: " + resp.Status) - } - _, srcFile := path.Split(src) - destDir, destFile := path.Split(dest) - var destFullPath string - if len(destFile) == 0 { - destFullPath = path.Join(destDir, srcFile) - } else { - destFullPath = dest - } - if _, err = os.Stat(destFullPath); err == nil { - return errors.New("file already exist: " + destFullPath) - } - out, err := os.Create(destFullPath) - if err != nil { - return err - } - defer out.Close() - _, err = io.Copy(out, resp.Body) - if err != nil { - return err - } - return nil -} diff --git a/go/paddlectl/submit.go b/go/paddlectl/submit.go deleted file mode 100644 index 9cda26f2..00000000 --- a/go/paddlectl/submit.go +++ /dev/null @@ -1,196 +0,0 @@ -package paddlectl - -import ( - "context" - "encoding/json" - "errors" - "flag" - "fmt" - "os" - "path" - "strings" - - "github.com/PaddlePaddle/cloud/go/utils/config" - "github.com/PaddlePaddle/cloud/go/utils/restclient" - "github.com/golang/glog" - "github.com/google/subcommands" -) - -const ( - invalidJobName = "jobname can not contain '.' or '_'" - trainingjobsPath = "/api/v1/trainingjobs/" -) - -// Config is global config object for paddlectl commandline -var Config *config.SubmitConfig - -// SubmitCmd define the subcommand of submitting paddle training jobs. -type SubmitCmd struct { - Jobname string `json:"name"` - Jobpackage string `json:"jobPackage"` - CPU int `json:"cpu"` - GPU int `json:"gpu"` - Memory string `json:"memory"` - Pservers int `json:"pservers"` - PSCPU int `json:"pscpu"` - PSMemory string `json:"psmemory"` - Entry string `json:"entry"` - Topology string `json:"topology"` - Datacenter string `json:"datacenter"` - Passes int `json:"passes"` - - // docker image to run jobs - Image string `json:"image"` - Registry string `json:"registry"` - - // Alpha features: - // TODO: separate API versions - FaultTolerant bool `json:"faulttolerant"` - MaxInstance int `json:"maxInstance"` - MinInstance int `json:"minInstance"` - - // TODO(gongwb): create from yaml. -} - -// Name is subcommands name. -func (*SubmitCmd) Name() string { return "submit" } - -// Synopsis is subcommands synopsis. -func (*SubmitCmd) Synopsis() string { return "Submit job to PaddlePaddle Cloud." } - -// Usage is subcommands Usage. -func (*SubmitCmd) Usage() string { - return `submit [options] : - Submit job to PaddlePaddle Cloud. - Options: -` -} - -// SetFlags registers subcommands flags. -func (p *SubmitCmd) SetFlags(f *flag.FlagSet) { - f.StringVar(&p.Jobname, "jobname", "paddle-cluster-job", "Cluster job name.") - f.IntVar(&p.CPU, "cpu", 1, "CPU resource each trainer will use. Defaults to 1.") - f.IntVar(&p.GPU, "gpu", 0, "GPU resource each trainer will use. Defaults to 0.") - f.StringVar(&p.Memory, "memory", "1Gi", " Memory resource each trainer will use. Defaults to 1Gi.") - f.IntVar(&p.Pservers, "pservers", 1, "Number of parameter servers. Defaults equal to -p") - f.IntVar(&p.PSCPU, "pscpu", 1, "Parameter server CPU resource. Defaults to 1.") - f.StringVar(&p.PSMemory, "psmemory", "1Gi", "Parameter server momory resource. Defaults to 1Gi.") - f.StringVar(&p.Entry, "entry", "", "Command of starting trainer process. Defaults to paddle train") - f.StringVar(&p.Topology, "topology", "", "Will Be Deprecated .py file contains paddle v1 job configs") - f.IntVar(&p.Passes, "passes", 1, "Pass count for training job") - f.StringVar(&p.Image, "image", "paddlepaddle/paddlecloud-job", "Runtime Docker image for the job") - f.StringVar(&p.Registry, "registry", "", "Registry secret name for the runtime Docker image") - f.IntVar(&p.MinInstance, "min_instance", 1, "The minimum number of trainers"+ - "only used fo faulttolerant. Default to 1.") - f.IntVar(&p.MaxInstance, "max_instance", 1, "The minimum number of trainers,"+ - "only used for faulttolerant, Default to 1.") - f.BoolVar(&p.FaultTolerant, "faulttolerant", false, "if true, use new fault-tolerant pservers") -} - -// Execute submit command. -func (p *SubmitCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - if f.NArg() != 1 { - f.Usage() - return subcommands.ExitFailure - } - - p.Jobpackage = f.Arg(0) - p.Datacenter = Config.ActiveConfig.Name - - s := NewSubmitter(p) - if err := s.Submit(f.Arg(0), p.Jobname); err != nil { - fmt.Fprintf(os.Stderr, "error submiting job: %v\n", err) - return subcommands.ExitFailure - } - - fmt.Printf("%s submited.\n", p.Jobname) - return subcommands.ExitSuccess -} - -// Submitter submit job to cloud. -type Submitter struct { - args *SubmitCmd -} - -// NewSubmitter returns a submitter object. -func NewSubmitter(cmd *SubmitCmd) *Submitter { - s := Submitter{cmd} - return &s -} - -func getJobPfsPath(jobPackage, jobName string) string { - _, err := os.Stat(jobPackage) - if os.IsNotExist(err) { - return jobPackage - } - - return path.Join("/pfs", Config.ActiveConfig.Name, "home", Config.ActiveConfig.Username, "jobs", jobName) -} - -// putFiles puts files to pfs and -// if jobPackage is not a local dir, skip uploading package. -func putFilesToPfs(jobPackage, jobName string) error { - _, pkgerr := os.Stat(jobPackage) - if pkgerr == nil { - dest := getJobPfsPath(jobPackage, jobName) - if !strings.HasSuffix(jobPackage, "/") { - jobPackage = jobPackage + "/" - } - err := putFiles(jobPackage, dest) - if err != nil { - return err - } - } else if os.IsNotExist(pkgerr) { - glog.Warning("jobpackage not a local dir, skip upload.") - } - - return nil -} - -func (s *Submitter) createJobs() error { - jsonString, err := json.Marshal(s.args) - if err != nil { - return err - } - - apiPath := Config.ActiveConfig.Endpoint + trainingjobsPath - respBody, err := restclient.PostCall(apiPath, jsonString) - if err != nil { - return err - } - - var respObj map[string]string - if err = json.Unmarshal(respBody, &respObj); err != nil { - return err - } - - // FIXME: Return an error if error message is not empty. Use response code instead. - errMsg := respObj["msg"] - if len(errMsg) > 0 { - return errors.New(errMsg) - } - - glog.Infof("Submitting job: %s\n", s.args.Jobname) - return nil -} - -// Submit current job. -func (s *Submitter) Submit(jobPackage string, jobName string) error { - if err := checkJobName(jobName); err != nil { - return err - } - - if err := putFilesToPfs(jobPackage, jobName); err != nil { - return err - } - - return s.createJobs() -} - -func checkJobName(jobName string) error { - if strings.Contains(jobName, "_") || strings.Contains(jobName, ".") { - return errors.New(invalidJobName) - } - - return nil -} diff --git a/go/scripts/custom-boilerplate.go.txt b/go/scripts/custom-boilerplate.go.txt deleted file mode 100644 index ff3d883c..00000000 --- a/go/scripts/custom-boilerplate.go.txt +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2016 PaddlePaddle Authors All Rights Reserve. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ \ No newline at end of file diff --git a/go/scripts/update-codegen.sh b/go/scripts/update-codegen.sh deleted file mode 100755 index f9c4959d..00000000 --- a/go/scripts/update-codegen.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# Copyright 2017 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This shell is used to auto generate some useful tools for k8s, such as lister, -# informer, deepcopy, defaulter and so on. - -set -o errexit -set -o nounset -set -o pipefail - -SCRIPT_ROOT=$(dirname ${BASH_SOURCE})/.. -echo ${SCRIPT_ROOT} -CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${SCRIPT_ROOT}; ls -d -1 ../vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)} -echo ${CODEGEN_PKG} - -# generate the code with: -# --output-base because this script should also be able to run inside the vendor dir of -# k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir -# instead of the $GOPATH directly. For normal projects this can be dropped. -${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \ - github.com/PaddlePaddle/cloud/go/client github.com/PaddlePaddle/cloud/go/apis \ - paddlepaddle:v1 \ - --go-header-file ${SCRIPT_ROOT}/scripts/custom-boilerplate.go.txt - -grep "github.com/paddlepaddle/cloud" -nR client | awk -F ':' '{print $1}' | \ - xargs sed -i "" 's|github.com/paddlepaddle/cloud|github.com/PaddlePaddle/cloud|g' - -## format codes -gofmt -w client diff --git a/go/scripts/verify-codegen.sh b/go/scripts/verify-codegen.sh deleted file mode 100755 index 24e78d19..00000000 --- a/go/scripts/verify-codegen.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash - -# Copyright 2017 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -o errexit -set -o nounset -set -o pipefail - -SCRIPT_ROOT=$(dirname "${BASH_SOURCE}")/.. - -DIFFROOT="${SCRIPT_ROOT}/../go/client" -TMP_DIFFROOT="${SCRIPT_ROOT}/../_tmp/go/client" -_tmp="${SCRIPT_ROOT}/../_tmp" - -cleanup() { - rm -rf "${_tmp}" -} -trap "cleanup" EXIT SIGINT - -cleanup - -mkdir -p "${TMP_DIFFROOT}" -cp -a "${DIFFROOT}"/* "${TMP_DIFFROOT}" - -"${SCRIPT_ROOT}/scripts/update-codegen.sh" -echo "diffing ${DIFFROOT} against freshly generated codegen" -ret=0 -diff -Naupr "${DIFFROOT}" "${TMP_DIFFROOT}" || ret=$? -cp -a "${TMP_DIFFROOT}"/* "${DIFFROOT}" -if [[ $ret -eq 0 ]] -then - echo "${DIFFROOT} up to date." -else - echo "${DIFFROOT} is out of date. Please run scripts/update-codegen.sh" - exit 1 -fi diff --git a/go/updater/trainingJobUpdater.go b/go/updater/trainingJobUpdater.go deleted file mode 100644 index dd2a5d4f..00000000 --- a/go/updater/trainingJobUpdater.go +++ /dev/null @@ -1,81 +0,0 @@ -package updater - -import ( - padv1 "github.com/PaddlePaddle/cloud/go/apis/paddlepaddle/v1" - trainingJobClient "github.com/PaddlePaddle/cloud/go/client/clientset/versioned" - log "github.com/golang/glog" - "k8s.io/client-go/kubernetes" - "time" -) - -const ( - retryTimes = 5 - convertedTimerTicker = 10 * time.Second - confirmResourceTicker = 5 * time.Second -) - -type trainingJobEventType string - -const ( - trainingJobEventDelete trainingJobEventType = "Delete" - trainingJobEventModify trainingJobEventType = "Modify" -) - -type trainingJobEvent struct { - // pet is the TrainingJobEventType of TrainingJob - pet trainingJobEventType - // The job transfer the information fo job - job *padv1.TrainingJob -} - -// TrainingJobUpdater is used to manage a specific TrainingJob -type TrainingJobUpdater struct { - // Job is the job the TrainingJob manager. - job *padv1.TrainingJob - - // kubeClient is standard kubernetes client. - kubeClient kubernetes.Interface - - // TrainingJobClient is the client of TrainingJob. - trainingJobClient trainingJobClient.Interface - - // Status is the status in memory, update when TrainingJob status changed and update the CRD resource status. - status padv1.TrainingJobStatus - - // EventCh receives events from the controller, include Modify and Delete. - // When trainingJobEvent is Delete it will delete all resources - // The capacity is 1000. - eventCh chan *trainingJobEvent -} - -func initUpdater(job *padv1.TrainingJob, kubeClient kubernetes.Interface, trainingJobClient trainingJobClient.Interface) (*TrainingJobUpdater, - error) { - jobber := &TrainingJobUpdater{ - job: job, - kubeClient: kubeClient, - trainingJobClient: trainingJobClient, - status: job.Status, - eventCh: make(chan *trainingJobEvent, 1000), - } - return jobber, nil -} - -// NewUpdater return a trainingJobUpdater for controller. -func NewUpdater(job *padv1.TrainingJob, kubeClient kubernetes.Interface, trainingJobClient trainingJobClient.Interface) (*TrainingJobUpdater, - error) { - log.Infof("NewJobber namespace=%v name=%v", job.Namespace, job.Name) - jobber, err := initUpdater(job, kubeClient, trainingJobClient) - if err != nil { - return nil, err - } - - go jobber.start() - return jobber, nil -} - -// Start is the main process of life cycle of a TrainingJob, including create resources, event process handle and -// status convert. -func (updater *TrainingJobUpdater) start() { - // TODO(zhengqi): this will commit in the next pr - -} diff --git a/go/utils/config/config.go b/go/utils/config/config.go deleted file mode 100644 index fb3142dd..00000000 --- a/go/utils/config/config.go +++ /dev/null @@ -1,84 +0,0 @@ -package config - -import ( - "io/ioutil" - "net/url" - "path/filepath" - "regexp" - - "github.com/PaddlePaddle/cloud/go/utils/pathutil" - "github.com/golang/glog" - - yaml "gopkg.in/yaml.v2" -) - -// SubmitConfigDataCenter is inner conf for paddlecloud -type SubmitConfigDataCenter struct { - Name string `yaml:"name"` - Username string `yaml:"username"` - Password string `yaml:"password"` - Usercert string `yaml:"usercert"` - Userkey string `yaml:"userkey"` - Endpoint string `yaml:"endpoint"` -} - -// SubmitConfig is configuration load from user config yaml files -type SubmitConfig struct { - DC []SubmitConfigDataCenter `yaml:"datacenters"` - ActiveConfig *SubmitConfigDataCenter - CurrentDatacenter string `yaml:"current-datacenter"` -} - -// DefaultConfigFile returns the path of paddlecloud default config file path -func DefaultConfigFile() string { - return filepath.Join(pathutil.UserHomeDir(), ".paddle", "config") -} - -// ParseDefaultConfig returns default parsed config struct in ~/.paddle/config -func ParseDefaultConfig() *SubmitConfig { - return ParseConfig(DefaultConfigFile()) -} - -func isValidURL(toTest string) bool { - _, err := url.ParseRequestURI(toTest) - if err != nil { - return false - } - - return true -} - -// ParseConfig parse paddlecloud config to a struct -func ParseConfig(configFile string) *SubmitConfig { - // ------------------- load paddle config ------------------- - buf, err := ioutil.ReadFile(configFile) - config := SubmitConfig{} - if err == nil { - yamlErr := yaml.Unmarshal(buf, &config) - if yamlErr != nil { - glog.Errorf("load config %s error: %v\n", configFile, yamlErr) - return nil - } - - var re = regexp.MustCompile(`(/|\\)*$`) - for _, t := range config.DC { - if !isValidURL(t.Endpoint) { - glog.Errorf("DC:%v Endpoint:%v is not a valid URL\n", config.DC, t.Endpoint) - return nil - } - t.Endpoint = re.ReplaceAllString(t.Endpoint, "") - } - - // put active config - config.ActiveConfig = nil - for _, item := range config.DC { - if item.Name == config.CurrentDatacenter { - config.ActiveConfig = &item - break - } - } - return &config - } - glog.Errorf("config %s error: %v\n", configFile, err) - return nil -} diff --git a/go/utils/config/config_test.go b/go/utils/config/config_test.go deleted file mode 100644 index cd501505..00000000 --- a/go/utils/config/config_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package config - -import ( - "io/ioutil" - "os" - "strconv" - "testing" -) - -func TestConfigParse(t *testing.T) { - port := 8000 - sampleConfig := `current-datacenter: dc1 -datacenters: -- name: dc1 - username: testuser - password: 123123 - endpoint: http://127.0.0.1:` + strconv.Itoa(port) + ` -- name: dc2 - username: testuser2 - password: 123123 - endpoint: http://abc.com:8448` - - tmpfile, err := ioutil.TempFile("", "config") - if err != nil { - t.Fatal(err) - } - defer os.Remove(tmpfile.Name()) // clean up temp file - if _, err := tmpfile.Write([]byte(sampleConfig)); err != nil { - t.Fatal(err) - } - if err := tmpfile.Close(); err != nil { - t.Fatal(err) - } - tempconfig := ParseConfig(tmpfile.Name()) - if tempconfig.ActiveConfig.Endpoint != "http://127.0.0.1:"+strconv.Itoa(port) { - t.Error("config parse error") - } -} - -func TestErrorConfigParse(t *testing.T) { - sampleErrorConfig := `current-datacenter: dc2 -datacenters: -- name: dc1 - username:,, testuser - password123123 - endpoint: http://cloud.paddlepaddle.org` - - tmpfile, err := ioutil.TempFile("", "config") - if err != nil { - t.Fatal(err) - } - defer os.Remove(tmpfile.Name()) // clean up temp file - if _, err := tmpfile.Write([]byte(sampleErrorConfig)); err != nil { - t.Fatal(err) - } - if err := tmpfile.Close(); err != nil { - t.Fatal(err) - } - tempconfig := ParseConfig(tmpfile.Name()) - if tempconfig != nil { - t.Error("config error not return nil") - } -} - -func TestNonExistFile(t *testing.T) { - tempconfig := ParseConfig("/path/to/non/exist/file") - if tempconfig != nil { - t.Error("non exist file should return nil") - } -} diff --git a/go/utils/kubeutil/kubeutil.go b/go/utils/kubeutil/kubeutil.go deleted file mode 100644 index 50f950de..00000000 --- a/go/utils/kubeutil/kubeutil.go +++ /dev/null @@ -1,114 +0,0 @@ -package kubeutil - -import ( - "fmt" - "os" - "strings" - - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" - "k8s.io/api/core/v1" - "k8s.io/api/extensions/v1beta1" - "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/rest" - "k8s.io/client-go/tools/clientcmd" -) - -func buildConfig(kubeconfig string) (*rest.Config, error) { - return clientcmd.BuildConfigFromFlags("", kubeconfig) -} - -// CreateClient creates ClientSet and rest.RESTClient used by client. -func CreateClient(kubeconfig string) (*rest.RESTClient, *kubernetes.Clientset, error) { - config, err := buildConfig(kubeconfig) - if err != nil { - return nil, nil, fmt.Errorf("init from config '%s' error: %v", kubeconfig, err) - } - - clientset, err := kubernetes.NewForConfig(config) - if err != nil { - return nil, nil, fmt.Errorf("create clientset from config '%s' error: %v", kubeconfig, err) - } - - edlresource.RegisterResource(config, &edlresource.TrainingJob{}, &edlresource.TrainingJobList{}) - - client, err := rest.RESTClientFor(config) - if err != nil { - return nil, nil, fmt.Errorf("create rest client from config '%s' error: %v", kubeconfig, err) - } - - return client, clientset, nil -} - -// FindNamespace finds whether a namespace exists. -func FindNamespace(clientset *kubernetes.Clientset, namespace string) error { - n := v1.Namespace{} - n.SetName(namespace) - - if _, err := clientset.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{}); err != nil { - return fmt.Errorf("get namespace '%s' error:%v", namespace, err) - } - - return nil -} - -// EnsureTPR ensure a TPR should exists and create it if not. -func EnsureTPR(clientset *kubernetes.Clientset, resourceName, apiversion string) error { - tpr, err := clientset.ExtensionsV1beta1().ThirdPartyResources().Get(resourceName, metav1.GetOptions{}) - if err != nil { - if errors.IsNotFound(err) { - tpr := &v1beta1.ThirdPartyResource{ - TypeMeta: metav1.TypeMeta{ - Kind: "ThirdPartyResource", - APIVersion: "extensions/v1beta1", - }, - - ObjectMeta: metav1.ObjectMeta{ - Name: resourceName, - }, - - Versions: []v1beta1.APIVersion{ - {Name: apiversion}, - }, - Description: "PaddlePaddle TrainingJob operator", - } - - _, err := clientset.ExtensionsV1beta1().ThirdPartyResources().Create(tpr) - if err != nil { - return err - } - } else { - return err - } - } else { - fmt.Printf("SKIPPING: already exists %#v\n", tpr) - } - - return nil -} - -// CreateTrainingJob try to create a training-job under namespace. -func CreateTrainingJob(restClient *rest.RESTClient, namespace string, job *edlresource.TrainingJob) error { - var result edlresource.TrainingJob - err := restClient.Post(). - Resource("trainingjobs"). - Namespace(namespace). - Body(job). - Do().Into(&result) - - if err != nil { - fmt.Fprintf(os.Stderr, "can't create TPR extenion TrainningJob: %s\n", job) - return err - } - - return nil -} - -// NameEscape replace characters not supported by Kubernetes. -func NameEscape(name string) string { - name = strings.Replace(name, "@", "-", -1) - name = strings.Replace(name, ".", "-", -1) - name = strings.Replace(name, "_", "-", -1) - return name -} diff --git a/go/utils/pathutil/pathutil.go b/go/utils/pathutil/pathutil.go deleted file mode 100644 index f0652b01..00000000 --- a/go/utils/pathutil/pathutil.go +++ /dev/null @@ -1,18 +0,0 @@ -package pathutil - -import ( - "os" - "runtime" -) - -// UserHomeDir get user home dierctory on different platforms -func UserHomeDir() string { - if runtime.GOOS == "windows" { - home := os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") - if home == "" { - home = os.Getenv("USERPROFILE") - } - return home - } - return os.Getenv("HOME") -} diff --git a/go/utils/restclient/restclient.go b/go/utils/restclient/restclient.go deleted file mode 100644 index c1316321..00000000 --- a/go/utils/restclient/restclient.go +++ /dev/null @@ -1,185 +0,0 @@ -package restclient - -import ( - "bytes" - "errors" - "fmt" - "io" - "io/ioutil" - "mime/multipart" - "net/http" - "net/url" - "os" - - "github.com/PaddlePaddle/cloud/go/utils/config" - log "github.com/golang/glog" -) - -// HTTPOK is ok status of http api call. -const HTTPOK = "200 OK" - -// HTTPClient is a global Http client obj conains one persist connection. -var HTTPClient = http.DefaultClient - -// MakeRequest returns a general HTTP request object. -func MakeRequest(uri string, method string, body io.Reader, - contentType string, query url.Values, - authHeader map[string]string) (*http.Request, error) { - req, err := http.NewRequest(method, uri, body) - if err != nil { - log.Errorf("new request %v\n", err) - return nil, err - } - - // default contentType is application/json. - if len(contentType) == 0 { - req.Header.Set("Content-Type", "application/json") - } else { - req.Header.Set("Content-Type", contentType) - } - - for k, v := range authHeader { - req.Header.Set(k, v) - } - - if query != nil { - req.URL.RawQuery = query.Encode() - } - return req, nil -} - -// MakeRequestToken use client token to make a authorized request. -func MakeRequestToken(uri string, method string, body io.Reader, - contentType string, query url.Values) (*http.Request, error) { - // get client token - c := config.ParseDefaultConfig() - token, err := Token(c) - if err != nil { - return nil, errors.New("get token error:" + err.Error()) - } - authHeader := make(map[string]string) - authHeader["Authorization"] = "Token " + token - return MakeRequest(uri, method, body, contentType, query, authHeader) -} - -// NOTE: add other request makers if we need other auth methods. - -// GetResponse will do the request and get response from server. -func GetResponse(req *http.Request) ([]byte, error) { - resp, err := HTTPClient.Do(req) - if err != nil { - log.Errorf("HTTPClient do error %v\n", err) - return []byte{}, err - } - defer resp.Body.Close() - if resp.Status != HTTPOK { - return []byte{}, errors.New("server error: " + resp.Status) - } - // FIXME: add more resp.Status checks. - return ioutil.ReadAll(resp.Body) -} - -// GetCall make a GET call to targetURL with query. -func GetCall(targetURL string, query url.Values) ([]byte, error) { - req, err := MakeRequestToken(targetURL, "GET", nil, "", query) - if err != nil { - return []byte{}, err - } - return GetResponse(req) -} - -// PostCall make a POST call to targetURL with a json body. -func PostCall(targetURL string, jsonString []byte) ([]byte, error) { - req, err := MakeRequestToken(targetURL, "POST", bytes.NewBuffer(jsonString), "", nil) - if err != nil { - return []byte{}, err - } - return GetResponse(req) -} - -// DeleteCall make a DELETE call to targetURL with a json body. -func DeleteCall(targetURL string, jsonString []byte) ([]byte, error) { - req, err := MakeRequestToken(targetURL, "DELETE", bytes.NewBuffer(jsonString), "", nil) - if err != nil { - return []byte{}, err - } - return GetResponse(req) -} - -// PostFile make a POST call to HTTP server to upload a file. -func PostFile(targetURL string, filename string, query url.Values) ([]byte, error) { - bodyBuf := &bytes.Buffer{} - bodyWriter := multipart.NewWriter(bodyBuf) - fileWriter, err := bodyWriter.CreateFormFile("file", filename) - if err != nil { - fmt.Fprintf(os.Stderr, "error writing to buffer: %v\n", err) - return []byte{}, err - } - fh, err := os.Open(filename) - defer fh.Close() - if err != nil { - fmt.Fprintf(os.Stderr, "error opening file: %v\n", err) - return []byte{}, err - } - _, err = io.Copy(fileWriter, fh) - if err != nil { - return []byte{}, err - } - - contentType := bodyWriter.FormDataContentType() - if err = bodyWriter.Close(); err != nil { - return []byte{}, err - } - - req, err := MakeRequestToken(targetURL, "POST", bodyBuf, contentType, query) - if err != nil { - return []byte{}, err - } - return GetResponse(req) -} - -// PostChunk makes a POST call to HTTP server to upload chunkdata. -func PostChunk(targetURL string, - chunkName string, reader io.Reader, len int64, boundary string) ([]byte, error) { - body := &bytes.Buffer{} - writer := multipart.NewWriter(body) - if err := writer.SetBoundary(boundary); err != nil { - return nil, err - } - - log.V(4).Infoln(chunkName) - part, err := writer.CreateFormFile("chunk", chunkName) - if err != nil { - return nil, err - } - - _, err = io.CopyN(part, reader, len) - if err != nil { - return nil, err - } - - err = writer.Close() - if err != nil { - return nil, err - } - - contentType := writer.FormDataContentType() - - req, err := MakeRequestToken(targetURL, "POST", body, contentType, nil) - if err != nil { - return nil, err - } - - return GetResponse(req) -} - -// GetChunk makes a GET call to HTTP server to download chunk data. -func GetChunk(targetURL string, - query url.Values) (*http.Response, error) { - req, err := MakeRequestToken(targetURL, "GET", nil, "", query) - if err != nil { - return nil, err - } - - return HTTPClient.Do(req) -} diff --git a/go/utils/restclient/token.go b/go/utils/restclient/token.go deleted file mode 100644 index e8674ebb..00000000 --- a/go/utils/restclient/token.go +++ /dev/null @@ -1,50 +0,0 @@ -package restclient - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "os" - "path/filepath" - - "github.com/PaddlePaddle/cloud/go/utils/config" - "github.com/PaddlePaddle/cloud/go/utils/pathutil" -) - -func getToken(uri string, body []byte) ([]byte, error) { - req, err := MakeRequest(uri, "POST", bytes.NewBuffer(body), "", nil, nil) - if err != nil { - return nil, err - } - return GetResponse(req) -} - -// Token fetch and caches the token for current configured user -func Token(config *config.SubmitConfig) (string, error) { - tokenbytes, err := ioutil.ReadFile(filepath.Join(pathutil.UserHomeDir(), ".paddle", "token_cache")) - if err != nil { - fmt.Fprintf(os.Stderr, "previous token not found, fetching a new one...\n") - // Authenticate to the cloud endpoint - authJSON := map[string]string{} - authJSON["username"] = config.ActiveConfig.Username - authJSON["password"] = config.ActiveConfig.Password - authStr, _ := json.Marshal(authJSON) - body, err := getToken(config.ActiveConfig.Endpoint+"/api-token-auth/", authStr) - if err != nil { - return "", err - } - var respObj interface{} - if errJSON := json.Unmarshal(body, &respObj); errJSON != nil { - return "", errJSON - } - tokenStr := respObj.(map[string]interface{})["token"].(string) - err = ioutil.WriteFile(filepath.Join(pathutil.UserHomeDir(), ".paddle", "token_cache"), []byte(tokenStr), 0600) - if err != nil { - fmt.Fprintf(os.Stderr, "write cache token file error: %v", err) - } - // Ignore write token error, fetch a new one next time - return tokenStr, nil - } - return string(tokenbytes), nil -} diff --git a/go/utils/restclient/token_test.go b/go/utils/restclient/token_test.go deleted file mode 100644 index 688368a3..00000000 --- a/go/utils/restclient/token_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package restclient - -import ( - "errors" - "fmt" - "net" - "net/http" - "os" - "path/filepath" - "testing" - "time" - - "github.com/PaddlePaddle/cloud/go/utils/config" - "github.com/PaddlePaddle/cloud/go/utils/pathutil" - "github.com/stretchr/testify/require" -) - -func fakeServer() (*http.Server, int) { - http.HandleFunc("/api-token-auth/", func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("{\"token\": \"testtokenvalue\"}")) - }) - http.HandleFunc("/fake-api/", func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte("fakeresult")) - }) - listener, err := net.Listen("tcp", ":0") - if err != nil { - panic(err) - } - - fmt.Println("Using port:", listener.Addr().(*net.TCPAddr).Port) - - srv := &http.Server{Addr: listener.Addr().String()} - go func() { - if err := srv.Serve(listener); err != nil { - return - } - }() - time.Sleep(50 * time.Millisecond) - return srv, listener.Addr().(*net.TCPAddr).Port -} - -func mkdirP(path string) error { - fi, err := os.Stat(path) - - if os.IsExist(err) { - if !fi.IsDir() { - return errors.New("exist a same name file") - } - - return nil - } - - return os.MkdirAll(path, 0700) -} - -func TestTokenParse(t *testing.T) { - srv, port := fakeServer() - defer srv.Shutdown(nil) - - // test token fetching - path := filepath.Join(pathutil.UserHomeDir(), ".paddle") - require.Nil(t, mkdirP(path), "mkdir ", path) - - os.Remove(filepath.Join(path, "token_cache")) - tmpconf := &config.SubmitConfig{ActiveConfig: &config.SubmitConfigDataCenter{ - Name: "test", - Username: "testuser", - Password: "fff", - Endpoint: fmt.Sprintf("http://127.0.0.1:%d", port), - }} - - token, err := Token(tmpconf) - require.Nil(t, err, "get token") - require.Equal(t, "testtokenvalue", token, "token not equal to the server") - - // FIXME: separate these tests - // test token request - uri := fmt.Sprintf("http://127.0.0.1:%d/fake-api/", port) - req, err := MakeRequest(uri, "GET", nil, "", nil, nil) - require.Nil(t, err, "make request") - resp, err := GetResponse(req) - require.Nil(t, err, "get request") - require.Equal(t, "fakeresult", string(resp)) -} diff --git a/k8s/cloud_deployment.yaml b/k8s/cloud_deployment.yaml deleted file mode 100644 index 8290154e..00000000 --- a/k8s/cloud_deployment.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: paddle-cloud -spec: - replicas: 1 - template: - metadata: - labels: - app: paddle-cloud - spec: - volumes: - - name: cert-volume - hostPath: - path: /home/pcloud/data/certs - - name: mysql-data - hostPath: - path: /home/pcloud/data/mysql - - name: settings - hostPath: - path: /home/pcloud/data/settings.py - #- name: email-tmp-msg: - # hostPath: - # path: /home/pcloud/templates/email_confirmation_message.txt - #- name: email-tmp-subj: - # hostPath: - # path: /home/pcloud/templates/email_confirmation_subject.txt - #- name: homepage - # hostPath: - # path: /home/pcloud/templates/homepage.html - # - name: data-storage - # cephfs: - # name: cephfs - # monitors: ["172.19.32.166:6789"] - # path: "/" - # user: "admin" - # secretRef: - # name: ceph-secret - containers: - - name: paddle-cloud - imagePullPolicy: Always - image: paddlepaddle/cloud - volumeMounts: - - name: cert-volume - mountPath: /certs - - name: settings - mountPath: /pcloud/paddlecloud/settings.py - # - name: data-storage - # mountPath: /pfs - #- name: homepage - # mountPath: /pcloud/paddlecloud/templates/homepage.html - #- name: email-tmp-msg: - # mountPath: /pcloud/notebook/templates/account/email/email_confirmation_message.txt - #- name: email-tmp-subj: - # mountPath: /pcloud/notebook/templates/account/email/email_confirmation_subject.txt - ports: - - containerPort: 8000 - env: - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: PORT - value: "8000" -# livenessProbe: -# httpGet: -# path: /healthz/ -# port: 8000 -# httpHeaders: -# - name: User-Agent -# value: kubernetes-health-check -# initialDelaySeconds: 3 -# periodSeconds: 5 - nodeSelector: - kubernetes.io/hostname: your-host-name diff --git a/k8s/cloud_ingress.yaml b/k8s/cloud_ingress.yaml deleted file mode 100644 index 20bbaa21..00000000 --- a/k8s/cloud_ingress.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: paddle-cloud-ingress -spec: - rules: - - host: cloud.paddlepaddle.org - http: - paths: - - path: /api/v1/files - backend: - serviceName: pfs-service - servicePort: 8080 - - path: / - backend: - serviceName: paddle-cloud-service - servicePort: 8000 - diff --git a/k8s/cloud_service.yaml b/k8s/cloud_service.yaml deleted file mode 100644 index a0192013..00000000 --- a/k8s/cloud_service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: paddle-cloud-service -spec: - selector: - app: paddle-cloud - ports: - - protocol: TCP - port: 8000 - targetPort: 8000 diff --git a/k8s/config b/k8s/config deleted file mode 100644 index df9f943b..00000000 --- a/k8s/config +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -clusters: -- cluster: - server: http://localhost:8080 - name: default-cluster -contexts: -- context: - cluster: default-cluster - name: default-context -current-context: default-context -kind: Config -preferences: {} diff --git a/k8s/default_quota.yaml b/k8s/default_quota.yaml deleted file mode 100644 index c1e48f89..00000000 --- a/k8s/default_quota.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: ResourceQuota -metadata: - name: compute-resources -spec: - hard: - pods: "10" - requests.cpu: "10" - requests.memory: 100Gi - limits.cpu: "10" - limits.memory: 100Gi - persistentvolumeclaims: "1" diff --git a/k8s/edl/autoscale_job/example_job.yaml b/k8s/edl/autoscale_job/example_job.yaml deleted file mode 100644 index 2a0e2eb8..00000000 --- a/k8s/edl/autoscale_job/example_job.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: paddlepaddle.org/v1 -kind: TrainingJob -metadata: - name: example -spec: - image: "paddlepaddle/paddlecloud-job" - port: 7164 - ports_num: 1 - ports_num_for_sparse: 1 - fault_tolerant: true - trainer: - entrypoint: "python train.py" - workspace: "/home/job-1/" - passes: 10 - min-instance: 2 - max-instance: 6 - resources: - limits: - #alpha.kubernetes.io/nvidia-gpu: 1 - cpu: "200m" - memory: "200Mi" - requests: - cpu: "200m" - memory: "200Mi" - pserver: - min-instance: 2 - max-instance: 2 - resources: - limits: - cpu: "800m" - memory: "1Gi" - requests: - cpu: "500m" - memory: "600Mi" diff --git a/k8s/edl/autoscale_job/master.yaml b/k8s/edl/autoscale_job/master.yaml deleted file mode 100644 index f4c16e29..00000000 --- a/k8s/edl/autoscale_job/master.yaml +++ /dev/null @@ -1,82 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: ReplicaSet -metadata: - name: example-master -spec: - replicas: 1 - template: - metadata: - labels: - paddle-job-master: example - spec: - volumes: - - name: example-workspace - hostPath: - path: /workspace - containers: - - name: master - image: paddlepaddle/paddlecloud-job - imagePullPolicy: Always - ports: - - name: master-port - containerPort: 8080 - - name: etcd-port - containerPort: 2379 - volumeMounts: - - mountPath: /workspace - name: example-workspace - env: - command: ["paddle_k8s", "start_master"] - resources: - requests: - memory: 200Mi - cpu: 200m - limits: - memory: 200Mi - cpu: 200m - - name: example-etcd - image: quay.io/coreos/etcd:v3.2.1 - env: - - name: PADDLE_JOB_NAME - value: example - - name: TRAINERS - value: "2" - - name: PSERVERS - value: "2" - - name: TOPOLOGY - value: "" - - name: ENTRY - value: "python train.py" - - name: TRAINER_PACKAGE - value: "/tmp" - - name: PADDLE_INIT_PORT - value: "7164" - - name: PADDLE_INIT_TRAINER_COUNT - value: "1" - - name: PADDLE_INIT_PORTS_NUM - value: "1" - - name: PADDLE_INIT_PORTS_NUM_FOR_SPARSE - value: "1" - - name: PADDLE_INIT_NUM_GRADIENT_SERVERS - value: "2" - - name: PADDLE_INIT_NUM_PASSES - value: "1" - - name: PADDLE_INIT_USE_GPU - value: "1" - - name: LD_LIBRARY_PATH - value: "/usr/local/nvidia/lib64" - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: "metadata.namespace" - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - command: ["etcd", "-name", "etcd0", - "-advertise-client-urls", "http://$(POD_IP):2379,http://$(POD_IP):4001", - "-listen-client-urls", "http://0.0.0.0:2379,http://0.0.0.0:4001", - "-initial-advertise-peer-urls", "http://$(POD_IP):2380", - "-listen-peer-urls", "http://0.0.0.0:2380", - "-initial-cluster", "etcd0=http://$(POD_IP):2380", - "-initial-cluster-state", "new"] diff --git a/k8s/edl/autoscale_job/pserver.yaml b/k8s/edl/autoscale_job/pserver.yaml deleted file mode 100644 index c127f9f5..00000000 --- a/k8s/edl/autoscale_job/pserver.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: ReplicaSet -metadata: - name: example-pserver -spec: - replicas: 2 - template: - metadata: - labels: - paddle-job-pserver: example - spec: - containers: - - name: pserver - image: paddlepaddle/paddlecloud-job - imagePullPolicy: Always - ports: - - name: jobport-7164 - containerPort: 7164 - - name: jobport-7165 - containerPort: 7165 - env: - - name: PADDLE_JOB_NAME - value: example - - name: TRAINERS - value: "2" - - name: PSERVERS - value: "2" - - name: TOPOLOGY - value: "" - - name: ENTRY - value: "python train.py" - - name: TRAINER_PACKAGE - value: "/tmp" - - name: PADDLE_INIT_PORT - value: "7164" - - name: PADDLE_INIT_TRAINER_COUNT - value: "1" - - name: PADDLE_INIT_PORTS_NUM - value: "1" - - name: PADDLE_INIT_PORTS_NUM_FOR_SPARSE - value: "1" - - name: PADDLE_INIT_NUM_GRADIENT_SERVERS - value: "2" - - name: PADDLE_INIT_NUM_PASSES - value: "1" - - name: PADDLE_INIT_USE_GPU - value: "1" - - name: LD_LIBRARY_PATH - value: "/usr/local/nvidia/lib64" - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: "metadata.namespace" - command: ["paddle_k8s", "start_new_pserver"] - resources: - requests: - memory: 200Mi - cpu: 200m - limits: - memory: 200Mi - cpu: 200m - diff --git a/k8s/edl/autoscale_job/trainer.yaml b/k8s/edl/autoscale_job/trainer.yaml deleted file mode 100644 index bf875f8f..00000000 --- a/k8s/edl/autoscale_job/trainer.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: example-trainer -spec: - parallelism: 2 -# completions: 2 - template: - metadata: - labels: - paddle-job: example - spec: - volumes: - - name: example-workspace - hostPath: - path: /workspace - containers: - - name: trainer - image: helinwang/paddlecloud-job - imagePullPolicy: Always - command: ["paddle_k8s", "start_new_trainer"] - volumeMounts: - - mountPath: /workspace - name: example-workspace - env: - - name: PADDLE_JOB_NAME - value: example - - name: TRAINERS - value: "2" - - name: PSERVERS - value: "2" - - name: TOPOLOGY - value: "" - - name: ENTRY - value: "cd /workspace && python /workspace/train_ft.py" - - name: TRAINER_PACKAGE - value: "/tmp" - - name: PADDLE_INIT_PORT - value: "7164" - - name: PADDLE_INIT_TRAINER_COUNT - value: "1" - - name: PADDLE_INIT_PORTS_NUM - value: "1" - - name: PADDLE_INIT_PORTS_NUM_FOR_SPARSE - value: "1" - - name: PADDLE_INIT_NUM_GRADIENT_SERVERS - value: "2" - - name: PADDLE_INIT_NUM_PASSES - value: "1" - - name: PADDLE_INIT_USE_GPU - value: "0" - - name: LD_LIBRARY_PATH - value: "/usr/local/nvidia/lib64" - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: "metadata.namespace" - resources: - requests: - memory: 200Mi - cpu: 200m - limits: - memory: 200Mi - cpu: 200m - #alpha.kubernetes.io/nvidia-gpu: 1 - restartPolicy: Never - diff --git a/k8s/edl/autoscale_load/autoscale_load.yaml b/k8s/edl/autoscale_load/autoscale_load.yaml deleted file mode 100644 index ff00570b..00000000 --- a/k8s/edl/autoscale_load/autoscale_load.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: autoscale-load -spec: - replicas: 1 - template: - metadata: - labels: - app: autoscale-load - spec: - containers: - - name: autoscale-load - image: paddlepaddle/paddlecloud-job - command: ["sleep", "3600"] - resources: - limits: - cpu: 400m - memory: 100Mi - requests: - cpu: 400m - memory: 100Mi diff --git a/k8s/edl/controller.yaml b/k8s/edl/controller.yaml deleted file mode 100644 index 2c7b2f2c..00000000 --- a/k8s/edl/controller.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: training-job-controller - namespace: paddlecloud -spec: - replicas: 1 - template: - metadata: - labels: - name: training-job-controller - spec: - containers: - - name: training-job-controller - image: registry.baidu.com/paddlepaddle/controller - imagePullPolicy: Always - command: ["/controller", "-logtostderr", "-log_level", "debug"] - imagePullSecrets: - - name: regsecret diff --git a/k8s/edl/trainingjob_resource.yaml b/k8s/edl/trainingjob_resource.yaml deleted file mode 100644 index 21c27cce..00000000 --- a/k8s/edl/trainingjob_resource.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: ThirdPartyResource -metadata: - name: training-job.paddlepaddle.org -description: "PaddlePaddle TrainingJob operator" -versions: -- name: v1 \ No newline at end of file diff --git a/k8s/minikube/cloud_deployment.yaml b/k8s/minikube/cloud_deployment.yaml deleted file mode 100644 index 59b58a9b..00000000 --- a/k8s/minikube/cloud_deployment.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: paddle-cloud -spec: - replicas: 1 - template: - metadata: - labels: - app: paddle-cloud - spec: - volumes: - - name: cert-volume - hostPath: - path: /certs - - name: settings - hostPath: - path: /settings.py - containers: - - name: paddle-cloud - imagePullPolicy: IfNotPresent - image: paddlepaddle/cloud - volumeMounts: - - name: cert-volume - mountPath: /certs - - name: settings - mountPath: /pcloud/paddlecloud/settings.py - ports: - - containerPort: 8000 - env: - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: PORT - value: "8000" - nodeSelector: - kubernetes.io/hostname: minikube diff --git a/k8s/minikube/cloud_ingress.yaml b/k8s/minikube/cloud_ingress.yaml deleted file mode 100644 index 18a8a655..00000000 --- a/k8s/minikube/cloud_ingress.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: paddle-cloud-ingress -spec: - rules: - - host: cloud.testpcloud.org - http: - paths: - - path: /api/v1/pfs - backend: - serviceName: pfs-service - servicePort: 8080 - - path: / - backend: - serviceName: paddle-cloud-service - servicePort: 8000 - diff --git a/k8s/minikube/cloud_service.yaml b/k8s/minikube/cloud_service.yaml deleted file mode 100644 index a0192013..00000000 --- a/k8s/minikube/cloud_service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: paddle-cloud-service -spec: - selector: - app: paddle-cloud - ports: - - protocol: TCP - port: 8000 - targetPort: 8000 diff --git a/k8s/minikube/mysql_deployment.yaml b/k8s/minikube/mysql_deployment.yaml deleted file mode 100644 index eb3aa6f5..00000000 --- a/k8s/minikube/mysql_deployment.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: paddle-cloud-mysql -spec: - replicas: 1 - template: - metadata: - labels: - app: paddle-cloud-mysql - spec: - volumes: - - name: mysql-data - hostPath: - path: "/mysql" - containers: - - name: mysql - image: mysql:5.7 - imagePullPolicy: IfNotPresent - #volumeMounts: - #- name: mysql-data - #mountPath: /var/lib/mysql2 - env: - - name: MYSQL_ROOT_PASSWORD - value: root - - name: MYSQL_DATABASE - value: paddlecloud - args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"] - nodeSelector: - kubernetes.io/hostname: minikube diff --git a/k8s/minikube/mysql_service.yaml b/k8s/minikube/mysql_service.yaml deleted file mode 100644 index 11385d31..00000000 --- a/k8s/minikube/mysql_service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: paddle-cloud-mysql-service -spec: - selector: - app: paddle-cloud-mysql - ports: - - protocol: TCP - port: 3306 - targetPort: 3306 diff --git a/k8s/minikube/pfs_deployment.yaml b/k8s/minikube/pfs_deployment.yaml deleted file mode 100644 index 0819b26f..00000000 --- a/k8s/minikube/pfs_deployment.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: pfsserver -spec: - replicas: 1 - template: - metadata: - labels: - app: pfsserver - spec: - volumes: - - name: public-data-storage - hostPath: - path: "/public" - - name: data-storage - hostPath: - path: "/users" - containers: - - name: pfs - imagePullPolicy: IfNotPresent - image: paddlepaddle/pfsserver:latest - env: - - name: CURRENT_DATACENTER - value: "datacenter" - command: ["/pfsserver/pfsserver", "-tokenuri", "http://paddle-cloud-service:8000", "-logtostderr=true", "-log_dir=./log", "-v=4"] - volumeMounts: - - name: data-storage - mountPath: /pfs/datacenter/home - - name: public-data-storage - mountPath: /pfs/datacenter/public/dataset - ports: - - containerPort: 8080 - nodeSelector: - kubernetes.io/hostname: minikube - diff --git a/k8s/minikube/pfs_service.yaml b/k8s/minikube/pfs_service.yaml deleted file mode 100644 index 4e23103a..00000000 --- a/k8s/minikube/pfs_service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: pfs-service -spec: - selector: - app: pfsserver - ports: - - protocol: TCP - port: 8080 - targetPort: 8080 - type: NodePort diff --git a/k8s/minikube/settings.py b/k8s/minikube/settings.py deleted file mode 100644 index 0723d99b..00000000 --- a/k8s/minikube/settings.py +++ /dev/null @@ -1,338 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -from kubernetes import config - -PROJECT_ROOT = os.path.abspath( - os.path.join(os.path.dirname(__file__), os.pardir)) -PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__)) -BASE_DIR = PACKAGE_ROOT - -DEBUG = True - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.mysql", - "NAME": "paddlecloud", - 'USER': 'root', - 'PASSWORD': 'root', - 'HOST': - 'paddle-cloud-mysql-service', # Or an IP Address that your DB is hosted on - 'PORT': '3306', - } -} - -ALLOWED_HOSTS = ["127.0.0.1", "cloud.testpcloud.org", "testpcloud.org"] - -POD_IP = os.getenv("POD_IP") -if POD_IP: - ALLOWED_HOSTS.append(POD_IP) - -REST_FRAMEWORK = { - # Use Django's standard `django.contrib.auth` permissions, - # or allow read-only access for unauthenticated users. - 'DEFAULT_AUTHENTICATION_CLASSES': ( - 'rest_framework.authentication.BasicAuthentication', - 'rest_framework.authentication.SessionAuthentication', - 'rest_framework.authentication.TokenAuthentication', ), - 'DEFAULT_PERMISSION_CLASSES': - ['rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'] -} - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = "UTC" - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = "en-us" - -SITE_ID = int(os.environ.get("SITE_ID", 1)) - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale. -USE_L10N = True - -# If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/home/media/media.lawrence.com/media/" -MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media") - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash. -# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" -MEDIA_URL = "/site_media/media/" - -# Absolute path to the directory static files should be collected to. -# Don"t put anything in this directory yourself; store your static files -# in apps" "static/" subdirectories and in STATICFILES_DIRS. -# Example: "/home/media/media.lawrence.com/static/" -STATIC_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "static") - -# URL prefix for static files. -# Example: "http://media.lawrence.com/static/" -STATIC_URL = "/site_media/static/" - -# Additional locations of static files -STATICFILES_DIRS = [os.path.join(PROJECT_ROOT, "static", "dist"), ] - -STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage" - -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = [ - "django.contrib.staticfiles.finders.FileSystemFinder", - "django.contrib.staticfiles.finders.AppDirectoriesFinder", -] - -# Make this unique, and don't share it with anybody. -SECRET_KEY = "vpu^(5mjr)*tloao^m$wlh)oc(fn1yoiqoq@m0$er((qlocq1k" - -TEMPLATES = [{ - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [os.path.join(PACKAGE_ROOT, "templates"), ], - "APP_DIRS": True, - "OPTIONS": { - "debug": DEBUG, - "context_processors": [ - "django.contrib.auth.context_processors.auth", - "django.template.context_processors.debug", - "django.template.context_processors.i18n", - "django.template.context_processors.media", - "django.template.context_processors.static", - "django.template.context_processors.tz", - "django.template.context_processors.request", - "django.contrib.messages.context_processors.messages", - "account.context_processors.account", - "pinax_theme_bootstrap.context_processors.theme", - ], - }, -}, ] - -MIDDLEWARE = [ - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.auth.middleware.SessionAuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", - "account.middleware.ExpiredPasswordMiddleware", -] - -ROOT_URLCONF = "paddlecloud.urls" - -# Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = "paddlecloud.wsgi.application" - -INSTALLED_APPS = [ - "django.contrib.admin", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.messages", - "django.contrib.sessions", - "django.contrib.sites", - "django.contrib.staticfiles", - # token auth - "rest_framework", - "rest_framework.authtoken", - # paddlecloud apps - # NOTE: load before pinax_theme_bootstrap to customize the theme - "notebook", - - # theme - "bootstrapform", - "pinax_theme_bootstrap", - - # external - "account", - "pinax.eventlog", - "pinax.webanalytics", - - # project - "paddlecloud", -] - -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "filters": { - "require_debug_false": { - "()": "django.utils.log.RequireDebugFalse" - } - }, - 'formatters': { - 'verbose': { - 'format': '[%(levelname)s %(asctime)s @ %(process)d] - %(message)s' - }, - 'simple': { - 'format': '%(levelname)s %(message)s' - }, - }, - "handlers": { - "mail_admins": { - "level": "INFO", - "filters": ["require_debug_false"], - "class": "django.utils.log.AdminEmailHandler" - }, - "stdout": { - "level": "INFO", - "class": "logging.StreamHandler", - "formatter": "verbose" - }, - }, - "loggers": { - "": { - "handlers": ["stdout"], - "level": "INFO", - "propagate": True, - }, - "django.request": { - "handlers": ["mail_admins"], - "level": "INFO", - "propagate": True, - }, - } -} - -FIXTURE_DIRS = [os.path.join(PROJECT_ROOT, "fixtures"), ] - -EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" - -LOGIN_URL = "/account/login" - -ACCOUNT_OPEN_SIGNUP = True -ACCOUNT_EMAIL_UNIQUE = True -ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = False -ACCOUNT_LOGIN_REDIRECT_URL = "home" -ACCOUNT_LOGOUT_REDIRECT_URL = "home" -ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2 -ACCOUNT_USE_AUTH_AUTHENTICATE = True -ACCOUNT_USER_DISPLAY = lambda user: user.email - -ACCOUNT_PASSWORD_EXPIRY = 60 * 60 * 24 * 5 # seconds until pw expires, this example shows five days -ACCOUNT_PASSWORD_USE_HISTORY = True - -AUTHENTICATION_BACKENDS = [ - "account.auth_backends.UsernameAuthenticationBackend", -] - -# secret places to store ca and users keys -CA_PATH = "/certs/ca.crt" -CA_KEY_PATH = "/certs/ca.key" -USER_CERTS_PATH = "/certs" - -K8S_HOST = "https://%s:%s" % (os.getenv("KUBERNETES_SERVICE_HOST"), - os.getenv("KUBERNETES_SERVICE_PORT_HTTPS")) -PADDLE_BOOK_IMAGE = "paddlepaddle/book" -PADDLE_BOOK_PORT = 8888 - -# ============== Datacenter Storage Config Samples ============== -#if Paddle cloud use CephFS as backend storage, configure CEPHFS_CONFIGURATION -#the following is an example: - -#DATACENTERS = { -# "datacenter1":{ -# "fstype": "cephfs", -# "monitors_addr": "172.19.32.166:6789", -# "secret": "ceph-secret", -# "user": "admin", -# "mount_path": "/pfs/%s/home/%s/", # mount_path % ( dc, username ) -# "cephfs_path": "/%s" # cephfs_path % username -# "admin_key": "/certs/admin.secret" -# } -#} -#for HostPath example: -DATACENTERS = { - "testpcloud": { - "fstype": "hostpath", - "host_path": "/%s", - "mount_path": "/pfs/%s/home/%s/" # mount_path % ( dc, username ) - } -} -FSTYPE_CEPHFS = "cephfs" -FSTYPE_HOSTPATH = "hostpath" -#DATACENTERS = { -# "meiyan":{ -# "fstype": FSTYPE_CEPHFS, -# "monitors_addr": ["172.19.32.166:6789"], # must be a list -# "secret": "ceph-secret", -# "user": "admin", -# "mount_path": "/pfs/%s/home/%s/", # mount_path % ( dc, username ) -# "cephfs_path": "/%s", # cephfs_path % username -# "admin_key": "/certs/admin.secret", -# }, -# "public": { -# "fstype": FSTYPE_CEPHFS, -# "monitors_addr": ["172.19.32.166:6789"], # must be a list -# "secret": "ceph-secret", -# "user": "admin", -# "mount_path": "/pfs/%s/public/", # mount_path % ( dc, username ) -# "cephfs_path": "/public", # cephfs_path % username -# "admin_key": "/certs/admin.secret", -# "read_only": True -# } -#} -# where cephfs root is mounted when using cephfs storage service -STORAGE_PATH = "/pfs" -# HACK: define use HDFS or CEPHFS, in cephfs mode jobpath will be /pfs/jobs/[jobname] -STORAGE_MODE = "HDFS" - -# ===================== Docker image registry ===================== -JOB_DOCKER_IMAGE = { - # These images are built by `docker/build_docker.sh` under this repo. - "image": "typhoon1986/paddlecloud-job", - "image_gpu": "typhoon1986/paddlecloud-job:gpu", - # docker registry credentials - "registry_secret": - "job-registry-secret", # put this to None if not using registry login - "docker_config": { - "auths": { - "registry.baidu.com": { - "auth": "eWFueHUwNTpRTndVSGV1Rldl" - } - } - } -} - -# Path store all cuda, nvidia driver libs -NVIDIA_LIB_PATH = "/usr/local/nvidia/lib64" -# etcd image for fault-tolerant jobs -ETCD_IMAGE = "quay.io/coreos/etcd:v3.2.1" - -# domains that allow notebook to enter -NOTEBOOK_DOMAINS = ["cloud.testpcloud.org", "cloud.testpcloud.com"] - -# GPU limit for users -# TODO(Yancey1989): -# 1. Implement -# 2. Move GPU quota to Kubernetes -GPU_QUOTA = {"DEFAULT": {"limit": 2}, "yanxu05@baidu.com": {"limit": 5}} diff --git a/k8s/mysql_deployment.yaml b/k8s/mysql_deployment.yaml deleted file mode 100644 index 57946958..00000000 --- a/k8s/mysql_deployment.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: paddle-cloud-mysql -spec: - replicas: 1 - template: - metadata: - labels: - app: paddle-cloud-mysql - spec: - volumes: - - name: mysql-data - hostPath: - path: /home/pcloud/data/mysql - containers: - - name: mysql - image: mysql:5.7 - volumeMounts: - - name: mysql-data - mountPath: /var/lib/mysql - env: - - name: MYSQL_ROOT_PASSWORD - value: root - - name: MYSQL_DATABASE - value: paddlecloud - args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"] - nodeSelector: - kubernetes.io/hostname: your-host-name diff --git a/k8s/mysql_service.yaml b/k8s/mysql_service.yaml deleted file mode 100644 index 11385d31..00000000 --- a/k8s/mysql_service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: paddle-cloud-mysql-service -spec: - selector: - app: paddle-cloud-mysql - ports: - - protocol: TCP - port: 3306 - targetPort: 3306 diff --git a/k8s/pfs_deployment.yaml b/k8s/pfs_deployment.yaml deleted file mode 100644 index d94c5436..00000000 --- a/k8s/pfs_deployment.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: pfsserver - namespace: paddlecloud -spec: - replicas: 1 - template: - metadata: - labels: - app: pfsserver - spec: - volumes: - - name: public-data-storage - cephfs: - # Notice: change ip to your's - monitors: ["ip:6789"] - user: "admin" - path: "/public/dataset" - secretRef: - name: ceph-secret - readOnly: true - - name: data-storage - cephfs: - # Notice: change ip to your's - monitors: ["ip:6789"] - user: "admin" - path: "/" - secretRef: - name: ceph-secret - containers: - - name: pfs - imagePullPolicy: Always - # Notice: change repo to your's - image: /paddlepaddle/pfsserver:latest - env: - - name: CURRENT_DATACENTER - value: "datacenter" - command: ["/pfsserver/pfsserver", "-tokenuri", "http://paddle-cloud-service:8000", "-logtostderr=true", "-log_dir=./log", "-v=4"] - volumeMounts: - - name: data-storage - mountPath: /pfs/datacenter/home - - name: public-data-storage - mountPath: /pfs/datacenter/public/dataset - ports: - - containerPort: 8080 - diff --git a/k8s/pfs_service.yaml b/k8s/pfs_service.yaml deleted file mode 100644 index 4e23103a..00000000 --- a/k8s/pfs_service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: pfs-service -spec: - selector: - app: pfsserver - ports: - - protocol: TCP - port: 8080 - targetPort: 8080 - type: NodePort diff --git a/k8s/prepare_dataset.yaml b/k8s/prepare_dataset.yaml deleted file mode 100644 index d9dde207..00000000 --- a/k8s/prepare_dataset.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: prepare-cloud-dataset -spec: - template: - metadata: - name: prepare-cloud-dataset - spec: - volumes: - - name: data-storage - cephfs: - monitors: - - - path: "/public" - user: "admin" - secretRef: - name: ceph-secret - containers: - - name: prepare - image: yancey1989/paddlecloud-job - command: ["sh", "-c", "python -c \"import paddle.v2.dataset as dataset; dataset.common.convert('/pfs//public/dataset')\""] - volumeMounts: - - name: data-storage - mountPath: /pfs//public - restartPolicy: Never - diff --git a/k8s/raw_job/Dockerfile b/k8s/raw_job/Dockerfile deleted file mode 100644 index e3aabf76..00000000 --- a/k8s/raw_job/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM paddlepaddle/paddlecloud-job - -RUN mkdir -p /workspace -ADD prepare_data.py train.py /workspace/ -RUN python /workspace/prepare_data.py - diff --git a/k8s/raw_job/prepare_data.py b/k8s/raw_job/prepare_data.py deleted file mode 100644 index b10e298f..00000000 --- a/k8s/raw_job/prepare_data.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle.v2 as paddle - -paddle.dataset.mnist.train() diff --git a/k8s/raw_job/pserver.yaml b/k8s/raw_job/pserver.yaml deleted file mode 100644 index ec21d88b..00000000 --- a/k8s/raw_job/pserver.yaml +++ /dev/null @@ -1,65 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: ReplicaSet -metadata: - name: rawjob-pserver -spec: - replicas: 4 - template: - metadata: - labels: - paddle-job-pserver: rawjob - spec: - hostNetwork: true - imagePullSecrets: - - name: job-registry-secret - containers: - - name: pserver - image: "yourimage" - imagePullPolicy: Always - ports: - - name: jobport-30487 - containerPort: 30487 - env: - - name: PADDLE_JOB_NAME - value: rawjob - - name: TRAINERS - value: "4" - - name: PSERVERS - value: "4" - - name: TOPOLOGY - value: "" - - name: ENTRY - value: "python train.py" - - name: TRAINER_PACKAGE - value: "/workspace" - - name: PADDLE_INIT_PORT - value: "30487" - - name: PADDLE_INIT_NICS - value: "xgbe0" - - name: PADDLE_INIT_TRAINER_COUNT - value: "1" - - name: PADDLE_INIT_PORTS_NUM - value: "1" - - name: PADDLE_INIT_PORTS_NUM_FOR_SPARSE - value: "1" - - name: PADDLE_INIT_NUM_GRADIENT_SERVERS - value: "4" - - name: PADDLE_INIT_NUM_PASSES - value: "1" - - name: PADDLE_INIT_USE_GPU - value: "0" - - name: LD_LIBRARY_PATH - value: "/usr/local/nvidia/lib64" - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: "metadata.namespace" - command: ["paddle_k8s", "start_pserver"] - resources: - requests: - memory: 2Gi - cpu: 1 - limits: - memory: 2Gi - cpu: 1 - diff --git a/k8s/raw_job/train.py b/k8s/raw_job/train.py deleted file mode 100644 index d99c2b4b..00000000 --- a/k8s/raw_job/train.py +++ /dev/null @@ -1,153 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -from PIL import Image -import numpy as np -import paddle.v2 as paddle - -with_gpu = os.getenv('WITH_GPU', '0') != '0' - - -def softmax_regression(img): - predict = paddle.layer.fc(input=img, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def multilayer_perceptron(img): - # The first fully-connected layer - hidden1 = paddle.layer.fc(input=img, - size=128, - act=paddle.activation.Relu()) - # The second fully-connected layer and the according activation function - hidden2 = paddle.layer.fc(input=hidden1, - size=64, - act=paddle.activation.Relu()) - # The thrid fully-connected layer, note that the hidden size should be 10, - # which is the number of unique digits - predict = paddle.layer.fc(input=hidden2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def convolutional_neural_network(img): - # first conv layer - conv_pool_1 = paddle.networks.simple_img_conv_pool( - input=img, - filter_size=5, - num_filters=20, - num_channel=1, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # second conv layer - conv_pool_2 = paddle.networks.simple_img_conv_pool( - input=conv_pool_1, - filter_size=5, - num_filters=50, - num_channel=20, - pool_size=2, - pool_stride=2, - act=paddle.activation.Relu()) - # fully-connected layer - predict = paddle.layer.fc(input=conv_pool_2, - size=10, - act=paddle.activation.Softmax()) - return predict - - -def main(): - paddle.init(use_gpu=with_gpu, trainer_count=1) - - # define network topology - images = paddle.layer.data( - name='pixel', type=paddle.data_type.dense_vector(784)) - label = paddle.layer.data( - name='label', type=paddle.data_type.integer_value(10)) - - # Here we can build the prediction network in different ways. Please - # choose one by uncomment corresponding line. - # predict = softmax_regression(images) - # predict = multilayer_perceptron(images) - predict = convolutional_neural_network(images) - - cost = paddle.layer.classification_cost(input=predict, label=label) - - parameters = paddle.parameters.create(cost) - - optimizer = paddle.optimizer.Momentum( - learning_rate=0.1 / 128.0, - momentum=0.9, - regularization=paddle.optimizer.L2Regularization(rate=0.0005 * 128)) - - trainer = paddle.trainer.SGD(cost=cost, - parameters=parameters, - update_equation=optimizer, - is_local=False) - - lists = [] - - def event_handler(event): - if isinstance(event, paddle.event.EndIteration): - if event.batch_id % 100 == 0: - print "Pass %d, Batch %d, Cost %f, %s" % ( - event.pass_id, event.batch_id, event.cost, event.metrics) - if isinstance(event, paddle.event.EndPass): - # save parameters - with open('params_pass_%d.tar' % event.pass_id, 'w') as f: - trainer.save_parameter_to_tar(f) - - result = trainer.test(reader=paddle.batch( - paddle.dataset.mnist.test(), batch_size=128)) - print "Test with Pass %d, Cost %f, %s\n" % ( - event.pass_id, result.cost, result.metrics) - lists.append((event.pass_id, result.cost, - result.metrics['classification_error_evaluator'])) - - trainer.train( - reader=paddle.batch( - paddle.reader.shuffle( - paddle.dataset.mnist.train(), buf_size=8192), - batch_size=128), - event_handler=event_handler, - num_passes=5) - - # find the best pass - best = sorted(lists, key=lambda list: float(list[1]))[0] - print 'Best pass is %s, testing Avgcost is %s' % (best[0], best[1]) - print 'The classification accuracy is %.2f%%' % ( - 100 - float(best[2]) * 100) - - def load_image(file): - im = Image.open(file).convert('L') - im = im.resize((28, 28), Image.ANTIALIAS) - im = np.array(im).astype(np.float32).flatten() - im = im / 255.0 * 2.0 - 1.0 - return im - - test_data = [] - cur_dir = os.path.dirname(os.path.realpath(__file__)) - test_data.append((load_image(cur_dir + '/image/infer_3.png'), )) - - probs = paddle.infer( - output_layer=predict, parameters=parameters, input=test_data) - lab = np.argsort(-probs) # probs and lab are the results of one batch data - print "Label of image/infer_3.png is: %d" % lab[0][0] - - -if __name__ == '__main__': - main() diff --git a/k8s/raw_job/trainer.yaml b/k8s/raw_job/trainer.yaml deleted file mode 100644 index 8c5aee2b..00000000 --- a/k8s/raw_job/trainer.yaml +++ /dev/null @@ -1,65 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: rawjob-trainer -spec: - parallelism: 4 - completions: 4 - template: - metadata: - labels: - paddle-job: rawjob - spec: - imagePullSecrets: - - name: job-registry-secret - hostNetwork: true - containers: - - name: trainer - image: "yourimage" - imagePullPolicy: Always - command: ["paddle_k8s", "start_trainer", "v2"] - env: - - name: PADDLE_JOB_NAME - value: rawjob - - name: TRAINERS - value: "4" - - name: PSERVERS - value: "4" - - name: TOPOLOGY - value: "" - - name: ENTRY - value: "cd /workspace && python train.py" - - name: TRAINER_PACKAGE - value: "/workspace" - - name: PADDLE_INIT_PORT - value: "30487" - - name: PADDLE_INIT_NICS - value: "xgbe0" - - name: PADDLE_INIT_TRAINER_COUNT - value: "1" - - name: PADDLE_INIT_PORTS_NUM - value: "1" - - name: PADDLE_INIT_PORTS_NUM_FOR_SPARSE - value: "1" - - name: PADDLE_INIT_NUM_GRADIENT_SERVERS - value: "4" - - name: PADDLE_INIT_NUM_PASSES - value: "1" - - name: PADDLE_INIT_USE_GPU - value: "0" - - name: LD_LIBRARY_PATH - value: "/usr/local/nvidia/lib64" - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: "metadata.namespace" - resources: - requests: - memory: 1Gi - cpu: 1 - limits: - memory: 1Gi - cpu: 1 - #alpha.kubernetes.io/nvidia-gpu: 1 - restartPolicy: Never - diff --git a/go/edl/autoscaler.go b/pkg/autoscaler.go similarity index 99% rename from go/edl/autoscaler.go rename to pkg/autoscaler.go index a98198e9..52b0cef1 100644 --- a/go/edl/autoscaler.go +++ b/pkg/autoscaler.go @@ -23,8 +23,8 @@ import ( batchv1 "k8s.io/api/batch/v1" "k8s.io/apimachinery/pkg/api/resource" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" log "github.com/inconshreveable/log15" + edlresource "github.com/paddlepaddle/edl/pkg/resource" ) const ( diff --git a/go/edl/autoscaler_internal_test.go b/pkg/autoscaler_internal_test.go similarity index 99% rename from go/edl/autoscaler_internal_test.go rename to pkg/autoscaler_internal_test.go index 0d6cd3ac..8df81e58 100644 --- a/go/edl/autoscaler_internal_test.go +++ b/pkg/autoscaler_internal_test.go @@ -21,7 +21,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" + edlresource "github.com/paddlepaddle/edl/pkg/resource" "github.com/stretchr/testify/assert" ) diff --git a/go/edl/autoscaler_test.go b/pkg/autoscaler_test.go similarity index 100% rename from go/edl/autoscaler_test.go rename to pkg/autoscaler_test.go diff --git a/go/edl/cluster.go b/pkg/cluster.go similarity index 99% rename from go/edl/cluster.go rename to pkg/cluster.go index dd9cdc21..21844735 100644 --- a/go/edl/cluster.go +++ b/pkg/cluster.go @@ -17,7 +17,7 @@ package edl import ( "fmt" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" + edlresource "github.com/paddlepaddle/edl/pkg/resource" batchv1 "k8s.io/api/batch/v1" "k8s.io/api/core/v1" "k8s.io/api/extensions/v1beta1" diff --git a/go/edl/controller.go b/pkg/controller.go similarity index 98% rename from go/edl/controller.go rename to pkg/controller.go index 9f729e8e..cd00868e 100644 --- a/go/edl/controller.go +++ b/pkg/controller.go @@ -37,7 +37,7 @@ import ( "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" + edlresource "github.com/paddlepaddle/edl/pkg/resource" ) // Controller for dispatching TrainingJob resource. diff --git a/go/edl/jobparser.go b/pkg/jobparser.go similarity index 99% rename from go/edl/jobparser.go rename to pkg/jobparser.go index ae1a8c13..0f7e2805 100644 --- a/go/edl/jobparser.go +++ b/pkg/jobparser.go @@ -19,7 +19,7 @@ import ( "fmt" "strconv" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" + edlresource "github.com/paddlepaddle/edl/pkg/resource" batchv1 "k8s.io/api/batch/v1" "k8s.io/api/core/v1" v1beta1 "k8s.io/api/extensions/v1beta1" diff --git a/go/edl/resource/deepcopy_gen.sh b/pkg/resource/deepcopy_gen.sh similarity index 100% rename from go/edl/resource/deepcopy_gen.sh rename to pkg/resource/deepcopy_gen.sh diff --git a/go/edl/resource/training_job.go b/pkg/resource/training_job.go similarity index 100% rename from go/edl/resource/training_job.go rename to pkg/resource/training_job.go diff --git a/go/edl/resource/training_job_test.go b/pkg/resource/training_job_test.go similarity index 95% rename from go/edl/resource/training_job_test.go rename to pkg/resource/training_job_test.go index f81d608e..a3dade55 100644 --- a/go/edl/resource/training_job_test.go +++ b/pkg/resource/training_job_test.go @@ -20,7 +20,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" + edlresource "github.com/paddlepaddle/edl/pkg/resource" "github.com/stretchr/testify/assert" ) diff --git a/go/edl/resource/zz_generated.deepcopy.go b/pkg/resource/zz_generated.deepcopy.go similarity index 100% rename from go/edl/resource/zz_generated.deepcopy.go rename to pkg/resource/zz_generated.deepcopy.go diff --git a/go/edl/trainingjober.go b/pkg/trainingjober.go similarity index 98% rename from go/edl/trainingjober.go rename to pkg/trainingjober.go index bc37e9a8..476e0b30 100644 --- a/go/edl/trainingjober.go +++ b/pkg/trainingjober.go @@ -18,8 +18,8 @@ import ( "fmt" "time" - edlresource "github.com/PaddlePaddle/cloud/go/edl/resource" log "github.com/inconshreveable/log15" + edlresource "github.com/paddlepaddle/edl/pkg/resource" ) const ( diff --git a/go/edl/utils.go b/pkg/utils.go similarity index 100% rename from go/edl/utils.go rename to pkg/utils.go diff --git a/go/edl/utils_test.go b/pkg/utils_test.go similarity index 100% rename from go/edl/utils_test.go rename to pkg/utils_test.go diff --git a/python/paddlecloud/.babelrc b/python/paddlecloud/.babelrc deleted file mode 100644 index 268b852a..00000000 --- a/python/paddlecloud/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - "es2015", - "stage-1" - ], - "ignore": [ - "node_modules/", - "dist/" - ] -} diff --git a/python/paddlecloud/.eslintrc.json b/python/paddlecloud/.eslintrc.json deleted file mode 100644 index b175803c..00000000 --- a/python/paddlecloud/.eslintrc.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "env": { - "browser": true, - "commonjs": true, - "es6": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaFeatures": { - "experimentalObjectRestSpread": true - }, - "sourceType": "module" - }, - "plugins": [ - "babel" - ], - "rules": { - "linebreak-style": [ - "error", - "unix" - ], - "quotes": [ - "warn", - "single" - ], - "semi": [ - "warn", - "always" - ], - "brace-style": 1, - "no-console": 1, - "no-multi-spaces": 1, - "no-negated-condition": 1, - "no-undef": 0, - "no-unused-vars": 1, - "prefer-template": 1, - "array-bracket-spacing": 0, - "babel/array-bracket-spacing": 1, - "object-curly-spacing": 0, - "object-shorthand": 0, - "arrow-parens": 0, - "babel/arrow-parens": 0 - } -} diff --git a/python/paddlecloud/.gitignore b/python/paddlecloud/.gitignore deleted file mode 100644 index 51dcedc1..00000000 --- a/python/paddlecloud/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -*.pyc -node_modules/ -dev.db -site_media/ -static/dist/ -*.crt -*.key -*.db -*.csr -paddlecloud.key.org diff --git a/python/paddlecloud/CONTRIBUTING.md b/python/paddlecloud/CONTRIBUTING.md deleted file mode 100644 index 10734072..00000000 --- a/python/paddlecloud/CONTRIBUTING.md +++ /dev/null @@ -1,3 +0,0 @@ -# How to Contribute - -Please check out the Pinax Docs [How to Contribute](http://pinaxproject.com/pinax/how_to_contribute/) guide. diff --git a/python/paddlecloud/Dockerfile b/python/paddlecloud/Dockerfile deleted file mode 100644 index b1b6d5ec..00000000 --- a/python/paddlecloud/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM python:2.7.13-alpine -RUN apk add --update nodejs openssl gcc mysql-dev musl-dev linux-headers mailx - -ADD ./ /pcloud -RUN cd /pcloud && \ -rm -rf node_modules && npm run clean && \ -npm install && pip install -r requirements.txt && npm run build && \ -npm run copy:fonts && npm run copy:images && npm run copy:fonts && npm run copy:images && \ -npm run optimize -WORKDIR /pcloud - -# TODO -CMD ["sh", "-c", "sleep 60 ; ./manage.py migrate; ./manage.py loaddata sites; ./manage.py runserver 0.0.0.0:$PORT"] diff --git a/python/paddlecloud/fixtures/sites.json b/python/paddlecloud/fixtures/sites.json deleted file mode 100644 index bda24f81..00000000 --- a/python/paddlecloud/fixtures/sites.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "pk": 1, - "model": "sites.site", - "fields": { - "domain": "localhost:8000", - "name": "example.com [localhost]" - } - }, - { - "pk": 2, - "model": "sites.site", - "fields": { - "domain": "example.com", - "name": "example.com" - } - } -] diff --git a/python/paddlecloud/manage.py b/python/paddlecloud/manage.py deleted file mode 100755 index 9dd1966c..00000000 --- a/python/paddlecloud/manage.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "paddlecloud.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/python/paddlecloud/notebook/__init__.py b/python/paddlecloud/notebook/__init__.py deleted file mode 100644 index eca2dce1..00000000 --- a/python/paddlecloud/notebook/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/python/paddlecloud/notebook/admin.py b/python/paddlecloud/notebook/admin.py deleted file mode 100644 index b1f6482c..00000000 --- a/python/paddlecloud/notebook/admin.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.contrib import admin -from django.contrib.auth.admin import UserAdmin as BaseUserAdmin -from django.contrib.auth.models import User - -from notebook.models import PaddleUser - - -# Define an inline admin descriptor for PaddleUser model -# which acts a bit like a singleton -class PaddleUserInline(admin.StackedInline): - model = PaddleUser - can_delete = False - verbose_name_plural = 'PaddleUser' - - -# Define a new User admin -class UserAdmin(BaseUserAdmin): - inlines = (PaddleUserInline, ) - - -# Re-register UserAdmin -admin.site.unregister(User) -admin.site.register(User, UserAdmin) diff --git a/python/paddlecloud/notebook/apps.py b/python/paddlecloud/notebook/apps.py deleted file mode 100644 index 48601ce0..00000000 --- a/python/paddlecloud/notebook/apps.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.apps import AppConfig - - -class NotebookConfig(AppConfig): - name = 'notebook' diff --git a/python/paddlecloud/notebook/forms.py b/python/paddlecloud/notebook/forms.py deleted file mode 100644 index e58363b0..00000000 --- a/python/paddlecloud/notebook/forms.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django import forms -from django.forms.extras.widgets import SelectDateWidget - -import account.forms - - -class SignupForm(account.forms.SignupForm): - def __init__(self, *args, **kwargs): - super(SignupForm, self).__init__(*args, **kwargs) - del self.fields["username"] - self.fields.keyOrder = [ - 'email', 'password', 'password_confirm', 'school', 'studentID', - 'major', 'code' - ] - - school = forms.CharField(max_length=256) - studentID = forms.CharField(max_length=512) - major = forms.CharField(max_length=256) - - -class SettingsForm(account.forms.SettingsForm): - def __init__(self, *args, **kwargs): - super(SettingsForm, self).__init__(*args, **kwargs) - instance = getattr(self, 'instance', None) - if instance and instance.pk: - self.fields['email'].widget.attrs['readonly'] = True - - school = forms.CharField(max_length=256) - studentID = forms.CharField(max_length=512) - major = forms.CharField(max_length=256) diff --git a/python/paddlecloud/notebook/migrations/0001_initial.py b/python/paddlecloud/notebook/migrations/0001_initial.py deleted file mode 100644 index 8e31da2a..00000000 --- a/python/paddlecloud/notebook/migrations/0001_initial.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-04-26 02:58 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='PaddleUser', - fields=[ - ('id', models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name='ID')), - ('school', models.CharField(max_length=256)), - ('studentID', models.CharField(max_length=512)), - ('major', models.CharField(max_length=256)), - ('user', models.OneToOneField( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL)), - ], ), - ] diff --git a/python/paddlecloud/notebook/migrations/__init__.py b/python/paddlecloud/notebook/migrations/__init__.py deleted file mode 100644 index eca2dce1..00000000 --- a/python/paddlecloud/notebook/migrations/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/python/paddlecloud/notebook/models.py b/python/paddlecloud/notebook/models.py deleted file mode 100644 index e49b0a89..00000000 --- a/python/paddlecloud/notebook/models.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models -from django.contrib.auth.models import User - - -class PaddleUser(models.Model): - user = models.OneToOneField(User, on_delete=models.CASCADE) - school = models.CharField(max_length=256) - studentID = models.CharField(max_length=512) - major = models.CharField(max_length=256) - - -class FilePublish(models.Model): - path = models.CharField(max_length=4096) - url = models.CharField(max_length=4096) - uuid = models.CharField(max_length=256) - user = models.ForeignKey(User) diff --git a/python/paddlecloud/notebook/static/css/home.css b/python/paddlecloud/notebook/static/css/home.css deleted file mode 100644 index 087d78ff..00000000 --- a/python/paddlecloud/notebook/static/css/home.css +++ /dev/null @@ -1,2808 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url(data:application/vnd.ms-fontobject;base64,bocCAKyGAgABAAIAAAAAAAAAAAAAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAWXjPkAAAAAAAAAAAAAAAAAAAAAAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAADgBSAGUAZwB1AGwAYQByAAAAJABWAGUAcgBzAGkAbwBuACAANAAuADcALgAwACAAMgAwADEANgAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAAAAAAAQAAAA0AgAADAFBGRlRNa75HuQAChpAAAAAcR0RFRgLwAAQAAoZwAAAAIE9TLzKIMnpAAAABWAAAAGBjbWFwCr86fwAADKgAAALyZ2FzcP//AAMAAoZoAAAACGdseWaP965NAAAarAACTLxoZWFkEInlLQAAANwAAAA2aGhlYQ8DCrUAAAEUAAAAJGhtdHhFeRiFAAABuAAACvBsb2NhAvWiXAAAD5wAAAsQbWF4cAMsAhwAAAE4AAAAIG5hbWXjl4usAAJnaAAABIZwb3N0r4+boQACa/AAABp1AAEAAAAEAcuQz3hZXw889QALBwAAAAAA1DPNMgAAAADUM80y////AAkBBgAAAAAIAAIAAQAAAAAAAQAABgD/AAAACQD/////CQEAAQAAAAAAAAAAAAAAAAAAArUAAQAAAsMCGQAnAAAAAAACAAAAAQABAAAAQAAAAAAAAAADBmkBkAAFAAAEjAQzAAAAhgSMBDMAAAJzAAABigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABweXJzAEAAIPUABgD/AAAABgABAAAAAAEAAAAAAAAAAAAAACAAAQOAAHAAAAAAAlUAAAHAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAABdBgAAAAaAAAAHAAAABwAAAAaAAAAGgAAABQAAAAeAAAAGgAAABwAAAAcAAAAHAAB5BYAAbgaAAAAGgAAABgAAAAcAAAAGAAAABYAAAAaAABoGAAAABgAAAAeAADIGgAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAASAAAAHAABABoAAAAMAAAAEgAAABoAAAAWAAAAHAAAABgAAAAeAAAAGgAAKBQAAAAaAAAAHgAAABoAAAAWAAAAEAAAABwAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAeAAAAGAAAABAAAAAYAAAAEAAAABwAAAAaAAAAGgAAABwAAAAQAAAAHAAAABoAAegWAAAAGAAAABgAAAAaAAAAHAAAABAAAAAYCAAEFAACaBQAAWgYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAABABgAAAAaAADUGgAA1BwAAAAYAAAAGAAANBYAAAAWAAAAGgAB6BgAAAAYAAAAHAAAABYAAAAcAAAAHAAAABwAAEAWAAAAGgAAABwAAAAcAAAAGAAAABwAAWgcAAFoHgAAABoAAAAaAAAAHgAAAAwAAQAcAAAAIAAAABgAAAAYAAAAHAAAABwAAAAeAAAAHAAAABgAAAAYAAAADgAAABwAAAAaAAAAGAAAABIAAAAcAAAAGAAAABoAAAAYAAAAGgAAABgAAAAWAAAAFgAAABQAAAAYAAAAGgAAsBAAAXwYAAAAGgAAAB4AAAAWAAAAGAAAABwAAAAcAAEAGAAACBwAAAAcAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABoAAFQcAAAAFgAAFBwAAAAYAAAAHgAAABoAAEAeAAAAGgABzBwAAAQcAAAAFgAAEBgAAAAYAAAAGAAAABwAAAAcAAA8HAAAABgAAAAaAAAAGgAAbBwAAQAYAAAAGAAAABgAAAAkAAAAHgAAABAAAAAQAAAACgABAAoAAAAaAAAAEAAAABAAAAAQAAAAHAAAABgAAAAYAAAAHAAAoBwAAAAcAAAAHAAAAA4AAAQcAAAAGgAAABwAAAAQAAAAHAAAAB4AAAAeAAAAFgAAABYAAAAcAAAAHAABAB4AAAAWAAAAGAAAABYAAAAWAAAAHgABABwAAAAeAAAAGgABABgAAAAYAAAAEAAAtBAAADQSAAE0EgABNAoAALQKAAA0EgABNBIAATQeAAAAHgAAABIAAAAMAAAAGAAAABoAAAAaAAAAHAABABgAAAAcAAAAGgAAABoAAAAeAAAAHAAAABwAAAAYAAAAGAAAABgAAAAeAAAAHgAAABwAAQAcAAEAGgAANB4AALQcAAAAGgAACBYAAAgaAAAAEAAAABoAAAAQAAGACgAAAAoAAYgYAAAUGAAAFB4AAAQaAAAAEgAAABYAADQUAAAAGgAAABYAAAwaAACQHAAAABgAAAAYAAAAGAAAABgAAAAWAAAAHAAAMBwAAAASAAAAGAAAABYAAAAGAAAAGAAAABgAAAAcAADYGAAAABYAAAAQAAAMEAAADBgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAEAAAABAAAAAQAADQDggAABAMABAUAAAAHAAAABQAAOAYAAAAGAAAABoAAIgaAACIHAAAiBwAAIgYAACIGAAAiBoAAAAaAAAAGAAAABgAAGwWAAAUGAAAABwAAAAcAAEAGAAALBgAAAAYAAAAGAAAABYAAAAYAAAAEAABEBgAAAAMAAAMDAAADBwAAQAcAAAAFgAAABoAAAAWAAAAGAAALBgAAAAYAAAAFAAAsBgAAAAUAAAAEAAAABgAAAAcAACwGAAAABwAAQAaAACAHgP//BwAAAAYAAAAFgAAABQAAFQYAAAAGAAAABgAAAAYAAAAGgAAABgAAAASAAAAFgAAACIAAAAaAAAAGAAAABwAAAAcAAAAIAAAACQAAAAYAAG0GAAAABwAAAAYAAAAGAAAAB4AAAAYAAAAIAAAABgAAAAf2ACkGAAAABgAAAAYAAAAHAAAABgAAAAUAAEAGgAAAAwAAQAcAAAAJAAAACAAAAAYAAAAHAAAABgAAAAcAABAIAAAACAAAAAYAACAGAAAABAAAAAkAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAJwcAAAAIAAAABwAAAAcAACAHAAATBwAAAAYAAAAHAABEBgAAAAUAADkHAAASCAAAAAcAAAAHAAAABgAAAAYAAAAHAAA+BQAAGAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAGQcAAGQGAABZCAAAAAgAACoHAAAABgAACQcAACcJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAIAAAOCAAADgWAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAHAAAACAAAAAcAAAAGAAAACAAAAAgAAAAJAAAABgAAAAgAAAAFAAALCAAAAAYAAAAGAAAABgAAAAgAAAAGAAAABgAAAAgAAAAIAAAABgAAAAgAAAAIAAAABoAAAAaAAAAIAAAACAAAEwYAAAAJAAAABgAAAAcAAAAFAAACBgAAAAUAAAAGAAACBwAAAAcA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AaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAAiAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTANICVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxAJQFZ2xhc3MFbXVzaWMGc2VhcmNoCGVudmVsb3BlBWhlYXJ0BHN0YXIKc3Rhcl9lbXB0eQR1c2VyBGZpbG0IdGhfbGFyZ2UCdGgHdGhfbGlzdAJvawZyZW1vdmUHem9vbV9pbgh6b29tX291dANvZmYGc2lnbmFsA2NvZwV0cmFzaARob21lCGZpbGVfYWx0BHRpbWUEcm9hZAxkb3dubG9hZF9hbHQIZG93bmxvYWQGdXBsb2FkBWluYm94C3BsYXlfY2lyY2xlBnJlcGVhdAdyZWZyZXNoCGxpc3RfYWx0BGxvY2sEZmxhZwpoZWFkcGhvbmVzCnZvbHVtZV9vZmYLdm9sdW1lX2Rvd24Jdm9sdW1lX3VwBnFyY29kZQdiYXJjb2RlA3RhZwR0YWdzBGJvb2sIYm9va21hcmsFcHJpbnQGY2FtZXJhBGZvbnQEYm9sZAZpdGFsaWMLdGV4dF9oZWlnaHQKdGV4dF93aWR0aAphbGlnbl9sZWZ0DGFsaWduX2NlbnRlcgthbGlnbl9yaWdodA1hbGlnbl9qdXN0aWZ5BGxpc3QLaW5kZW50X2xlZnQMaW5kZW50X3JpZ2h0DmZhY2V0aW1lX3ZpZGVvB3BpY3R1cmUGcGVuY2lsCm1hcF9tYXJrZXIGYWRqdXN0BHRpbnQEZWRpdAVzaGFyZQVjaGVjawRtb3ZlDXN0ZXBfYmFja3dhcmQNZmFzdF9iYWNrd2FyZAhiYWNrd2FyZARwbGF5BXBhdXNlBHN0b3AHZm9yd2FyZAxmYXN0X2ZvcndhcmQMc3RlcF9mb3J3YXJkBWVqZWN0DGNoZXZyb25fbGVmdA1jaGV2cm9uX3JpZ2h0CXBsdXNfc2lnbgptaW51c19zaWduC3JlbW92ZV9zaWduB29rX3NpZ24NcXVlc3Rpb25fc2lnbglpbmZvX3NpZ24Kc2NyZWVuc2hvdA1yZW1vdmVfY2lyY2xlCW9rX2NpcmNsZQpiYW5fY2lyY2xlCmFycm93X2xlZnQLYXJyb3dfcmlnaHQIYXJyb3dfdXAKYXJyb3dfZG93bglzaGFyZV9hbHQLcmVzaXplX2Z1bGwMcmVzaXplX3NtYWxsEGV4Y2xhbWF0aW9uX3NpZ24EZ2lmdARsZWFmBGZpcmUIZXllX29wZW4JZXllX2Nsb3NlDHdhcm5pbmdfc2lnbgVwbGFuZQhjYWxlbmRhcgZyYW5kb20HY29tbWVudAZtYWduZXQKY2hldnJvbl91cAxjaGV2cm9uX2Rvd24HcmV0d2VldA1zaG9wcGluZ19jYXJ0DGZvbGRlcl9jbG9zZQtmb2xkZXJfb3Blbg9yZXNpemVfdmVydGljYWwRcmVzaXplX2hvcml6b250YWwJYmFyX2NoYXJ0DHR3aXR0ZXJfc2lnbg1mYWNlYm9va19zaWduDGNhbWVyYV9yZXRybwNrZXkEY29ncwhjb21tZW50cw10aHVtYnNfdXBfYWx0D3RodW1ic19kb3duX2FsdAlzdGFyX2hhbGYLaGVhcnRfZW1wdHkHc2lnbm91dA1saW5rZWRpbl9zaWduB3B1c2hwaW4NZXh0ZXJuYWxfbGluawZzaWduaW4GdHJvcGh5C2dpdGh1Yl9zaWduCnVwbG9hZF9hbHQFbGVtb24FcGhvbmULY2hlY2tfZW1wdHkOYm9va21hcmtfZW1wdHkKcGhvbmVfc2lnbgd0d2l0dGVyCGZhY2Vib29rBmdpdGh1YgZ1bmxvY2sLY3JlZGl0X2NhcmQDcnNzA2hkZAhidWxsaG9ybgRiZWxsC2NlcnRpZmljYXRlCmhhbmRfcmlnaHQJaGFuZF9sZWZ0B2hhbmRfdXAJaGFuZF9kb3duEWNpcmNsZV9hcnJvd19sZWZ0EmNpcmNsZV9hcnJvd19yaWdodA9jaXJjbGVfYXJyb3dfdXARY2lyY2xlX2Fycm93X2Rvd24FZ2xvYmUGd3JlbmNoBXRhc2tzBmZpbHRlcglicmllZmNhc2UKZnVsbHNjcmVlbgVncm91cARsaW5rBWNsb3VkBmJlYWtlcgNjdXQEY29weQpwYXBlcl9jbGlwBHNhdmUKc2lnbl9ibGFuawdyZW9yZGVyAnVsAm9sDXN0cmlrZXRocm91Z2gJdW5kZXJsaW5lBXRhYmxlBW1hZ2ljBXRydWNrCXBpbnRlcmVzdA5waW50ZXJlc3Rfc2lnbhBnb29nbGVfcGx1c19zaWduC2dvb2dsZV9wbHVzBW1vbmV5CmNhcmV0X2Rvd24IY2FyZXRfdXAKY2FyZXRfbGVmdAtjYXJldF9yaWdodAdjb2x1bW5zBHNvcnQJc29ydF9kb3duB3NvcnRfdXAMZW52ZWxvcGVfYWx0CGxpbmtlZGluBHVuZG8FbGVnYWwJZGFzaGJvYXJkC2NvbW1lbnRfYWx0DGNvbW1lbnRzX2FsdARib2x0B3NpdGVtYXAIdW1icmVsbGEFcGFzdGUKbGlnaHRfYnVsYghleGNoYW5nZQ5jbG91ZF9kb3dubG9hZAxjbG91ZF91cGxvYWQHdXNlcl9tZAtzdGV0aG9zY29wZQhzdWl0Y2FzZQhiZWxsX2FsdAZjb2ZmZWUEZm9vZA1maWxlX3RleHRfYWx0CGJ1aWxkaW5nCGhvc3BpdGFsCWFtYnVsYW5jZQZtZWRraXQLZmlnaHRlcl9qZXQEYmVlcgZoX3NpZ24EZjBmZRFkb3VibGVfYW5nbGVfbGVmdBJkb3VibGVfYW5nbGVfcmlnaHQPZG91YmxlX2FuZ2xlX3VwEWRvdWJsZV9hbmdsZV9kb3duCmFuZ2xlX2xlZnQLYW5nbGVfcmlnaHQIYW5nbGVfdXAKYW5nbGVfZG93bgdkZXNrdG9wBmxhcHRvcAZ0YWJsZXQMbW9iaWxlX3Bob25lDGNpcmNsZV9ibGFuawpxdW90ZV9sZWZ0C3F1b3RlX3JpZ2h0B3NwaW5uZXIGY2lyY2xlBXJlcGx5CmdpdGh1Yl9hbHQQZm9sZGVyX2Nsb3NlX2FsdA9mb2xkZXJfb3Blbl9hbHQKZXhwYW5kX2FsdAxjb2xsYXBzZV9hbHQFc21pbGUFZnJvd24DbWVoB2dhbWVwYWQIa2V5Ym9hcmQIZmxhZ19hbHQOZmxhZ19jaGVja2VyZWQIdGVybWluYWwEY29kZQlyZXBseV9hbGwPc3Rhcl9oYWxmX2VtcHR5DmxvY2F0aW9uX2Fycm93BGNyb3AJY29kZV9mb3JrBnVubGluawRfMjc5C2V4Y2xhbWF0aW9uC3N1cGVyc2NyaXB0CXN1YnNjcmlwdARfMjgzDHB1enpsZV9waWVjZQptaWNyb3Bob25lDm1pY3JvcGhvbmVfb2ZmBnNoaWVsZA5jYWxlbmRhcl9lbXB0eRFmaXJlX2V4dGluZ3Vpc2hlcgZyb2NrZXQGbWF4Y2RuEWNoZXZyb25fc2lnbl9sZWZ0EmNoZXZyb25fc2lnbl9yaWdodA9jaGV2cm9uX3NpZ25fdXARY2hldnJvbl9zaWduX2Rvd24FaHRtbDUEY3NzMwZhbmNob3IKdW5sb2NrX2FsdAhidWxsc2V5ZRNlbGxpcHNpc19ob3Jpem9udGFsEWVsbGlwc2lzX3ZlcnRpY2FsBF8zMDMJcGxheV9zaWduBnRpY2tldA5taW51c19zaWduX2FsdAtjaGVja19taW51cwhsZXZlbF91cApsZXZlbF9kb3duCmNoZWNrX3NpZ24JZWRpdF9zaWduBF8zMTIKc2hhcmVfc2lnbgdjb21wYXNzCGNvbGxhcHNlDGNvbGxhcHNlX3RvcARfMzE3A2V1cgNnYnADdXNkA2lucgNqcHkDcnViA2tydwNidGMEZmlsZQlmaWxlX3RleHQQc29ydF9ieV9hbHBoYWJldARfMzI5EnNvcnRfYnlfYXR0cmlidXRlcxZzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0DXNvcnRfYnlfb3JkZXIRc29ydF9ieV9vcmRlcl9hbHQEXzMzNARfMzM1DHlvdXR1YmVfc2lnbgd5b3V0dWJlBHhpbmcJeGluZ19zaWduDHlvdXR1YmVfcGxheQdkcm9wYm94DXN0YWNrZXhjaGFuZ2UJaW5zdGFncmFtBmZsaWNrcgNhZG4EZjE3MQ5iaXRidWNrZXRfc2lnbgZ0dW1ibHILdHVtYmxyX3NpZ24PbG9uZ19hcnJvd19kb3duDWxvbmdfYXJyb3dfdXAPbG9uZ19hcnJvd19sZWZ0EGxvbmdfYXJyb3dfcmlnaHQHd2luZG93cwdhbmRyb2lkBWxpbnV4B2RyaWJibGUFc2t5cGUKZm91cnNxdWFyZQZ0cmVsbG8GZmVtYWxlBG1hbGUGZ2l0dGlwA3N1bgRfMzY2B2FyY2hpdmUDYnVnAnZrBXdlaWJvBnJlbnJlbgRfMzcyDnN0YWNrX2V4Y2hhbmdlBF8zNzQVYXJyb3dfY2lyY2xlX2FsdF9sZWZ0BF8zNzYOZG90X2NpcmNsZV9hbHQEXzM3OAx2aW1lb19zcXVhcmUEXzM4MA1wbHVzX3NxdWFyZV9vBF8zODIEXzM4MwRfMzg0BF8zODUEXzM4NgRfMzg3BF8zODgEXzM4OQd1bmlGMUEwBGYxYTEEXzM5MgRfMzkzBGYxYTQEXzM5NQRfMzk2BF8zOTcEXzM5OARfMzk5BF80MDAEZjFhYgRfNDAyBF80MDMEXzQwNAd1bmlGMUIxBF80MDYEXzQwNwRfNDA4BF80MDkEXzQxMARfNDExBF80MTIEXzQxMwRfNDE0BF80MTUEXzQxNgRfNDE3BF80MTgEXzQxOQd1bmlGMUMwB3VuaUYxQzEEXzQyMgRfNDIzBF80MjQEXzQyNQRfNDI2BF80MjcEXzQyOARfNDI5BF80MzAEXzQzMQRfNDMyBF80MzMEXzQzNAd1bmlGMUQwB3VuaUYxRDEHdW5pRjFEMgRfNDM4BF80MzkHdW5pRjFENQd1bmlGMUQ2B3VuaUYxRDcEXzQ0MwRfNDQ0BF80NDUEXzQ0NgRfNDQ3BF80NDgEXzQ0OQd1bmlGMUUwBF80NTEEXzQ1MgRfNDUzBF80NTQEXzQ1NQRfNDU2BF80NTcEXzQ1OARfNDU5BF80NjAEXzQ2MQRfNDYyBF80NjMEXzQ2NAd1bmlGMUYwBF80NjYEXzQ2NwRmMWYzBF80NjkEXzQ3MARfNDcxBF80NzIEXzQ3MwRfNDc0BF80NzUEXzQ3NgRmMWZjBF80NzgEXzQ3OQRfNDgwBF80ODEEXzQ4MgRfNDgzBF80ODQEXzQ4NQRfNDg2BF80ODcEXzQ4OARfNDg5BF80OTAEXzQ5MQRfNDkyBF80OTMEXzQ5NARmMjEwBF80OTYEZjIxMgRfNDk4BF80OTkEXzUwMARfNTAxBF81MDIEXzUwMwRfNTA0BF81MDUEXzUwNgRfNTA3BF81MDgEXzUwOQV2ZW51cwRfNTExBF81MTIEXzUxMwRfNTE0BF81MTUEXzUxNgRfNTE3BF81MTgEXzUxOQRfNTIwBF81MjEEXzUyMgRfNTIzBF81MjQEXzUyNQRfNTI2BF81MjcEXzUyOARfNTI5BF81MzAEXzUzMQRfNTMyBF81MzMEXzUzNARfNTM1BF81MzYEXzUzNwRfNTM4BF81MzkEXzU0MARfNTQxBF81NDIEXzU0MwRfNTQ0BF81NDUEXzU0NgRfNTQ3BF81NDgEXzU0OQRfNTUwBF81NTEEXzU1MgRfNTUzBF81NTQEXzU1NQRfNTU2BF81NTcEXzU1OARfNTU5BF81NjAEXzU2MQRfNTYyBF81NjMEXzU2NARfNTY1BF81NjYEXzU2NwRfNTY4BF81NjkEZjI2MARmMjYxBF81NzIEZjI2MwRfNTc0BF81NzUEXzU3NgRfNTc3BF81NzgEXzU3OQRfNTgwBF81ODEEXzU4MgRfNTgzBF81ODQEXzU4NQRfNTg2BF81ODcEXzU4OARfNTg5BF81OTAEXzU5MQRfNTkyBF81OTMEXzU5NARfNTk1BF81OTYEXzU5NwRfNTk4BGYyN2UHdW5pRjI4MAd1bmlGMjgxBF82MDIEXzYwMwRfNjA0B3VuaUYyODUHdW5pRjI4NgRfNjA3BF82MDgEXzYwOQRfNjEwBF82MTEEXzYxMgRfNjEzBF82MTQEXzYxNQRfNjE2BF82MTcEXzYxOARfNjE5BF82MjAEXzYyMQRfNjIyBF82MjMEXzYyNARfNjI1BF82MjYEXzYyNwRfNjI4BF82MjkHdW5pRjJBMAd1bmlGMkExB3VuaUYyQTIHdW5pRjJBMwd1bmlGMkE0B3VuaUYyQTUHdW5pRjJBNgd1bmlGMkE3B3VuaUYyQTgHdW5pRjJBOQd1bmlGMkFBB3VuaUYyQUIHdW5pRjJBQwd1bmlGMkFEB3VuaUYyQUUHdW5pRjJCMAd1bmlGMkIxB3VuaUYyQjIHdW5pRjJCMwd1bmlGMkI0B3VuaUYyQjUHdW5pRjJCNgd1bmlGMkI3B3VuaUYyQjgHdW5pRjJCOQd1bmlGMkJBB3VuaUYyQkIHdW5pRjJCQwd1bmlGMkJEB3VuaUYyQkUHdW5pRjJDMAd1bmlGMkMxB3VuaUYyQzIHdW5pRjJDMwd1bmlGMkM0B3VuaUYyQzUHdW5pRjJDNgd1bmlGMkM3B3VuaUYyQzgHdW5pRjJDOQd1bmlGMkNBB3VuaUYyQ0IHdW5pRjJDQwd1bmlGMkNEB3VuaUYyQ0UHdW5pRjJEMAd1bmlGMkQxB3VuaUYyRDIHdW5pRjJEMwd1bmlGMkQ0B3VuaUYyRDUHdW5pRjJENgd1bmlGMkQ3B3VuaUYyRDgHdW5pRjJEOQd1bmlGMkRBB3VuaUYyREIHdW5pRjJEQwd1bmlGMkREB3VuaUYyREUHdW5pRjJFMAd1bmlGMkUxB3VuaUYyRTIHdW5pRjJFMwd1bmlGMkU0B3VuaUYyRTUHdW5pRjJFNgd1bmlGMkU3BF82OTgHdW5pRjJFOQd1bmlGMkVBB3VuaUYyRUIHdW5pRjJFQwd1bmlGMkVEB3VuaUYyRUUAAAAAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQABAsIAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAMtPPDAAAAAA1DFouQ==); - src: url(data:application/vnd.ms-fontobject;base64,bocCAKyGAgABAAIAAAAAAAAAAAAAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAWXjPkAAAAAAAAAAAAAAAAAAAAAAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAADgBSAGUAZwB1AGwAYQByAAAAJABWAGUAcgBzAGkAbwBuACAANAAuADcALgAwACAAMgAwADEANgAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAAAAAAAQAAAA0AgAADAFBGRlRNa75HuQAChpAAAAAcR0RFRgLwAAQAAoZwAAAAIE9TLzKIMnpAAAABWAAAAGBjbWFwCr86fwAADKgAAALyZ2FzcP//AAMAAoZoAAAACGdseWaP965NAAAarAACTLxoZWFkEInlLQAAANwAAAA2aGhlYQ8DCrUAAAEUAAAAJGhtdHhFeRiFAAABuAAACvBsb2NhAvWiXAAAD5wAAAsQbWF4cAMsAhwAAAE4AAAAIG5hbWXjl4usAAJnaAAABIZwb3N0r4+boQACa/AAABp1AAEAAAAEAcuQz3hZXw889QALBwAAAAAA1DPNMgAAAADUM80y////AAkBBgAAAAAIAAIAAQAAAAAAAQAABgD/AAAACQD/////CQEAAQAAAAAAAAAAAAAAAAAAArUAAQAAAsMCGQAnAAAAAAACAAAAAQABAAAAQAAAAAAAAAADBmkBkAAFAAAEjAQzAAAAhgSMBDMAAAJzAAABigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABweXJzAEAAIPUABgD/AAAABgABAAAAAAEAAAAAAAAAAAAAACAAAQOAAHAAAAAAAlUAAAHAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAABdBgAAAAaAAAAHAAAABwAAAAaAAAAGgAAABQAAAAeAAAAGgAAABwAAAAcAAAAHAAB5BYAAbgaAAAAGgAAABgAAAAcAAAAGAAAABYAAAAaAABoGAAAABgAAAAeAADIGgAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAASAAAAHAABABoAAAAMAAAAEgAAABoAAAAWAAAAHAAAABgAAAAeAAAAGgAAKBQAAAAaAAAAHgAAABoAAAAWAAAAEAAAABwAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAeAAAAGAAAABAAAAAYAAAAEAAAABwAAAAaAAAAGgAAABwAAAAQAAAAHAAAABoAAegWAAAAGAAAABgAAAAaAAAAHAAAABAAAAAYCAAEFAACaBQAAWgYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAABABgAAAAaAADUGgAA1BwAAAAYAAAAGAAANBYAAAAWAAAAGgAB6BgAAAAYAAAAHAAAABYAAAAcAAAAHAAAABwAAEAWAAAAGgAAABwAAAAcAAAAGAAAABwAAWgcAAFoHgAAABoAAAAaAAAAHgAAAAwAAQAcAAAAIAAAABgAAAAYAAAAHAAAABwAAAAeAAAAHAAAABgAAAAYAAAADgAAABwAAAAaAAAAGAAAABIAAAAcAAAAGAAAABoAAAAYAAAAGgAAABgAAAAWAAAAFgAAABQAAAAYAAAAGgAAsBAAAXwYAAAAGgAAAB4AAAAWAAAAGAAAABwAAAAcAAEAGAAACBwAAAAcAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABoAAFQcAAAAFgAAFBwAAAAYAAAAHgAAABoAAEAeAAAAGgABzBwAAAQcAAAAFgAAEBgAAAAYAAAAGAAAABwAAAAcAAA8HAAAABgAAAAaAAAAGgAAbBwAAQAYAAAAGAAAABgAAAAkAAAAHgAAABAAAAAQAAAACgABAAoAAAAaAAAAEAAAABAAAAAQAAAAHAAAABgAAAAYAAAAHAAAoBwAAAAcAAAAHAAAAA4AAAQcAAAAGgAAABwAAAAQAAAAHAAAAB4AAAAeAAAAFgAAABYAAAAcAAAAHAABAB4AAAAWAAAAGAAAABYAAAAWAAAAHgABABwAAAAeAAAAGgABABgAAAAYAAAAEAAAtBAAADQSAAE0EgABNAoAALQKAAA0EgABNBIAATQeAAAAHgAAABIAAAAMAAAAGAAAABoAAAAaAAAAHAABABgAAAAcAAAAGgAAABoAAAAeAAAAHAAAABwAAAAYAAAAGAAAABgAAAAeAAAAHgAAABwAAQAcAAEAGgAANB4AALQcAAAAGgAACBYAAAgaAAAAEAAAABoAAAAQAAGACgAAAAoAAYgYAAAUGAAAFB4AAAQaAAAAEgAAABYAADQUAAAAGgAAABYAAAwaAACQHAAAABgAAAAYAAAAGAAAABgAAAAWAAAAHAAAMBwAAAASAAAAGAAAABYAAAAGAAAAGAAAABgAAAAcAADYGAAAABYAAAAQAAAMEAAADBgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAEAAAABAAAAAQAADQDggAABAMABAUAAAAHAAAABQAAOAYAAAAGAAAABoAAIgaAACIHAAAiBwAAIgYAACIGAAAiBoAAAAaAAAAGAAAABgAAGwWAAAUGAAAABwAAAAcAAEAGAAALBgAAAAYAAAAGAAAABYAAAAYAAAAEAABEBgAAAAMAAAMDAAADBwAAQAcAAAAFgAAABoAAAAWAAAAGAAALBgAAAAYAAAAFAAAsBgAAAAUAAAAEAAAABgAAAAcAACwGAAAABwAAQAaAACAHgP//BwAAAAYAAAAFgAAABQAAFQYAAAAGAAAABgAAAAYAAAAGgAAABgAAAASAAAAFgAAACIAAAAaAAAAGAAAABwAAAAcAAAAIAAAACQAAAAYAAG0GAAAABwAAAAYAAAAGAAAAB4AAAAYAAAAIAAAABgAAAAf2ACkGAAAABgAAAAYAAAAHAAAABgAAAAUAAEAGgAAAAwAAQAcAAAAJAAAACAAAAAYAAAAHAAAABgAAAAcAABAIAAAACAAAAAYAACAGAAAABAAAAAkAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAJwcAAAAIAAAABwAAAAcAACAHAAATBwAAAAYAAAAHAABEBgAAAAUAADkHAAASCAAAAAcAAAAHAAAABgAAAAYAAAAHAAA+BQAAGAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAGQcAAGQGAABZCAAAAAgAACoHAAAABgAACQcAACcJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAIAAAOCAAADgWAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAHAAAACAAAAAcAAAAGAAAACAAAAAgAAAAJAAAABgAAAAgAAAAFAAALCAAAAAYAAAAGAAAABgAAAAgAAAAGAAAABgAAAAgAAAAIAAAABgAAAAgAAAAIAAAABoAAAAaAAAAIAAAACAAAEwYAAAAJAAAABgAAAAcAAAAFAAACBgAAAAUAAAAGAAACBwAAAAcA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AaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAAiAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTANICVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxAJQFZ2xhc3MFbXVzaWMGc2VhcmNoCGVudmVsb3BlBWhlYXJ0BHN0YXIKc3Rhcl9lbXB0eQR1c2VyBGZpbG0IdGhfbGFyZ2UCdGgHdGhfbGlzdAJvawZyZW1vdmUHem9vbV9pbgh6b29tX291dANvZmYGc2lnbmFsA2NvZwV0cmFzaARob21lCGZpbGVfYWx0BHRpbWUEcm9hZAxkb3dubG9hZF9hbHQIZG93bmxvYWQGdXBsb2FkBWluYm94C3BsYXlfY2lyY2xlBnJlcGVhdAdyZWZyZXNoCGxpc3RfYWx0BGxvY2sEZmxhZwpoZWFkcGhvbmVzCnZvbHVtZV9vZmYLdm9sdW1lX2Rvd24Jdm9sdW1lX3VwBnFyY29kZQdiYXJjb2RlA3RhZwR0YWdzBGJvb2sIYm9va21hcmsFcHJpbnQGY2FtZXJhBGZvbnQEYm9sZAZpdGFsaWMLdGV4dF9oZWlnaHQKdGV4dF93aWR0aAphbGlnbl9sZWZ0DGFsaWduX2NlbnRlcgthbGlnbl9yaWdodA1hbGlnbl9qdXN0aWZ5BGxpc3QLaW5kZW50X2xlZnQMaW5kZW50X3JpZ2h0DmZhY2V0aW1lX3ZpZGVvB3BpY3R1cmUGcGVuY2lsCm1hcF9tYXJrZXIGYWRqdXN0BHRpbnQEZWRpdAVzaGFyZQVjaGVjawRtb3ZlDXN0ZXBfYmFja3dhcmQNZmFzdF9iYWNrd2FyZAhiYWNrd2FyZARwbGF5BXBhdXNlBHN0b3AHZm9yd2FyZAxmYXN0X2ZvcndhcmQMc3RlcF9mb3J3YXJkBWVqZWN0DGNoZXZyb25fbGVmdA1jaGV2cm9uX3JpZ2h0CXBsdXNfc2lnbgptaW51c19zaWduC3JlbW92ZV9zaWduB29rX3NpZ24NcXVlc3Rpb25fc2lnbglpbmZvX3NpZ24Kc2NyZWVuc2hvdA1yZW1vdmVfY2lyY2xlCW9rX2NpcmNsZQpiYW5fY2lyY2xlCmFycm93X2xlZnQLYXJyb3dfcmlnaHQIYXJyb3dfdXAKYXJyb3dfZG93bglzaGFyZV9hbHQLcmVzaXplX2Z1bGwMcmVzaXplX3NtYWxsEGV4Y2xhbWF0aW9uX3NpZ24EZ2lmdARsZWFmBGZpcmUIZXllX29wZW4JZXllX2Nsb3NlDHdhcm5pbmdfc2lnbgVwbGFuZQhjYWxlbmRhcgZyYW5kb20HY29tbWVudAZtYWduZXQKY2hldnJvbl91cAxjaGV2cm9uX2Rvd24HcmV0d2VldA1zaG9wcGluZ19jYXJ0DGZvbGRlcl9jbG9zZQtmb2xkZXJfb3Blbg9yZXNpemVfdmVydGljYWwRcmVzaXplX2hvcml6b250YWwJYmFyX2NoYXJ0DHR3aXR0ZXJfc2lnbg1mYWNlYm9va19zaWduDGNhbWVyYV9yZXRybwNrZXkEY29ncwhjb21tZW50cw10aHVtYnNfdXBfYWx0D3RodW1ic19kb3duX2FsdAlzdGFyX2hhbGYLaGVhcnRfZW1wdHkHc2lnbm91dA1saW5rZWRpbl9zaWduB3B1c2hwaW4NZXh0ZXJuYWxfbGluawZzaWduaW4GdHJvcGh5C2dpdGh1Yl9zaWduCnVwbG9hZF9hbHQFbGVtb24FcGhvbmULY2hlY2tfZW1wdHkOYm9va21hcmtfZW1wdHkKcGhvbmVfc2lnbgd0d2l0dGVyCGZhY2Vib29rBmdpdGh1YgZ1bmxvY2sLY3JlZGl0X2NhcmQDcnNzA2hkZAhidWxsaG9ybgRiZWxsC2NlcnRpZmljYXRlCmhhbmRfcmlnaHQJaGFuZF9sZWZ0B2hhbmRfdXAJaGFuZF9kb3duEWNpcmNsZV9hcnJvd19sZWZ0EmNpcmNsZV9hcnJvd19yaWdodA9jaXJjbGVfYXJyb3dfdXARY2lyY2xlX2Fycm93X2Rvd24FZ2xvYmUGd3JlbmNoBXRhc2tzBmZpbHRlcglicmllZmNhc2UKZnVsbHNjcmVlbgVncm91cARsaW5rBWNsb3VkBmJlYWtlcgNjdXQEY29weQpwYXBlcl9jbGlwBHNhdmUKc2lnbl9ibGFuawdyZW9yZGVyAnVsAm9sDXN0cmlrZXRocm91Z2gJdW5kZXJsaW5lBXRhYmxlBW1hZ2ljBXRydWNrCXBpbnRlcmVzdA5waW50ZXJlc3Rfc2lnbhBnb29nbGVfcGx1c19zaWduC2dvb2dsZV9wbHVzBW1vbmV5CmNhcmV0X2Rvd24IY2FyZXRfdXAKY2FyZXRfbGVmdAtjYXJldF9yaWdodAdjb2x1bW5zBHNvcnQJc29ydF9kb3duB3NvcnRfdXAMZW52ZWxvcGVfYWx0CGxpbmtlZGluBHVuZG8FbGVnYWwJZGFzaGJvYXJkC2NvbW1lbnRfYWx0DGNvbW1lbnRzX2FsdARib2x0B3NpdGVtYXAIdW1icmVsbGEFcGFzdGUKbGlnaHRfYnVsYghleGNoYW5nZQ5jbG91ZF9kb3dubG9hZAxjbG91ZF91cGxvYWQHdXNlcl9tZAtzdGV0aG9zY29wZQhzdWl0Y2FzZQhiZWxsX2FsdAZjb2ZmZWUEZm9vZA1maWxlX3RleHRfYWx0CGJ1aWxkaW5nCGhvc3BpdGFsCWFtYnVsYW5jZQZtZWRraXQLZmlnaHRlcl9qZXQEYmVlcgZoX3NpZ24EZjBmZRFkb3VibGVfYW5nbGVfbGVmdBJkb3VibGVfYW5nbGVfcmlnaHQPZG91YmxlX2FuZ2xlX3VwEWRvdWJsZV9hbmdsZV9kb3duCmFuZ2xlX2xlZnQLYW5nbGVfcmlnaHQIYW5nbGVfdXAKYW5nbGVfZG93bgdkZXNrdG9wBmxhcHRvcAZ0YWJsZXQMbW9iaWxlX3Bob25lDGNpcmNsZV9ibGFuawpxdW90ZV9sZWZ0C3F1b3RlX3JpZ2h0B3NwaW5uZXIGY2lyY2xlBXJlcGx5CmdpdGh1Yl9hbHQQZm9sZGVyX2Nsb3NlX2FsdA9mb2xkZXJfb3Blbl9hbHQKZXhwYW5kX2FsdAxjb2xsYXBzZV9hbHQFc21pbGUFZnJvd24DbWVoB2dhbWVwYWQIa2V5Ym9hcmQIZmxhZ19hbHQOZmxhZ19jaGVja2VyZWQIdGVybWluYWwEY29kZQlyZXBseV9hbGwPc3Rhcl9oYWxmX2VtcHR5DmxvY2F0aW9uX2Fycm93BGNyb3AJY29kZV9mb3JrBnVubGluawRfMjc5C2V4Y2xhbWF0aW9uC3N1cGVyc2NyaXB0CXN1YnNjcmlwdARfMjgzDHB1enpsZV9waWVjZQptaWNyb3Bob25lDm1pY3JvcGhvbmVfb2ZmBnNoaWVsZA5jYWxlbmRhcl9lbXB0eRFmaXJlX2V4dGluZ3Vpc2hlcgZyb2NrZXQGbWF4Y2RuEWNoZXZyb25fc2lnbl9sZWZ0EmNoZXZyb25fc2lnbl9yaWdodA9jaGV2cm9uX3NpZ25fdXARY2hldnJvbl9zaWduX2Rvd24FaHRtbDUEY3NzMwZhbmNob3IKdW5sb2NrX2FsdAhidWxsc2V5ZRNlbGxpcHNpc19ob3Jpem9udGFsEWVsbGlwc2lzX3ZlcnRpY2FsBF8zMDMJcGxheV9zaWduBnRpY2tldA5taW51c19zaWduX2FsdAtjaGVja19taW51cwhsZXZlbF91cApsZXZlbF9kb3duCmNoZWNrX3NpZ24JZWRpdF9zaWduBF8zMTIKc2hhcmVfc2lnbgdjb21wYXNzCGNvbGxhcHNlDGNvbGxhcHNlX3RvcARfMzE3A2V1cgNnYnADdXNkA2lucgNqcHkDcnViA2tydwNidGMEZmlsZQlmaWxlX3RleHQQc29ydF9ieV9hbHBoYWJldARfMzI5EnNvcnRfYnlfYXR0cmlidXRlcxZzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0DXNvcnRfYnlfb3JkZXIRc29ydF9ieV9vcmRlcl9hbHQEXzMzNARfMzM1DHlvdXR1YmVfc2lnbgd5b3V0dWJlBHhpbmcJeGluZ19zaWduDHlvdXR1YmVfcGxheQdkcm9wYm94DXN0YWNrZXhjaGFuZ2UJaW5zdGFncmFtBmZsaWNrcgNhZG4EZjE3MQ5iaXRidWNrZXRfc2lnbgZ0dW1ibHILdHVtYmxyX3NpZ24PbG9uZ19hcnJvd19kb3duDWxvbmdfYXJyb3dfdXAPbG9uZ19hcnJvd19sZWZ0EGxvbmdfYXJyb3dfcmlnaHQHd2luZG93cwdhbmRyb2lkBWxpbnV4B2RyaWJibGUFc2t5cGUKZm91cnNxdWFyZQZ0cmVsbG8GZmVtYWxlBG1hbGUGZ2l0dGlwA3N1bgRfMzY2B2FyY2hpdmUDYnVnAnZrBXdlaWJvBnJlbnJlbgRfMzcyDnN0YWNrX2V4Y2hhbmdlBF8zNzQVYXJyb3dfY2lyY2xlX2FsdF9sZWZ0BF8zNzYOZG90X2NpcmNsZV9hbHQEXzM3OAx2aW1lb19zcXVhcmUEXzM4MA1wbHVzX3NxdWFyZV9vBF8zODIEXzM4MwRfMzg0BF8zODUEXzM4NgRfMzg3BF8zODgEXzM4OQd1bmlGMUEwBGYxYTEEXzM5MgRfMzkzBGYxYTQEXzM5NQRfMzk2BF8zOTcEXzM5OARfMzk5BF80MDAEZjFhYgRfNDAyBF80MDMEXzQwNAd1bmlGMUIxBF80MDYEXzQwNwRfNDA4BF80MDkEXzQxMARfNDExBF80MTIEXzQxMwRfNDE0BF80MTUEXzQxNgRfNDE3BF80MTgEXzQxOQd1bmlGMUMwB3VuaUYxQzEEXzQyMgRfNDIzBF80MjQEXzQyNQRfNDI2BF80MjcEXzQyOARfNDI5BF80MzAEXzQzMQRfNDMyBF80MzMEXzQzNAd1bmlGMUQwB3VuaUYxRDEHdW5pRjFEMgRfNDM4BF80MzkHdW5pRjFENQd1bmlGMUQ2B3VuaUYxRDcEXzQ0MwRfNDQ0BF80NDUEXzQ0NgRfNDQ3BF80NDgEXzQ0OQd1bmlGMUUwBF80NTEEXzQ1MgRfNDUzBF80NTQEXzQ1NQRfNDU2BF80NTcEXzQ1OARfNDU5BF80NjAEXzQ2MQRfNDYyBF80NjMEXzQ2NAd1bmlGMUYwBF80NjYEXzQ2NwRmMWYzBF80NjkEXzQ3MARfNDcxBF80NzIEXzQ3MwRfNDc0BF80NzUEXzQ3NgRmMWZjBF80NzgEXzQ3OQRfNDgwBF80ODEEXzQ4MgRfNDgzBF80ODQEXzQ4NQRfNDg2BF80ODcEXzQ4OARfNDg5BF80OTAEXzQ5MQRfNDkyBF80OTMEXzQ5NARmMjEwBF80OTYEZjIxMgRfNDk4BF80OTkEXzUwMARfNTAxBF81MDIEXzUwMwRfNTA0BF81MDUEXzUwNgRfNTA3BF81MDgEXzUwOQV2ZW51cwRfNTExBF81MTIEXzUxMwRfNTE0BF81MTUEXzUxNgRfNTE3BF81MTgEXzUxOQRfNTIwBF81MjEEXzUyMgRfNTIzBF81MjQEXzUyNQRfNTI2BF81MjcEXzUyOARfNTI5BF81MzAEXzUzMQRfNTMyBF81MzMEXzUzNARfNTM1BF81MzYEXzUzNwRfNTM4BF81MzkEXzU0MARfNTQxBF81NDIEXzU0MwRfNTQ0BF81NDUEXzU0NgRfNTQ3BF81NDgEXzU0OQRfNTUwBF81NTEEXzU1MgRfNTUzBF81NTQEXzU1NQRfNTU2BF81NTcEXzU1OARfNTU5BF81NjAEXzU2MQRfNTYyBF81NjMEXzU2NARfNTY1BF81NjYEXzU2NwRfNTY4BF81NjkEZjI2MARmMjYxBF81NzIEZjI2MwRfNTc0BF81NzUEXzU3NgRfNTc3BF81NzgEXzU3OQRfNTgwBF81ODEEXzU4MgRfNTgzBF81ODQEXzU4NQRfNTg2BF81ODcEXzU4OARfNTg5BF81OTAEXzU5MQRfNTkyBF81OTMEXzU5NARfNTk1BF81OTYEXzU5NwRfNTk4BGYyN2UHdW5pRjI4MAd1bmlGMjgxBF82MDIEXzYwMwRfNjA0B3VuaUYyODUHdW5pRjI4NgRfNjA3BF82MDgEXzYwOQRfNjEwBF82MTEEXzYxMgRfNjEzBF82MTQEXzYxNQRfNjE2BF82MTcEXzYxOARfNjE5BF82MjAEXzYyMQRfNjIyBF82MjMEXzYyNARfNjI1BF82MjYEXzYyNwRfNjI4BF82MjkHdW5pRjJBMAd1bmlGMkExB3VuaUYyQTIHdW5pRjJBMwd1bmlGMkE0B3VuaUYyQTUHdW5pRjJBNgd1bmlGMkE3B3VuaUYyQTgHdW5pRjJBOQd1bmlGMkFBB3VuaUYyQUIHdW5pRjJBQwd1bmlGMkFEB3VuaUYyQUUHdW5pRjJCMAd1bmlGMkIxB3VuaUYyQjIHdW5pRjJCMwd1bmlGMkI0B3VuaUYyQjUHdW5pRjJCNgd1bmlGMkI3B3VuaUYyQjgHdW5pRjJCOQd1bmlGMkJBB3VuaUYyQkIHdW5pRjJCQwd1bmlGMkJEB3VuaUYyQkUHdW5pRjJDMAd1bmlGMkMxB3VuaUYyQzIHdW5pRjJDMwd1bmlGMkM0B3VuaUYyQzUHdW5pRjJDNgd1bmlGMkM3B3VuaUYyQzgHdW5pRjJDOQd1bmlGMkNBB3VuaUYyQ0IHdW5pRjJDQwd1bmlGMkNEB3VuaUYyQ0UHdW5pRjJEMAd1bmlGMkQxB3VuaUYyRDIHdW5pRjJEMwd1bmlGMkQ0B3VuaUYyRDUHdW5pRjJENgd1bmlGMkQ3B3VuaUYyRDgHdW5pRjJEOQd1bmlGMkRBB3VuaUYyREIHdW5pRjJEQwd1bmlGMkREB3VuaUYyREUHdW5pRjJFMAd1bmlGMkUxB3VuaUYyRTIHdW5pRjJFMwd1bmlGMkU0B3VuaUYyRTUHdW5pRjJFNgd1bmlGMkU3BF82OTgHdW5pRjJFOQd1bmlGMkVBB3VuaUYyRUIHdW5pRjJFQwd1bmlGMkVEB3VuaUYyRUUAAAAAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQABAsIAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAMtPPDAAAAAA1DFouQ==?#iefix&v=4.7.0) format('embedded-opentype'), url(data:application/font-woff2;base64,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) format('woff2'), url(data:application/font-woff;base64,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) format('woff'), url(data:application/x-font-ttf;base64,AAEAAAANAIAAAwBQRkZUTWu+R7kAAoaQAAAAHEdERUYC8AAEAAKGcAAAACBPUy8yiDJ6QAAAAVgAAABgY21hcAq/On8AAAyoAAAC8mdhc3D//wADAAKGaAAAAAhnbHlmj/euTQAAGqwAAky8aGVhZBCJ5S0AAADcAAAANmhoZWEPAwq1AAABFAAAACRobXR4RXkYhQAAAbgAAArwbG9jYQL1olwAAA+cAAALEG1heHADLAIcAAABOAAAACBuYW1l45eLrAACZ2gAAASGcG9zdK+Pm6EAAmvwAAAadQABAAAABAHLkM94WV8PPPUACwcAAAAAANQzzTIAAAAA1DPNMv///wAJAQYAAAAACAACAAEAAAAAAAEAAAYA/wAAAAkA/////wkBAAEAAAAAAAAAAAAAAAAAAAK1AAEAAALDAhkAJwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwZpAZAABQAABIwEMwAAAIYEjAQzAAACcwAAAYoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHlycwBAACD1AAYA/wAAAAYAAQAAAAABAAAAAAAAAAAAAAAgAAEDgABwAAAAAAJVAAABwAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAXQYAAAAGgAAABwAAAAcAAAAGgAAABoAAAAUAAAAHgAAABoAAAAcAAAAHAAAABwAAeQWAAG4GgAAABoAAAAYAAAAHAAAABgAAAAWAAAAGgAAaBgAAAAYAAAAHgAAyBoAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAEgAAABwAAQAaAAAADAAAABIAAAAaAAAAFgAAABwAAAAYAAAAHgAAABoAACgUAAAAGgAAAB4AAAAaAAAAFgAAABAAAAAcAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHgAAABgAAAAQAAAAGAAAABAAAAAcAAAAGgAAABoAAAAcAAAAEAAAABwAAAAaAAHoFgAAABgAAAAYAAAAGgAAABwAAAAQAAAAGAgABBQAAmgUAAFoGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAQAYAAAAGgAA1BoAANQcAAAAGAAAABgAADQWAAAAFgAAABoAAegYAAAAGAAAABwAAAAWAAAAHAAAABwAAAAcAABAFgAAABoAAAAcAAAAHAAAABgAAAAcAAFoHAABaB4AAAAaAAAAGgAAAB4AAAAMAAEAHAAAACAAAAAYAAAAGAAAABwAAAAcAAAAHgAAABwAAAAYAAAAGAAAAA4AAAAcAAAAGgAAABgAAAASAAAAHAAAABgAAAAaAAAAGAAAABoAAAAYAAAAFgAAABYAAAAUAAAAGAAAABoAALAQAAF8GAAAABoAAAAeAAAAFgAAABgAAAAcAAAAHAABABgAAAgcAAAAHAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAaAABUHAAAABYAABQcAAAAGAAAAB4AAAAaAABAHgAAABoAAcwcAAAEHAAAABYAABAYAAAAGAAAABgAAAAcAAAAHAAAPBwAAAAYAAAAGgAAABoAAGwcAAEAGAAAABgAAAAYAAAAJAAAAB4AAAAQAAAAEAAAAAoAAQAKAAAAGgAAABAAAAAQAAAAEAAAABwAAAAYAAAAGAAAABwAAKAcAAAAHAAAABwAAAAOAAAEHAAAABoAAAAcAAAAEAAAABwAAAAeAAAAHgAAABYAAAAWAAAAHAAAABwAAQAeAAAAFgAAABgAAAAWAAAAFgAAAB4AAQAcAAAAHgAAABoAAQAYAAAAGAAAABAAALQQAAA0EgABNBIAATQKAAC0CgAANBIAATQSAAE0HgAAAB4AAAASAAAADAAAABgAAAAaAAAAGgAAABwAAQAYAAAAHAAAABoAAAAaAAAAHgAAABwAAAAcAAAAGAAAABgAAAAYAAAAHgAAAB4AAAAcAAEAHAABABoAADQeAAC0HAAAABoAAAgWAAAIGgAAABAAAAAaAAAAEAABgAoAAAAKAAGIGAAAFBgAABQeAAAEGgAAABIAAAAWAAA0FAAAABoAAAAWAAAMGgAAkBwAAAAYAAAAGAAAABgAAAAYAAAAFgAAABwAADAcAAAAEgAAABgAAAAWAAAABgAAABgAAAAYAAAAHAAA2BgAAAAWAAAAEAAADBAAAAwYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAA0A4IAAAQDAAQFAAAABwAAAAUAADgGAAAABgAAAAaAACIGgAAiBwAAIgcAACIGAAAiBgAAIgaAAAAGgAAABgAAAAYAABsFgAAFBgAAAAcAAAAHAABABgAACwYAAAAGAAAABgAAAAWAAAAGAAAABAAARAYAAAADAAADAwAAAwcAAEAHAAAABYAAAAaAAAAFgAAABgAACwYAAAAGAAAABQAALAYAAAAFAAAABAAAAAYAAAAHAAAsBgAAAAcAAEAGgAAgB4D//wcAAAAGAAAABYAAAAUAABUGAAAABgAAAAYAAAAGAAAABoAAAAYAAAAEgAAABYAAAAiAAAAGgAAABgAAAAcAAAAHAAAACAAAAAkAAAAGAABtBgAAAAcAAAAGAAAABgAAAAeAAAAGAAAACAAAAAYAAAAH9gApBgAAAAYAAAAGAAAABwAAAAYAAAAFAABABoAAAAMAAEAHAAAACQAAAAgAAAAGAAAABwAAAAYAAAAHAAAQCAAAAAgAAAAGAAAgBgAAAAQAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAACcHAAAACAAAAAcAAAAHAAAgBwAAEwcAAAAGAAAABwAARAYAAAAFAAA5BwAAEggAAAAHAAAABwAAAAYAAAAGAAAABwAAPgUAABgGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAABkHAABkBgAAWQgAAAAIAAAqBwAAAAYAAAkHAAAnCQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACAAADggAAA4FgAAABgAAAAYAAAAHAAAABwAAAAcAAAAIAAAABwAAAAgAAAAHAAAABgAAAAgAAAAIAAAACQAAAAYAAAAIAAAABQAACwgAAAAGAAAABgAAAAYAAAAIAAAABgAAAAYAAAAIAAAACAAAAAYAAAAIAAAACAAAAAaAAAAGgAAACAAAAAgAABMGAAAACQAAAAYAAAAHAAAABQAAAgYAAAAFAAAABgAAAgcAAAAHAAACB4AAAQgAAAYGAAAABQAAAggAAAQFAAAABQAAAAcAAAAHAAAABgAAAAUAAAAGAAAABwAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAcAAAAGAAAACPgAVAkAAAAHAAAACQAAAAkAAAAJAAAACQAAAAkAAAAFAAAABAAAAAgAAAAJAAAABgAAAAYAAAAJAAAACQAAAAcAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAIAAAA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AAD8uAAA/QwAAP1gAAD9tAAA/ggAAP64AAD/CAABABQAAQW0AAEG9AABB/gAAQjQAAEJZAABChAAAQqYAAELGAABDAQAAQykAAENLAABDgAAAQ+IAAERLAABEaAAARLMAAETOAABE+QAARSQAAEVKAABFaQAARZYAAEW/AABF8AAARiEAAEZeAABGnwAARtUAAEc1AABHUAAAR3UAAEekAABHwQAAR98AAEgpAABIcAAASJ4AAEjCAABI2wAASQEAAEkzAABJ2gAASjoAAEqTAABLFQAAS5MAAExdAABMfQAATLgAAEzMAABM7AAATSoAAE1dAABNlQAATckAAE4DAABOUgAAToQAAE68AABO5AAATyEAAE82AABP1gAAUAcAAFBwAABQsgAAUPIAAFEnAABRUgAAUZIAAFHcAABSEgAAUl4AAFKIAABSuQAAUvUAAFMoAABTRgAAU5AAAFQQAABUaAAAVLgAAFTRAABVCAAAVVMAAFWYAABVtQAAVdYAAFYNAABWKAAAVoEAAFaiAABW2QAAVvgAAFcfAABXdgAAV6gAAFglAABYUgAAWG8AAFi8AABY1gAAWSsAAFldAABZmgAAWfcAAFotAABaVwAAWp4AAFuhAABcEAAAXPgAAF2EAABd8gAAXiQAAF5iAABeowAAXtoAAF8jAABfRwAAX2kAAF/XAABf5gAAX/4AAGAbAABgXQAAYKQAAGDNAABg6QAAYTIAAGFsAABhqQAAYh0AAGJjAABijgAAYs4AAGLoAABjkwAAY6oAAGPVAABkBAAAZEUAAGTkAABlBQAAZUEAAGV/AABlvgAAZegAAGZfAABmsgAAZwQAAGdCAABndgAAZ58AAGfGAABn+gAAaDEAAGiDAABozQAAaR4AAGlsAABpoAAAadMAAGoHAABqJAAAajsAAGo7AABqOwAAalYAAGqKAABqyAAAavMAAGsrAABragAAa4gAAGuiAABrwQAAa+oAAGwQAABsIgAAba8AAG3bAABuOAAAbl0AAG6BAABupQAAbskAAG7pAABvAgAAbx4AAG9TAABvkwAAb6kAAG/IAABwEgAAcEYAAHBxAABwwQAAcPkAAHEoAABxVQAAcYoAAHG7AAByAwAAckMAAHKiAABy6AAAcz4AAHOHAABz5QAAdBsAAHRZAAB0twAAdNQAAHT+AAB1YQAAdZ4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AgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwDSAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQCUBWdsYXNzBW11c2ljBnNlYXJjaAhlbnZlbG9wZQVoZWFydARzdGFyCnN0YXJfZW1wdHkEdXNlcgRmaWxtCHRoX2xhcmdlAnRoB3RoX2xpc3QCb2sGcmVtb3ZlB3pvb21faW4Iem9vbV9vdXQDb2ZmBnNpZ25hbANjb2cFdHJhc2gEaG9tZQhmaWxlX2FsdAR0aW1lBHJvYWQMZG93bmxvYWRfYWx0CGRvd25sb2FkBnVwbG9hZAVpbmJveAtwbGF5X2NpcmNsZQZyZXBlYXQHcmVmcmVzaAhsaXN0X2FsdARsb2NrBGZsYWcKaGVhZHBob25lcwp2b2x1bWVfb2ZmC3ZvbHVtZV9kb3duCXZvbHVtZV91cAZxcmNvZGUHYmFyY29kZQN0YWcEdGFncwRib29rCGJvb2ttYXJrBXByaW50BmNhbWVyYQRmb250BGJvbGQGaXRhbGljC3RleHRfaGVpZ2h0CnRleHRfd2lkdGgKYWxpZ25fbGVmdAxhbGlnbl9jZW50ZXILYWxpZ25fcmlnaHQNYWxpZ25fanVzdGlmeQRsaXN0C2luZGVudF9sZWZ0DGluZGVudF9yaWdodA5mYWNldGltZV92aWRlbwdwaWN0dXJlBnBlbmNpbAptYXBfbWFya2VyBmFkanVzdAR0aW50BGVkaXQFc2hhcmUFY2hlY2sEbW92ZQ1zdGVwX2JhY2t3YXJkDWZhc3RfYmFja3dhcmQIYmFja3dhcmQEcGxheQVwYXVzZQRzdG9wB2ZvcndhcmQMZmFzdF9mb3J3YXJkDHN0ZXBfZm9yd2FyZAVlamVjdAxjaGV2cm9uX2xlZnQNY2hldnJvbl9yaWdodAlwbHVzX3NpZ24KbWludXNfc2lnbgtyZW1vdmVfc2lnbgdva19zaWduDXF1ZXN0aW9uX3NpZ24JaW5mb19zaWduCnNjcmVlbnNob3QNcmVtb3ZlX2NpcmNsZQlva19jaXJjbGUKYmFuX2NpcmNsZQphcnJvd19sZWZ0C2Fycm93X3JpZ2h0CGFycm93X3VwCmFycm93X2Rvd24Jc2hhcmVfYWx0C3Jlc2l6ZV9mdWxsDHJlc2l6ZV9zbWFsbBBleGNsYW1hdGlvbl9zaWduBGdpZnQEbGVhZgRmaXJlCGV5ZV9vcGVuCWV5ZV9jbG9zZQx3YXJuaW5nX3NpZ24FcGxhbmUIY2FsZW5kYXIGcmFuZG9tB2NvbW1lbnQGbWFnbmV0CmNoZXZyb25fdXAMY2hldnJvbl9kb3duB3JldHdlZXQNc2hvcHBpbmdfY2FydAxmb2xkZXJfY2xvc2ULZm9sZGVyX29wZW4PcmVzaXplX3ZlcnRpY2FsEXJlc2l6ZV9ob3Jpem9udGFsCWJhcl9jaGFydAx0d2l0dGVyX3NpZ24NZmFjZWJvb2tfc2lnbgxjYW1lcmFfcmV0cm8Da2V5BGNvZ3MIY29tbWVudHMNdGh1bWJzX3VwX2FsdA90aHVtYnNfZG93bl9hbHQJc3Rhcl9oYWxmC2hlYXJ0X2VtcHR5B3NpZ25vdXQNbGlua2VkaW5fc2lnbgdwdXNocGluDWV4dGVybmFsX2xpbmsGc2lnbmluBnRyb3BoeQtnaXRodWJfc2lnbgp1cGxvYWRfYWx0BWxlbW9uBXBob25lC2NoZWNrX2VtcHR5DmJvb2ttYXJrX2VtcHR5CnBob25lX3NpZ24HdHdpdHRlcghmYWNlYm9vawZnaXRodWIGdW5sb2NrC2NyZWRpdF9jYXJkA3JzcwNoZGQIYnVsbGhvcm4EYmVsbAtjZXJ0aWZpY2F0ZQpoYW5kX3JpZ2h0CWhhbmRfbGVmdAdoYW5kX3VwCWhhbmRfZG93bhFjaXJjbGVfYXJyb3dfbGVmdBJjaXJjbGVfYXJyb3dfcmlnaHQPY2lyY2xlX2Fycm93X3VwEWNpcmNsZV9hcnJvd19kb3duBWdsb2JlBndyZW5jaAV0YXNrcwZmaWx0ZXIJYnJpZWZjYXNlCmZ1bGxzY3JlZW4FZ3JvdXAEbGluawVjbG91ZAZiZWFrZXIDY3V0BGNvcHkKcGFwZXJfY2xpcARzYXZlCnNpZ25fYmxhbmsHcmVvcmRlcgJ1bAJvbA1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQV0YWJsZQVtYWdpYwV0cnVjawlwaW50ZXJlc3QOcGludGVyZXN0X3NpZ24QZ29vZ2xlX3BsdXNfc2lnbgtnb29nbGVfcGx1cwVtb25leQpjYXJldF9kb3duCGNhcmV0X3VwCmNhcmV0X2xlZnQLY2FyZXRfcmlnaHQHY29sdW1ucwRzb3J0CXNvcnRfZG93bgdzb3J0X3VwDGVudmVsb3BlX2FsdAhsaW5rZWRpbgR1bmRvBWxlZ2FsCWRhc2hib2FyZAtjb21tZW50X2FsdAxjb21tZW50c19hbHQEYm9sdAdzaXRlbWFwCHVtYnJlbGxhBXBhc3RlCmxpZ2h0X2J1bGIIZXhjaGFuZ2UOY2xvdWRfZG93bmxvYWQMY2xvdWRfdXBsb2FkB3VzZXJfbWQLc3RldGhvc2NvcGUIc3VpdGNhc2UIYmVsbF9hbHQGY29mZmVlBGZvb2QNZmlsZV90ZXh0X2FsdAhidWlsZGluZwhob3NwaXRhbAlhbWJ1bGFuY2UGbWVka2l0C2ZpZ2h0ZXJfamV0BGJlZXIGaF9zaWduBGYwZmURZG91YmxlX2FuZ2xlX2xlZnQSZG91YmxlX2FuZ2xlX3JpZ2h0D2RvdWJsZV9hbmdsZV91cBFkb3VibGVfYW5nbGVfZG93bgphbmdsZV9sZWZ0C2FuZ2xlX3JpZ2h0CGFuZ2xlX3VwCmFuZ2xlX2Rvd24HZGVza3RvcAZsYXB0b3AGdGFibGV0DG1vYmlsZV9waG9uZQxjaXJjbGVfYmxhbmsKcXVvdGVfbGVmdAtxdW90ZV9yaWdodAdzcGlubmVyBmNpcmNsZQVyZXBseQpnaXRodWJfYWx0EGZvbGRlcl9jbG9zZV9hbHQPZm9sZGVyX29wZW5fYWx0CmV4cGFuZF9hbHQMY29sbGFwc2VfYWx0BXNtaWxlBWZyb3duA21laAdnYW1lcGFkCGtleWJvYXJkCGZsYWdfYWx0DmZsYWdfY2hlY2tlcmVkCHRlcm1pbmFsBGNvZGUJcmVwbHlfYWxsD3N0YXJfaGFsZl9lbXB0eQ5sb2NhdGlvbl9hcnJvdwRjcm9wCWNvZGVfZm9yawZ1bmxpbmsEXzI3OQtleGNsYW1hdGlvbgtzdXBlcnNjcmlwdAlzdWJzY3JpcHQEXzI4MwxwdXp6bGVfcGllY2UKbWljcm9waG9uZQ5taWNyb3Bob25lX29mZgZzaGllbGQOY2FsZW5kYXJfZW1wdHkRZmlyZV9leHRpbmd1aXNoZXIGcm9ja2V0Bm1heGNkbhFjaGV2cm9uX3NpZ25fbGVmdBJjaGV2cm9uX3NpZ25fcmlnaHQPY2hldnJvbl9zaWduX3VwEWNoZXZyb25fc2lnbl9kb3duBWh0bWw1BGNzczMGYW5jaG9yCnVubG9ja19hbHQIYnVsbHNleWUTZWxsaXBzaXNfaG9yaXpvbnRhbBFlbGxpcHNpc192ZXJ0aWNhbARfMzAzCXBsYXlfc2lnbgZ0aWNrZXQObWludXNfc2lnbl9hbHQLY2hlY2tfbWludXMIbGV2ZWxfdXAKbGV2ZWxfZG93bgpjaGVja19zaWduCWVkaXRfc2lnbgRfMzEyCnNoYXJlX3NpZ24HY29tcGFzcwhjb2xsYXBzZQxjb2xsYXBzZV90b3AEXzMxNwNldXIDZ2JwA3VzZANpbnIDanB5A3J1YgNrcncDYnRjBGZpbGUJZmlsZV90ZXh0EHNvcnRfYnlfYWxwaGFiZXQEXzMyORJzb3J0X2J5X2F0dHJpYnV0ZXMWc29ydF9ieV9hdHRyaWJ1dGVzX2FsdA1zb3J0X2J5X29yZGVyEXNvcnRfYnlfb3JkZXJfYWx0BF8zMzQEXzMzNQx5b3V0dWJlX3NpZ24HeW91dHViZQR4aW5nCXhpbmdfc2lnbgx5b3V0dWJlX3BsYXkHZHJvcGJveA1zdGFja2V4Y2hhbmdlCWluc3RhZ3JhbQZmbGlja3IDYWRuBGYxNzEOYml0YnVja2V0X3NpZ24GdHVtYmxyC3R1bWJscl9zaWduD2xvbmdfYXJyb3dfZG93bg1sb25nX2Fycm93X3VwD2xvbmdfYXJyb3dfbGVmdBBsb25nX2Fycm93X3JpZ2h0B3dpbmRvd3MHYW5kcm9pZAVsaW51eAdkcmliYmxlBXNreXBlCmZvdXJzcXVhcmUGdHJlbGxvBmZlbWFsZQRtYWxlBmdpdHRpcANzdW4EXzM2NgdhcmNoaXZlA2J1ZwJ2awV3ZWlibwZyZW5yZW4EXzM3Mg5zdGFja19leGNoYW5nZQRfMzc0FWFycm93X2NpcmNsZV9hbHRfbGVmdARfMzc2DmRvdF9jaXJjbGVfYWx0BF8zNzgMdmltZW9fc3F1YXJlBF8zODANcGx1c19zcXVhcmVfbwRfMzgyBF8zODMEXzM4NARfMzg1BF8zODYEXzM4NwRfMzg4BF8zODkHdW5pRjFBMARmMWExBF8zOTIEXzM5MwRmMWE0BF8zOTUEXzM5NgRfMzk3BF8zOTgEXzM5OQRfNDAwBGYxYWIEXzQwMgRfNDAzBF80MDQHdW5pRjFCMQRfNDA2BF80MDcEXzQwOARfNDA5BF80MTAEXzQxMQRfNDEyBF80MTMEXzQxNARfNDE1BF80MTYEXzQxNwRfNDE4BF80MTkHdW5pRjFDMAd1bmlGMUMxBF80MjIEXzQyMwRfNDI0BF80MjUEXzQyNgRfNDI3BF80MjgEXzQyOQRfNDMwBF80MzEEXzQzMgRfNDMzBF80MzQHdW5pRjFEMAd1bmlGMUQxB3VuaUYxRDIEXzQzOARfNDM5B3VuaUYxRDUHdW5pRjFENgd1bmlGMUQ3BF80NDMEXzQ0NARfNDQ1BF80NDYEXzQ0NwRfNDQ4BF80NDkHdW5pRjFFMARfNDUxBF80NTIEXzQ1MwRfNDU0BF80NTUEXzQ1NgRfNDU3BF80NTgEXzQ1OQRfNDYwBF80NjEEXzQ2MgRfNDYzBF80NjQHdW5pRjFGMARfNDY2BF80NjcEZjFmMwRfNDY5BF80NzAEXzQ3MQRfNDcyBF80NzMEXzQ3NARfNDc1BF80NzYEZjFmYwRfNDc4BF80NzkEXzQ4MARfNDgxBF80ODIEXzQ4MwRfNDg0BF80ODUEXzQ4NgRfNDg3BF80ODgEXzQ4OQRfNDkwBF80OTEEXzQ5MgRfNDkzBF80OTQEZjIxMARfNDk2BGYyMTIEXzQ5OARfNDk5BF81MDAEXzUwMQRfNTAyBF81MDMEXzUwNARfNTA1BF81MDYEXzUwNwRfNTA4BF81MDkFdmVudXMEXzUxMQRfNTEyBF81MTMEXzUxNARfNTE1BF81MTYEXzUxNwRfNTE4BF81MTkEXzUyMARfNTIxBF81MjIEXzUyMwRfNTI0BF81MjUEXzUyNgRfNTI3BF81MjgEXzUyOQRfNTMwBF81MzEEXzUzMgRfNTMzBF81MzQEXzUzNQRfNTM2BF81MzcEXzUzOARfNTM5BF81NDAEXzU0MQRfNTQyBF81NDMEXzU0NARfNTQ1BF81NDYEXzU0NwRfNTQ4BF81NDkEXzU1MARfNTUxBF81NTIEXzU1MwRfNTU0BF81NTUEXzU1NgRfNTU3BF81NTgEXzU1OQRfNTYwBF81NjEEXzU2MgRfNTYzBF81NjQEXzU2NQRfNTY2BF81NjcEXzU2OARfNTY5BGYyNjAEZjI2MQRfNTcyBGYyNjMEXzU3NARfNTc1BF81NzYEXzU3NwRfNTc4BF81NzkEXzU4MARfNTgxBF81ODIEXzU4MwRfNTg0BF81ODUEXzU4NgRfNTg3BF81ODgEXzU4OQRfNTkwBF81OTEEXzU5MgRfNTkzBF81OTQEXzU5NQRfNTk2BF81OTcEXzU5OARmMjdlB3VuaUYyODAHdW5pRjI4MQRfNjAyBF82MDMEXzYwNAd1bmlGMjg1B3VuaUYyODYEXzYwNwRfNjA4BF82MDkEXzYxMARfNjExBF82MTIEXzYxMwRfNjE0BF82MTUEXzYxNgRfNjE3BF82MTgEXzYxOQRfNjIwBF82MjEEXzYyMgRfNjIzBF82MjQEXzYyNQRfNjI2BF82MjcEXzYyOARfNjI5B3VuaUYyQTAHdW5pRjJBMQd1bmlGMkEyB3VuaUYyQTMHdW5pRjJBNAd1bmlGMkE1B3VuaUYyQTYHdW5pRjJBNwd1bmlGMkE4B3VuaUYyQTkHdW5pRjJBQQd1bmlGMkFCB3VuaUYyQUMHdW5pRjJBRAd1bmlGMkFFB3VuaUYyQjAHdW5pRjJCMQd1bmlGMkIyB3VuaUYyQjMHdW5pRjJCNAd1bmlGMkI1B3VuaUYyQjYHdW5pRjJCNwd1bmlGMkI4B3VuaUYyQjkHdW5pRjJCQQd1bmlGMkJCB3VuaUYyQkMHdW5pRjJCRAd1bmlGMkJFB3VuaUYyQzAHdW5pRjJDMQd1bmlGMkMyB3VuaUYyQzMHdW5pRjJDNAd1bmlGMkM1B3VuaUYyQzYHdW5pRjJDNwd1bmlGMkM4B3VuaUYyQzkHdW5pRjJDQQd1bmlGMkNCB3VuaUYyQ0MHdW5pRjJDRAd1bmlGMkNFB3VuaUYyRDAHdW5pRjJEMQd1bmlGMkQyB3VuaUYyRDMHdW5pRjJENAd1bmlGMkQ1B3VuaUYyRDYHdW5pRjJENwd1bmlGMkQ4B3VuaUYyRDkHdW5pRjJEQQd1bmlGMkRCB3VuaUYyREMHdW5pRjJERAd1bmlGMkRFB3VuaUYyRTAHdW5pRjJFMQd1bmlGMkUyB3VuaUYyRTMHdW5pRjJFNAd1bmlGMkU1B3VuaUYyRTYHdW5pRjJFNwRfNjk4B3VuaUYyRTkHdW5pRjJFQQd1bmlGMkVCB3VuaUYyRUMHdW5pRjJFRAd1bmlGMkVFAAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAQLCAAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADLTzwwAAAAANQxaLk=) format('truetype'), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2Zz4KPG1ldGFkYXRhPgpDcmVhdGVkIGJ5IEZvbnRGb3JnZSAyMDEyMDczMSBhdCBNb24gT2N0IDI0IDE3OjM3OjQwIDIwMTYKIEJ5ICwsLApDb3B5cmlnaHQgRGF2ZSBHYW5keSAyMDE2LiBBbGwgcmlnaHRzIHJlc2VydmVkLgo8L21ldGFkYXRhPgo8ZGVmcz4KPGZvbnQgaWQ9IkZvbnRBd2Vzb21lIiBob3Jpei1hZHYteD0iMTUzNiIgPgogIDxmb250LWZhY2UgCiAgICBmb250LWZhbWlseT0iRm9udEF3ZXNvbWUiCiAgICBmb250LXdlaWdodD0iNDAwIgogICAgZm9udC1zdHJldGNoPSJub3JtYWwiCiAgICB1bml0cy1wZXItZW09IjE3OTIiCiAgICBwYW5vc2UtMT0iMCAwIDAgMCAwIDAgMCAwIDAgMCIKICAgIGFzY2VudD0iMTUzNiIKICAgIGRlc2NlbnQ9Ii0yNTYiCiAgICBiYm94PSItMS4wMjA4MyAtMjU2Ljk2MiAyMzA0LjYgMTUzNy4wMiIKICAgIHVuZGVybGluZS10aGlja25lc3M9IjAiCiAgICB1bmRlcmxpbmUtcG9zaXRpb249IjAiCiAgICB1bmljb2RlLXJhbmdlPSJVKzAwMjAtRjUwMCIKICAvPgo8bWlzc2luZy1nbHlwaCBob3Jpei1hZHYteD0iODk2IiAKZD0iTTIyNCAxMTJoNDQ4djEzMTJoLTQ0OHYtMTMxMnpNMTEyIDB2MTUzNmg2NzJ2LTE1MzZoLTY3MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iLm5vdGRlZiIgaG9yaXotYWR2LXg9Ijg5NiIgCmQ9Ik0yMjQgMTEyaDQ0OHYxMzEyaC00NDh2LTEzMTJ6TTExMiAwdjE1MzZoNjcydi0xNTM2aC02NzJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5udWxsIiBob3Jpei1hZHYteD0iMCIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im5vbm1hcmtpbmdyZXR1cm4iIGhvcml6LWFkdi14PSI1OTciIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzcGFjZSIgdW5pY29kZT0iICIgaG9yaXotYWR2LXg9IjQ0OCIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImRpZXJlc2lzIiB1bmljb2RlPSImI3hhODsiIGhvcml6LWFkdi14PSIxNzkyIiAKIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29weXJpZ2h0IiB1bmljb2RlPSImI3hhOTsiIGhvcml6LWFkdi14PSIxNzkyIiAKIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVnaXN0ZXJlZCIgdW5pY29kZT0iJiN4YWU7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFjdXRlIiB1bmljb2RlPSImI3hiNDsiIGhvcml6LWFkdi14PSIxNzkyIiAKIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iQUUiIHVuaWNvZGU9IiYjeGM2OyIgaG9yaXotYWR2LXg9IjE3OTIiIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJPc2xhc2giIHVuaWNvZGU9IiYjeGQ4OyIgaG9yaXotYWR2LXg9IjE3OTIiIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmFkZW1hcmsiIHVuaWNvZGU9IiYjeDIxMjI7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZmluaXR5IiB1bmljb2RlPSImI3gyMjFlOyIgaG9yaXotYWR2LXg9IjE3OTIiIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJub3RlcXVhbCIgdW5pY29kZT0iJiN4MjI2MDsiIGhvcml6LWFkdi14PSIxNzkyIiAKIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2xhc3MiIHVuaWNvZGU9IiYjeGYwMDA7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNjk5IDEzNTBxMCAtMzUgLTQzIC03OGwtNjMyIC02MzJ2LTc2OGgzMjBxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOWgtODk2cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMzIwdjc2OGwtNjMyIDYzMnEtNDMgNDMgLTQzIDc4cTAgMjMgMTggMzYuNXQzOCAxNy41dDQzIDRoMTQwOHEyMyAwIDQzIC00dDM4IC0xNy41dDE4IC0zNi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtdXNpYyIgdW5pY29kZT0iJiN4ZjAwMTsiIApkPSJNMTUzNiAxMzEydi0xMTIwcTAgLTUwIC0zNCAtODl0LTg2IC02MC41dC0xMDMuNSAtMzJ0LTk2LjUgLTEwLjV0LTk2LjUgMTAuNXQtMTAzLjUgMzJ0LTg2IDYwLjV0LTM0IDg5dDM0IDg5dDg2IDYwLjV0MTAzLjUgMzJ0OTYuNSAxMC41cTEwNSAwIDE5MiAtMzl2NTM3bC03NjggLTIzN3YtNzA5cTAgLTUwIC0zNCAtODl0LTg2IC02MC41dC0xMDMuNSAtMzJ0LTk2LjUgLTEwLjV0LTk2LjUgMTAuNXQtMTAzLjUgMzJ0LTg2IDYwLjV0LTM0IDg5CnQzNCA4OXQ4NiA2MC41dDEwMy41IDMydDk2LjUgMTAuNXExMDUgMCAxOTIgLTM5djk2N3EwIDMxIDE5IDU2LjV0NDkgMzUuNWw4MzIgMjU2cTEyIDQgMjggNHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNlYXJjaCIgdW5pY29kZT0iJiN4ZjAwMjsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTExNTIgNzA0cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV0MzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV6TTE2NjQgLTEyOHEwIC01MiAtMzggLTkwdC05MCAtMzhxLTU0IDAgLTkwIDM4bC0zNDMgMzQycS0xNzkgLTEyNCAtMzk5IC0xMjRxLTE0MyAwIC0yNzMuNSA1NS41dC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41CnQ1NS41IDI3My41dDE1MCAyMjV0MjI1IDE1MHQyNzMuNSA1NS41dDI3My41IC01NS41dDIyNSAtMTUwdDE1MCAtMjI1dDU1LjUgLTI3My41cTAgLTIyMCAtMTI0IC0zOTlsMzQzIC0zNDNxMzcgLTM3IDM3IC05MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZW52ZWxvcGUiIHVuaWNvZGU9IiYjeGYwMDM7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNjY0IDMydjc2OHEtMzIgLTM2IC02OSAtNjZxLTI2OCAtMjA2IC00MjYgLTMzOHEtNTEgLTQzIC04MyAtNjd0LTg2LjUgLTQ4LjV0LTEwMi41IC0yNC41aC0xaC0xcS00OCAwIC0xMDIuNSAyNC41dC04Ni41IDQ4LjV0LTgzIDY3cS0xNTggMTMyIC00MjYgMzM4cS0zNyAzMCAtNjkgNjZ2LTc2OHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE0NzJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMDgzdjExdjEzLjV0LTAuNSAxMwp0LTMgMTIuNXQtNS41IDl0LTkgNy41dC0xNCAyLjVoLTE0NzJxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41cTAgLTE2OCAxNDcgLTI4NHExOTMgLTE1MiA0MDEgLTMxN3E2IC01IDM1IC0yOS41dDQ2IC0zNy41dDQ0LjUgLTMxLjV0NTAuNSAtMjcuNXQ0MyAtOWgxaDFxMjAgMCA0MyA5dDUwLjUgMjcuNXQ0NC41IDMxLjV0NDYgMzcuNXQzNSAyOS41cTIwOCAxNjUgNDAxIDMxN3E1NCA0MyAxMDAuNSAxMTUuNXQ0Ni41IDEzMS41egpNMTc5MiAxMTIwdi0xMDg4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxNDcycTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoZWFydCIgdW5pY29kZT0iJiN4ZjAwNDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg5NiAtMTI4cS0yNiAwIC00NCAxOGwtNjI0IDYwMnEtMTAgOCAtMjcuNSAyNnQtNTUuNSA2NS41dC02OCA5Ny41dC01My41IDEyMXQtMjMuNSAxMzhxMCAyMjAgMTI3IDM0NHQzNTEgMTI0cTYyIDAgMTI2LjUgLTIxLjV0MTIwIC01OHQ5NS41IC02OC41dDc2IC02OHEzNiAzNiA3NiA2OHQ5NS41IDY4LjV0MTIwIDU4dDEyNi41IDIxLjVxMjI0IDAgMzUxIC0xMjR0MTI3IC0zNDRxMCAtMjIxIC0yMjkgLTQ1MGwtNjIzIC02MDAKcS0xOCAtMTggLTQ0IC0xOHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RhciIgdW5pY29kZT0iJiN4ZjAwNTsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTE2NjQgODg5cTAgLTIyIC0yNiAtNDhsLTM2MyAtMzU0bDg2IC01MDBxMSAtNyAxIC0yMHEwIC0yMSAtMTAuNSAtMzUuNXQtMzAuNSAtMTQuNXEtMTkgMCAtNDAgMTJsLTQ0OSAyMzZsLTQ0OSAtMjM2cS0yMiAtMTIgLTQwIC0xMnEtMjEgMCAtMzEuNSAxNC41dC0xMC41IDM1LjVxMCA2IDIgMjBsODYgNTAwbC0zNjQgMzU0cS0yNSAyNyAtMjUgNDhxMCAzNyA1NiA0Nmw1MDIgNzNsMjI1IDQ1NXExOSA0MSA0OSA0MXQ0OSAtNDFsMjI1IC00NTUKbDUwMiAtNzNxNTYgLTkgNTYgLTQ2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFyX2VtcHR5IiB1bmljb2RlPSImI3hmMDA2OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTEzNyA1MzJsMzA2IDI5N2wtNDIyIDYybC0xODkgMzgybC0xODkgLTM4MmwtNDIyIC02MmwzMDYgLTI5N2wtNzMgLTQyMWwzNzggMTk5bDM3NyAtMTk5ek0xNjY0IDg4OXEwIC0yMiAtMjYgLTQ4bC0zNjMgLTM1NGw4NiAtNTAwcTEgLTcgMSAtMjBxMCAtNTAgLTQxIC01MHEtMTkgMCAtNDAgMTJsLTQ0OSAyMzZsLTQ0OSAtMjM2cS0yMiAtMTIgLTQwIC0xMnEtMjEgMCAtMzEuNSAxNC41dC0xMC41IDM1LjVxMCA2IDIgMjBsODYgNTAwCmwtMzY0IDM1NHEtMjUgMjcgLTI1IDQ4cTAgMzcgNTYgNDZsNTAyIDczbDIyNSA0NTVxMTkgNDEgNDkgNDF0NDkgLTQxbDIyNSAtNDU1bDUwMiAtNzNxNTYgLTkgNTYgLTQ2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1c2VyIiB1bmljb2RlPSImI3hmMDA3OyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMTI4MCAxMzdxMCAtMTA5IC02Mi41IC0xODd0LTE1MC41IC03OGgtODU0cS04OCAwIC0xNTAuNSA3OHQtNjIuNSAxODdxMCA4NSA4LjUgMTYwLjV0MzEuNSAxNTJ0NTguNSAxMzF0OTQgODl0MTM0LjUgMzQuNXExMzEgLTEyOCAzMTMgLTEyOHQzMTMgMTI4cTc2IDAgMTM0LjUgLTM0LjV0OTQgLTg5dDU4LjUgLTEzMXQzMS41IC0xNTJ0OC41IC0xNjAuNXpNMTAyNCAxMDI0cTAgLTE1OSAtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjUKdC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41dDExMi41IC0yNzEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsbSIgdW5pY29kZT0iJiN4ZjAwODsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTM4NCAtNjR2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTM4NCAzMjB2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTM4NCA3MDR2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4CnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNDA4IC02NHY1MTJxMCAyNiAtMTkgNDV0LTQ1IDE5aC03NjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di01MTJxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg3NjhxMjYgMCA0NSAxOXQxOSA0NXpNMzg0IDEwODh2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NQp0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIC02NHYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXpNMTQwOCA3MDR2NTEycTAgMjYgLTE5IDQ1dC00NSAxOWgtNzY4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtNTEycTAgLTI2IDE5IC00NXQ0NSAtMTloNzY4cTI2IDAgNDUgMTl0MTkgNDV6TTE3OTIgMzIwdjEyOApxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXpNMTc5MiA3MDR2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE3OTIgMTA4OHYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjhxLTI2IDAgLTQ1IC0xOQp0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE5MjAgMTI0OHYtMTM0NHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTYwMHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTM0NHEwIDY2IDQ3IDExM3QxMTMgNDdoMTYwMHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGhfbGFyZ2UiIHVuaWNvZGU9IiYjeGYwMDk7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik03NjggNTEydi0zODRxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC01MTJxLTUyIDAgLTkwIDM4dC0zOCA5MHYzODRxMCA1MiAzOCA5MHQ5MCAzOGg1MTJxNTIgMCA5MCAtMzh0MzggLTkwek03NjggMTI4MHYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoNTEycTUyIDAgOTAgLTM4dDM4IC05MHpNMTY2NCA1MTJ2LTM4NHEwIC01MiAtMzggLTkwdC05MCAtMzgKaC01MTJxLTUyIDAgLTkwIDM4dC0zOCA5MHYzODRxMCA1MiAzOCA5MHQ5MCAzOGg1MTJxNTIgMCA5MCAtMzh0MzggLTkwek0xNjY0IDEyODB2LTM4NHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTUxMnEtNTIgMCAtOTAgMzh0LTM4IDkwdjM4NHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InRoIiB1bmljb2RlPSImI3hmMDBhOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNTEyIDI4OHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHpNNTEyIDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHpNMTE1MiAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMApxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek01MTIgMTMxMnYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHpNMTE1MiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4CmgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDI4OHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHpNMTE1MiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDgwMHYtMTkyCnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTE3OTIgMTMxMnYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGhfbGlzdCIgdW5pY29kZT0iJiN4ZjAwYjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTUxMiAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTE3OTIgMjg4di0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjAKcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoOTYwcTQwIDAgNjggLTI4dDI4IC02OHpNNTEyIDEzMTJ2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTE3OTIgODAwdi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOApoOTYwcTQwIDAgNjggLTI4dDI4IC02OHpNMTc5MiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGg5NjBxNDAgMCA2OCAtMjh0MjggLTY4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJvayIgdW5pY29kZT0iJiN4ZjAwYzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE2NzEgOTcwcTAgLTQwIC0yOCAtNjhsLTcyNCAtNzI0bC0xMzYgLTEzNnEtMjggLTI4IC02OCAtMjh0LTY4IDI4bC0xMzYgMTM2bC0zNjIgMzYycS0yOCAyOCAtMjggNjh0MjggNjhsMTM2IDEzNnEyOCAyOCA2OCAyOHQ2OCAtMjhsMjk0IC0yOTVsNjU2IDY1N3EyOCAyOCA2OCAyOHQ2OCAtMjhsMTM2IC0xMzZxMjggLTI4IDI4IC02OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVtb3ZlIiB1bmljb2RlPSImI3hmMDBkOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTI5OCAyMTRxMCAtNDAgLTI4IC02OGwtMTM2IC0xMzZxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMjk0IDI5NGwtMjk0IC0yOTRxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMTM2IDEzNnEtMjggMjggLTI4IDY4dDI4IDY4bDI5NCAyOTRsLTI5NCAyOTRxLTI4IDI4IC0yOCA2OHQyOCA2OGwxMzYgMTM2cTI4IDI4IDY4IDI4dDY4IC0yOGwyOTQgLTI5NGwyOTQgMjk0cTI4IDI4IDY4IDI4dDY4IC0yOGwxMzYgLTEzNnEyOCAtMjggMjggLTY4CnQtMjggLTY4bC0yOTQgLTI5NGwyOTQgLTI5NHEyOCAtMjggMjggLTY4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ6b29tX2luIiB1bmljb2RlPSImI3hmMDBlOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTAyNCA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMjI0di0yMjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djIyNGgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgyMjR2MjI0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0yMjRoMjI0CnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgNzA0cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV0MzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV6TTE2NjQgLTEyOHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXEtNTQgMCAtOTAgMzhsLTM0MyAzNDJxLTE3OSAtMTI0IC0zOTkgLTEyNHEtMTQzIDAgLTI3My41IDU1LjUKdC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41dDU1LjUgMjczLjV0MTUwIDIyNXQyMjUgMTUwdDI3My41IDU1LjV0MjczLjUgLTU1LjV0MjI1IC0xNTB0MTUwIC0yMjV0NTUuNSAtMjczLjVxMCAtMjIwIC0xMjQgLTM5OWwzNDMgLTM0M3EzNyAtMzcgMzcgLTkweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ6b29tX291dCIgdW5pY29kZT0iJiN4ZjAxMDsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTEwMjQgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTU3NnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNTc2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTE1MiA3MDRxMCAxODUgLTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXoKTTE2NjQgLTEyOHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXEtNTQgMCAtOTAgMzhsLTM0MyAzNDJxLTE3OSAtMTI0IC0zOTkgLTEyNHEtMTQzIDAgLTI3My41IDU1LjV0LTIyNSAxNTB0LTE1MCAyMjV0LTU1LjUgMjczLjV0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXEwIC0yMjAgLTEyNCAtMzk5bDM0MyAtMzQzcTM3IC0zNyAzNyAtOTB6CiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJvZmYiIHVuaWNvZGU9IiYjeGYwMTE7IiAKZD0iTTE1MzYgNjQwcTAgLTE1NiAtNjEgLTI5OHQtMTY0IC0yNDV0LTI0NSAtMTY0dC0yOTggLTYxdC0yOTggNjF0LTI0NSAxNjR0LTE2NCAyNDV0LTYxIDI5OHEwIDE4MiA4MC41IDM0M3QyMjYuNSAyNzBxNDMgMzIgOTUuNSAyNXQ4My41IC01MHEzMiAtNDIgMjQuNSAtOTQuNXQtNDkuNSAtODQuNXEtOTggLTc0IC0xNTEuNSAtMTgxdC01My41IC0yMjhxMCAtMTA0IDQwLjUgLTE5OC41dDEwOS41IC0xNjMuNXQxNjMuNSAtMTA5LjUKdDE5OC41IC00MC41dDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXEwIDEyMSAtNTMuNSAyMjh0LTE1MS41IDE4MXEtNDIgMzIgLTQ5LjUgODQuNXQyNC41IDk0LjVxMzEgNDMgODQgNTB0OTUgLTI1cTE0NiAtMTA5IDIyNi41IC0yNzB0ODAuNSAtMzQzek04OTYgMTQwOHYtNjQwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOHQtOTAgMzh0LTM4IDkwdjY0MHEwIDUyIDM4IDkwdDkwIDM4dDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNpZ25hbCIgdW5pY29kZT0iJiN4ZjAxMjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTI1NiA5NnYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTY0MCAyMjR2LTMyMHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MzIwcTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xMDI0IDQ4MHYtNTc2cTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyMwp2NTc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNDA4IDg2NHYtOTYwcTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3Y5NjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgMTM3NnYtMTQ3MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTQ3MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29nIiB1bmljb2RlPSImI3hmMDEzOyIgCmQ9Ik0xMDI0IDY0MHEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF0NzUgLTE4MXQxODEgLTc1dDE4MSA3NXQ3NSAxODF6TTE1MzYgNzQ5di0yMjJxMCAtMTIgLTggLTIzdC0yMCAtMTNsLTE4NSAtMjhxLTE5IC01NCAtMzkgLTkxcTM1IC01MCAxMDcgLTEzOHExMCAtMTIgMTAgLTI1dC05IC0yM3EtMjcgLTM3IC05OSAtMTA4dC05NCAtNzFxLTEyIDAgLTI2IDlsLTEzOCAxMDhxLTQ0IC0yMyAtOTEgLTM4CnEtMTYgLTEzNiAtMjkgLTE4NnEtNyAtMjggLTM2IC0yOGgtMjIycS0xNCAwIC0yNC41IDguNXQtMTEuNSAyMS41bC0yOCAxODRxLTQ5IDE2IC05MCAzN2wtMTQxIC0xMDdxLTEwIC05IC0yNSAtOXEtMTQgMCAtMjUgMTFxLTEyNiAxMTQgLTE2NSAxNjhxLTcgMTAgLTcgMjNxMCAxMiA4IDIzcTE1IDIxIDUxIDY2LjV0NTQgNzAuNXEtMjcgNTAgLTQxIDk5bC0xODMgMjdxLTEzIDIgLTIxIDEyLjV0LTggMjMuNXYyMjJxMCAxMiA4IDIzdDE5IDEzCmwxODYgMjhxMTQgNDYgMzkgOTJxLTQwIDU3IC0xMDcgMTM4cS0xMCAxMiAtMTAgMjRxMCAxMCA5IDIzcTI2IDM2IDk4LjUgMTA3LjV0OTQuNSA3MS41cTEzIDAgMjYgLTEwbDEzOCAtMTA3cTQ0IDIzIDkxIDM4cTE2IDEzNiAyOSAxODZxNyAyOCAzNiAyOGgyMjJxMTQgMCAyNC41IC04LjV0MTEuNSAtMjEuNWwyOCAtMTg0cTQ5IC0xNiA5MCAtMzdsMTQyIDEwN3E5IDkgMjQgOXExMyAwIDI1IC0xMHExMjkgLTExOSAxNjUgLTE3MHE3IC04IDcgLTIyCnEwIC0xMiAtOCAtMjNxLTE1IC0yMSAtNTEgLTY2LjV0LTU0IC03MC41cTI2IC01MCA0MSAtOThsMTgzIC0yOHExMyAtMiAyMSAtMTIuNXQ4IC0yMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmFzaCIgdW5pY29kZT0iJiN4ZjAxNDsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTUxMiA4MDB2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3pNNzY4IDgwMHYtNTc2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjU3NnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzek0xMDI0IDgwMHYtNTc2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjU3NgpxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3pNMTE1MiA3NnY5NDhoLTg5NnYtOTQ4cTAgLTIyIDcgLTQwLjV0MTQuNSAtMjd0MTAuNSAtOC41aDgzMnEzIDAgMTAuNSA4LjV0MTQuNSAyN3Q3IDQwLjV6TTQ4MCAxMTUyaDQ0OGwtNDggMTE3cS03IDkgLTE3IDExaC0zMTdxLTEwIC0yIC0xNyAtMTF6TTE0MDggMTEyMHYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTk0OHEwIC04MyAtNDcgLTE0My41dC0xMTMgLTYwLjVoLTgzMgpxLTY2IDAgLTExMyA1OC41dC00NyAxNDEuNXY5NTJoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDMwOWw3MCAxNjdxMTUgMzcgNTQgNjN0NzkgMjZoMzIwcTQwIDAgNzkgLTI2dDU0IC02M2w3MCAtMTY3aDMwOXExNCAwIDIzIC05dDkgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJob21lIiB1bmljb2RlPSImI3hmMDE1OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTQwOCA1NDR2LTQ4MHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTM4NHYzODRoLTI1NnYtMzg0aC0zODRxLTI2IDAgLTQ1IDE5dC0xOSA0NXY0ODBxMCAxIDAuNSAzdDAuNSAzbDU3NSA0NzRsNTc1IC00NzRxMSAtMiAxIC02ek0xNjMxIDYxM2wtNjIgLTc0cS04IC05IC0yMSAtMTFoLTNxLTEzIDAgLTIxIDdsLTY5MiA1NzdsLTY5MiAtNTc3cS0xMiAtOCAtMjQgLTdxLTEzIDIgLTIxIDExbC02MiA3NHEtOCAxMCAtNyAyMy41dDExIDIxLjUKbDcxOSA1OTlxMzIgMjYgNzYgMjZ0NzYgLTI2bDI0NCAtMjA0djE5NXEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtNDA4bDIxOSAtMTgycTEwIC04IDExIC0yMS41dC03IC0yMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmaWxlX2FsdCIgdW5pY29kZT0iJiN4ZjAxNjsiIApkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoKIiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InRpbWUiIHVuaWNvZGU9IiYjeGYwMTc7IiAKZD0iTTg5NiA5OTJ2LTQ0OHEwIC0xNCAtOSAtMjN0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMjI0djM1MnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzN6TTE1MzYgNjQwCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icm9hZCIgdW5pY29kZT0iJiN4ZjAxODsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTExMTEgNTQwdjRsLTI0IDMyMHEtMSAxMyAtMTEgMjIuNXQtMjMgOS41aC0xODZxLTEzIDAgLTIzIC05LjV0LTExIC0yMi41bC0yNCAtMzIwdi00cS0xIC0xMiA4IC0yMHQyMSAtOGgyNDRxMTIgMCAyMSA4dDggMjB6TTE4NzAgNzNxMCAtNzMgLTQ2IC03M2gtNzA0cTEzIDAgMjIgOS41dDggMjIuNWwtMjAgMjU2cS0xIDEzIC0xMSAyMi41dC0yMyA5LjVoLTI3MnEtMTMgMCAtMjMgLTkuNXQtMTEgLTIyLjVsLTIwIC0yNTYKcS0xIC0xMyA4IC0yMi41dDIyIC05LjVoLTcwNHEtNDYgMCAtNDYgNzNxMCA1NCAyNiAxMTZsNDE3IDEwNDRxOCAxOSAyNiAzM3QzOCAxNGgzMzlxLTEzIDAgLTIzIC05LjV0LTExIC0yMi41bC0xNSAtMTkycS0xIC0xNCA4IC0yM3QyMiAtOWgxNjZxMTMgMCAyMiA5dDggMjNsLTE1IDE5MnEtMSAxMyAtMTEgMjIuNXQtMjMgOS41aDMzOXEyMCAwIDM4IC0xNHQyNiAtMzNsNDE3IC0xMDQ0cTI2IC02MiAyNiAtMTE2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3dubG9hZF9hbHQiIHVuaWNvZGU9IiYjeGYwMTk7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xMjgwIDE5MnEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE1MzYgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTY2NCA0MTZ2LTMyMHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE0NzJxLTQwIDAgLTY4IDI4dC0yOCA2OHYzMjBxMCA0MCAyOCA2OHQ2OCAyOGg0NjVsMTM1IC0xMzYKcTU4IC01NiAxMzYgLTU2dDEzNiA1NmwxMzYgMTM2aDQ2NHE0MCAwIDY4IC0yOHQyOCAtNjh6TTEzMzkgOTg1cTE3IC00MSAtMTQgLTcwbC00NDggLTQ0OHEtMTggLTE5IC00NSAtMTl0LTQ1IDE5bC00NDggNDQ4cS0zMSAyOSAtMTQgNzBxMTcgMzkgNTkgMzloMjU2djQ0OHEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTQ0OGgyNTZxNDIgMCA1OSAtMzl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImRvd25sb2FkIiB1bmljb2RlPSImI3hmMDFhOyIgCmQ9Ik0xMTIwIDYwOHEwIC0xMiAtMTAgLTI0bC0zMTkgLTMxOXEtMTEgLTkgLTIzIC05dC0yMyA5bC0zMjAgMzIwcS0xNSAxNiAtNyAzNXE4IDIwIDMwIDIwaDE5MnYzNTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTM1MmgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNNzY4IDExODRxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczCnQtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1cGxvYWQiIHVuaWNvZGU9IiYjeGYwMWI7IiAKZD0iTTExMTggNjYwcS04IC0yMCAtMzAgLTIwaC0xOTJ2LTM1MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MzUyaC0xOTJxLTE0IDAgLTIzIDl0LTkgMjNxMCAxMiAxMCAyNGwzMTkgMzE5cTExIDkgMjMgOXQyMyAtOWwzMjAgLTMyMHExNSAtMTYgNyAtMzV6TTc2OCAxMTg0cS0xNDggMCAtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4CnQ3MyAyNzN0LTczIDI3M3QtMTk4IDE5OHQtMjczIDczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaW5ib3giIHVuaWNvZGU9IiYjeGYwMWM7IiAKZD0iTTEwMjMgNTc2aDMxNnEtMSAzIC0yLjUgOC41dC0yLjUgNy41bC0yMTIgNDk2aC03MDhsLTIxMiAtNDk2cS0xIC0zIC0yLjUgLTguNXQtMi41IC03LjVoMzE2bDk1IC0xOTJoMzIwek0xNTM2IDU0NnYtNDgycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djQ4MnEwIDYyIDI1IDEyM2wyMzggNTUycTEwIDI1IDM2LjUgNDJ0NTIuNSAxN2g4MzJxMjYgMCA1Mi41IC0xN3QzNi41IC00MmwyMzggLTU1MgpxMjUgLTYxIDI1IC0xMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InBsYXlfY2lyY2xlIiB1bmljb2RlPSImI3hmMDFkOyIgCmQ9Ik0xMTg0IDY0MHEwIC0zNyAtMzIgLTU1bC01NDQgLTMyMHEtMTUgLTkgLTMyIC05cS0xNiAwIC0zMiA4cS0zMiAxOSAtMzIgNTZ2NjQwcTAgMzcgMzIgNTZxMzMgMTggNjQgLTFsNTQ0IC0zMjBxMzIgLTE4IDMyIC01NXpNMTMxMiA2NDBxMCAxNDggLTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczek0xNTM2IDY0MApxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InJlcGVhdCIgdW5pY29kZT0iJiN4ZjAxZTsiIApkPSJNMTUzNiAxMjgwdi00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC00NDhxLTQyIDAgLTU5IDQwcS0xNyAzOSAxNCA2OWwxMzggMTM4cS0xNDggMTM3IC0zNDkgMTM3cS0xMDQgMCAtMTk4LjUgLTQwLjV0LTE2My41IC0xMDkuNXQtMTA5LjUgLTE2My41dC00MC41IC0xOTguNXQ0MC41IC0xOTguNXQxMDkuNSAtMTYzLjV0MTYzLjUgLTEwOS41dDE5OC41IC00MC41cTExOSAwIDIyNSA1MnQxNzkgMTQ3cTcgMTAgMjMgMTJxMTUgMCAyNSAtOQpsMTM3IC0xMzhxOSAtOCA5LjUgLTIwLjV0LTcuNSAtMjIuNXEtMTA5IC0xMzIgLTI2NCAtMjA0LjV0LTMyNyAtNzIuNXEtMTU2IDAgLTI5OCA2MXQtMjQ1IDE2NHQtMTY0IDI0NXQtNjEgMjk4dDYxIDI5OHQxNjQgMjQ1dDI0NSAxNjR0Mjk4IDYxcTE0NyAwIDI4NC41IC01NS41dDI0NC41IC0xNTYuNWwxMzAgMTI5cTI5IDMxIDcwIDE0cTM5IC0xNyAzOSAtNTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InJlZnJlc2giIHVuaWNvZGU9IiYjeGYwMjE7IiAKZD0iTTE1MTEgNDgwcTAgLTUgLTEgLTdxLTY0IC0yNjggLTI2OCAtNDM0LjV0LTQ3OCAtMTY2LjVxLTE0NiAwIC0yODIuNSA1NXQtMjQzLjUgMTU3bC0xMjkgLTEyOXEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5dC0xOSA0NXY0NDhxMCAyNiAxOSA0NXQ0NSAxOWg0NDhxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDVsLTEzNyAtMTM3cTcxIC02NiAxNjEgLTEwMnQxODcgLTM2cTEzNCAwIDI1MCA2NXQxODYgMTc5cTExIDE3IDUzIDExNwpxOCAyMyAzMCAyM2gxOTJxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNTM2IDEyODB2LTQ0OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTQ0OHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDEzOCAxMzhxLTE0OCAxMzcgLTM0OSAxMzdxLTEzNCAwIC0yNTAgLTY1dC0xODYgLTE3OXEtMTEgLTE3IC01MyAtMTE3cS04IC0yMyAtMzAgLTIzaC0xOTlxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY3cTY1IDI2OCAyNzAgNDM0LjV0NDgwIDE2Ni41CnExNDYgMCAyODQgLTU1LjV0MjQ1IC0xNTYuNWwxMzAgMTI5cTE5IDE5IDQ1IDE5dDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Imxpc3RfYWx0IiB1bmljb2RlPSImI3hmMDIyOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMzg0IDM1MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNjA4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck0zODQgODY0di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE1MzYgMzUydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTk2MHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoOTYwcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoKTTE1MzYgNjA4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTk2MHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoOTYwcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTUzNiA4NjR2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTYwcS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg5NjBxMTMgMCAyMi41IC05LjUKdDkuNSAtMjIuNXpNMTY2NCAxNjB2ODMycTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTQ3MnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTgzMnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE0NzJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTc5MiAxMjQ4di0xMDg4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxNDcycTY2IDAgMTEzIC00Nwp0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibG9jayIgdW5pY29kZT0iJiN4ZjAyMzsiIGhvcml6LWFkdi14PSIxMTUyIiAKZD0iTTMyMCA3NjhoNTEydjE5MnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF2LTE5MnpNMTE1MiA2NzJ2LTU3NnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djU3NnEwIDQwIDI4IDY4dDY4IDI4aDMydjE5MnEwIDE4NCAxMzIgMzE2dDMxNiAxMzJ0MzE2IC0xMzJ0MTMyIC0zMTZ2LTE5MmgzMnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZsYWciIHVuaWNvZGU9IiYjeGYwMjQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0zMjAgMTI4MHEwIC03MiAtNjQgLTExMHYtMTI2NnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTI2NnEtNjQgMzggLTY0IDExMHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xNzkyIDEyMTZ2LTc2M3EwIC0yNSAtMTIuNSAtMzguNXQtMzkuNSAtMjcuNXEtMjE1IC0xMTYgLTM2OSAtMTE2cS02MSAwIC0xMjMuNSAyMnQtMTA4LjUgNDgKdC0xMTUuNSA0OHQtMTQyLjUgMjJxLTE5MiAwIC00NjQgLTE0NnEtMTcgLTkgLTMzIC05cS0yNiAwIC00NSAxOXQtMTkgNDV2NzQycTAgMzIgMzEgNTVxMjEgMTQgNzkgNDNxMjM2IDEyMCA0MjEgMTIwcTEwNyAwIDIwMCAtMjl0MjE5IC04OHEzOCAtMTkgODggLTE5cTU0IDAgMTE3LjUgMjF0MTEwIDQ3dDg4IDQ3dDU0LjUgMjFxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoZWFkcGhvbmVzIiB1bmljb2RlPSImI3hmMDI1OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTY2NCA2NTBxMCAtMTY2IC02MCAtMzE0bC0yMCAtNDlsLTE4NSAtMzNxLTIyIC04MyAtOTAuNSAtMTM2LjV0LTE1Ni41IC01My41di0zMnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3YtMzJxNzEgMCAxMzAgLTM1LjV0OTMgLTk1LjVsNjggMTJxMjkgOTUgMjkgMTkzcTAgMTQ4IC04OCAyNzl0LTIzNi41IDIwOXQtMzE1LjUgNzgKdC0zMTUuNSAtNzh0LTIzNi41IC0yMDl0LTg4IC0yNzlxMCAtOTggMjkgLTE5M2w2OCAtMTJxMzQgNjAgOTMgOTUuNXQxMzAgMzUuNXYzMnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MzJxLTg4IDAgLTE1Ni41IDUzLjV0LTkwLjUgMTM2LjVsLTE4NSAzM2wtMjAgNDlxLTYwIDE0OCAtNjAgMzE0cTAgMTUxIDY3IDI5MXQxNzkgMjQyLjUKdDI2NiAxNjMuNXQzMjAgNjF0MzIwIC02MXQyNjYgLTE2My41dDE3OSAtMjQyLjV0NjcgLTI5MXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idm9sdW1lX29mZiIgdW5pY29kZT0iJiN4ZjAyNjsiIGhvcml6LWFkdi14PSI3NjgiIApkPSJNNzY4IDExODR2LTEwODhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMzMzIDMzM2gtMjYycS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloMjYybDMzMyAzMzNxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idm9sdW1lX2Rvd24iIHVuaWNvZGU9IiYjeGYwMjc7IiBob3Jpei1hZHYteD0iMTE1MiIgCmQ9Ik03NjggMTE4NHYtMTA4OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5bC0zMzMgMzMzaC0yNjJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYzODRxMCAyNiAxOSA0NXQ0NSAxOWgyNjJsMzMzIDMzM3ExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1ek0xMTUyIDY0MHEwIC03NiAtNDIuNSAtMTQxLjV0LTExMi41IC05My41cS0xMCAtNSAtMjUgLTVxLTI2IDAgLTQ1IDE4LjV0LTE5IDQ1LjVxMCAyMSAxMiAzNS41dDI5IDI1dDM0IDIzdDI5IDM2CnQxMiA1Ni41dC0xMiA1Ni41dC0yOSAzNnQtMzQgMjN0LTI5IDI1dC0xMiAzNS41cTAgMjcgMTkgNDUuNXQ0NSAxOC41cTE1IDAgMjUgLTVxNzAgLTI3IDExMi41IC05M3Q0Mi41IC0xNDJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InZvbHVtZV91cCIgdW5pY29kZT0iJiN4ZjAyODsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTc2OCAxMTg0di0xMDg4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTlsLTMzMyAzMzNoLTI2MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NHEwIDI2IDE5IDQ1dDQ1IDE5aDI2MmwzMzMgMzMzcTE5IDE5IDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTExNTIgNjQwcTAgLTc2IC00Mi41IC0xNDEuNXQtMTEyLjUgLTkzLjVxLTEwIC01IC0yNSAtNXEtMjYgMCAtNDUgMTguNXQtMTkgNDUuNXEwIDIxIDEyIDM1LjV0MjkgMjV0MzQgMjN0MjkgMzYKdDEyIDU2LjV0LTEyIDU2LjV0LTI5IDM2dC0zNCAyM3QtMjkgMjV0LTEyIDM1LjVxMCAyNyAxOSA0NS41dDQ1IDE4LjVxMTUgMCAyNSAtNXE3MCAtMjcgMTEyLjUgLTkzdDQyLjUgLTE0MnpNMTQwOCA2NDBxMCAtMTUzIC04NSAtMjgyLjV0LTIyNSAtMTg4LjVxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDYgMTl0LTE5IDQ1cTAgMzkgMzkgNTlxNTYgMjkgNzYgNDRxNzQgNTQgMTE1LjUgMTM1LjV0NDEuNSAxNzMuNXQtNDEuNSAxNzMuNQp0LTExNS41IDEzNS41cS0yMCAxNSAtNzYgNDRxLTM5IDIwIC0zOSA1OXEwIDI2IDE5IDQ1dDQ1IDE5cTEzIDAgMjYgLTVxMTQwIC01OSAyMjUgLTE4OC41dDg1IC0yODIuNXpNMTY2NCA2NDBxMCAtMjMwIC0xMjcgLTQyMi41dC0zMzggLTI4My41cS0xMyAtNSAtMjYgLTVxLTI2IDAgLTQ1IDE5dC0xOSA0NXEwIDM2IDM5IDU5cTcgNCAyMi41IDEwLjV0MjIuNSAxMC41cTQ2IDI1IDgyIDUxcTEyMyA5MSAxOTIgMjI3dDY5IDI4OXQtNjkgMjg5CnQtMTkyIDIyN3EtMzYgMjYgLTgyIDUxcS03IDQgLTIyLjUgMTAuNXQtMjIuNSAxMC41cS0zOSAyMyAtMzkgNTlxMCAyNiAxOSA0NXQ0NSAxOXExMyAwIDI2IC01cTIxMSAtOTEgMzM4IC0yODMuNXQxMjcgLTQyMi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxcmNvZGUiIHVuaWNvZGU9IiYjeGYwMjk7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik0zODQgMzg0di0xMjhoLTEyOHYxMjhoMTI4ek0zODQgMTE1MnYtMTI4aC0xMjh2MTI4aDEyOHpNMTE1MiAxMTUydi0xMjhoLTEyOHYxMjhoMTI4ek0xMjggMTI5aDM4NHYzODNoLTM4NHYtMzgzek0xMjggODk2aDM4NHYzODRoLTM4NHYtMzg0ek04OTYgODk2aDM4NHYzODRoLTM4NHYtMzg0ek02NDAgNjQwdi02NDBoLTY0MHY2NDBoNjQwek0xMTUyIDEyOHYtMTI4aC0xMjh2MTI4aDEyOHpNMTQwOCAxMjh2LTEyOGgtMTI4djEyOGgxMjh6Ck0xNDA4IDY0MHYtMzg0aC0zODR2MTI4aC0xMjh2LTM4NGgtMTI4djY0MGgzODR2LTEyOGgxMjh2MTI4aDEyOHpNNjQwIDE0MDh2LTY0MGgtNjQwdjY0MGg2NDB6TTE0MDggMTQwOHYtNjQwaC02NDB2NjQwaDY0MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmFyY29kZSIgdW5pY29kZT0iJiN4ZjAyYTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTYzIDBoLTYzdjE0MDhoNjN2LTE0MDh6TTEyNiAxaC0zMnYxNDA3aDMydi0xNDA3ek0yMjAgMWgtMzF2MTQwN2gzMXYtMTQwN3pNMzc3IDFoLTMxdjE0MDdoMzF2LTE0MDd6TTUzNCAxaC02MnYxNDA3aDYydi0xNDA3ek02NjAgMWgtMzF2MTQwN2gzMXYtMTQwN3pNNzIzIDFoLTMxdjE0MDdoMzF2LTE0MDd6TTc4NiAxaC0zMXYxNDA3aDMxdi0xNDA3ek05NDMgMWgtNjN2MTQwN2g2M3YtMTQwN3pNMTEwMCAxaC02M3YxNDA3aDYzdi0xNDA3egpNMTIyNiAxaC02M3YxNDA3aDYzdi0xNDA3ek0xMzUyIDFoLTYzdjE0MDdoNjN2LTE0MDd6TTE0NDYgMWgtNjN2MTQwN2g2M3YtMTQwN3pNMTYzNSAxaC05NHYxNDA3aDk0di0xNDA3ek0xNjk4IDFoLTMydjE0MDdoMzJ2LTE0MDd6TTE3OTIgMGgtNjN2MTQwOGg2M3YtMTQwOHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGFnIiB1bmljb2RlPSImI3hmMDJiOyIgCmQ9Ik00NDggMTA4OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTUxNSA1MTJxMCAtNTMgLTM3IC05MGwtNDkxIC00OTJxLTM5IC0zNyAtOTEgLTM3cS01MyAwIC05MCAzN2wtNzE1IDcxNnEtMzggMzcgLTY0LjUgMTAxdC0yNi41IDExN3Y0MTZxMCA1MiAzOCA5MHQ5MCAzOGg0MTZxNTMgMCAxMTcgLTI2LjV0MTAyIC02NC41Cmw3MTUgLTcxNHEzNyAtMzkgMzcgLTkxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0YWdzIiB1bmljb2RlPSImI3hmMDJjOyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNNDQ4IDEwODhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE1MTUgNTEycTAgLTUzIC0zNyAtOTBsLTQ5MSAtNDkycS0zOSAtMzcgLTkxIC0zN3EtNTMgMCAtOTAgMzdsLTcxNSA3MTZxLTM4IDM3IC02NC41IDEwMXQtMjYuNSAxMTd2NDE2cTAgNTIgMzggOTB0OTAgMzhoNDE2cTUzIDAgMTE3IC0yNi41dDEwMiAtNjQuNQpsNzE1IC03MTRxMzcgLTM5IDM3IC05MXpNMTg5OSA1MTJxMCAtNTMgLTM3IC05MGwtNDkxIC00OTJxLTM5IC0zNyAtOTEgLTM3cS0zNiAwIC01OSAxNHQtNTMgNDVsNDcwIDQ3MHEzNyAzNyAzNyA5MHEwIDUyIC0zNyA5MWwtNzE1IDcxNHEtMzggMzggLTEwMiA2NC41dC0xMTcgMjYuNWgyMjRxNTMgMCAxMTcgLTI2LjV0MTAyIC02NC41bDcxNSAtNzE0cTM3IC0zOSAzNyAtOTF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImJvb2siIHVuaWNvZGU9IiYjeGYwMmQ7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNjM5IDEwNThxNDAgLTU3IDE4IC0xMjlsLTI3NSAtOTA2cS0xOSAtNjQgLTc2LjUgLTEwNy41dC0xMjIuNSAtNDMuNWgtOTIzcS03NyAwIC0xNDguNSA1My41dC05OS41IDEzMS41cS0yNCA2NyAtMiAxMjdxMCA0IDMgMjd0NCAzN3ExIDggLTMgMjEuNXQtMyAxOS41cTIgMTEgOCAyMXQxNi41IDIzLjV0MTYuNSAyMy41cTIzIDM4IDQ1IDkxLjV0MzAgOTEuNXEzIDEwIDAuNSAzMHQtMC41IDI4cTMgMTEgMTcgMjh0MTcgMjMKcTIxIDM2IDQyIDkydDI1IDkwcTEgOSAtMi41IDMydDAuNSAyOHE0IDEzIDIyIDMwLjV0MjIgMjIuNXExOSAyNiA0Mi41IDg0LjV0MjcuNSA5Ni41cTEgOCAtMyAyNS41dC0yIDI2LjVxMiA4IDkgMTh0MTggMjN0MTcgMjFxOCAxMiAxNi41IDMwLjV0MTUgMzV0MTYgMzZ0MTkuNSAzMnQyNi41IDIzLjV0MzYgMTEuNXQ0Ny41IC01LjVsLTEgLTNxMzggOSA1MSA5aDc2MXE3NCAwIDExNCAtNTZ0MTggLTEzMGwtMjc0IC05MDYKcS0zNiAtMTE5IC03MS41IC0xNTMuNXQtMTI4LjUgLTM0LjVoLTg2OXEtMjcgMCAtMzggLTE1cS0xMSAtMTYgLTEgLTQzcTI0IC03MCAxNDQgLTcwaDkyM3EyOSAwIDU2IDE1LjV0MzUgNDEuNWwzMDAgOTg3cTcgMjIgNSA1N3EzOCAtMTUgNTkgLTQzek01NzUgMTA1NnEtNCAtMTMgMiAtMjIuNXQyMCAtOS41aDYwOHExMyAwIDI1LjUgOS41dDE2LjUgMjIuNWwyMSA2NHE0IDEzIC0yIDIyLjV0LTIwIDkuNWgtNjA4cS0xMyAwIC0yNS41IC05LjUKdC0xNi41IC0yMi41ek00OTIgODAwcS00IC0xMyAyIC0yMi41dDIwIC05LjVoNjA4cTEzIDAgMjUuNSA5LjV0MTYuNSAyMi41bDIxIDY0cTQgMTMgLTIgMjIuNXQtMjAgOS41aC02MDhxLTEzIDAgLTI1LjUgLTkuNXQtMTYuNSAtMjIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYm9va21hcmsiIHVuaWNvZGU9IiYjeGYwMmU7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMTY0IDE0MDhxMjMgMCA0NCAtOXEzMyAtMTMgNTIuNSAtNDF0MTkuNSAtNjJ2LTEyODlxMCAtMzQgLTE5LjUgLTYydC01Mi41IC00MXEtMTkgLTggLTQ0IC04cS00OCAwIC04MyAzMmwtNDQxIDQyNGwtNDQxIC00MjRxLTM2IC0zMyAtODMgLTMzcS0yMyAwIC00NCA5cS0zMyAxMyAtNTIuNSA0MXQtMTkuNSA2MnYxMjg5cTAgMzQgMTkuNSA2MnQ1Mi41IDQxcTIxIDkgNDQgOWgxMDQ4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwcmludCIgdW5pY29kZT0iJiN4ZjAyZjsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTM4NCAwaDg5NnYyNTZoLTg5NnYtMjU2ek0zODQgNjQwaDg5NnYzODRoLTE2MHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MGgtNjQwdi02NDB6TTE1MzYgNTc2cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTY2NCA1NzZ2LTQxNnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTIyNHYtMTYwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTYwcS00MCAwIC02OCAyOHQtMjggNjgKdjE2MGgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NDE2cTAgNzkgNTYuNSAxMzUuNXQxMzUuNSA1Ni41aDY0djU0NHEwIDQwIDI4IDY4dDY4IDI4aDY3MnE0MCAwIDg4IC0yMHQ3NiAtNDhsMTUyIC0xNTJxMjggLTI4IDQ4IC03NnQyMCAtODh2LTI1Nmg2NHE3OSAwIDEzNS41IC01Ni41dDU2LjUgLTEzNS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYW1lcmEiIHVuaWNvZGU9IiYjeGYwMzA7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik05NjAgODY0cTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41dC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjV0LTIwMy41IDg0LjV0LTg0LjUgMjAzLjV0ODQuNSAyMDMuNXQyMDMuNSA4NC41ek0xNjY0IDEyODBxMTA2IDAgMTgxIC03NXQ3NSAtMTgxdi04OTZxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1aC0xNDA4cS0xMDYgMCAtMTgxIDc1dC03NSAxODF2ODk2cTAgMTA2IDc1IDE4MXQxODEgNzVoMjI0bDUxIDEzNgpxMTkgNDkgNjkuNSA4NC41dDEwMy41IDM1LjVoNTEycTUzIDAgMTAzLjUgLTM1LjV0NjkuNSAtODQuNWw1MSAtMTM2aDIyNHpNOTYwIDEyOHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmb250IiB1bmljb2RlPSImI3hmMDMxOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNNzI1IDk3N2wtMTcwIC00NTBxMzMgMCAxMzYuNSAtMnQxNjAuNSAtMnExOSAwIDU3IDJxLTg3IDI1MyAtMTg0IDQ1MnpNMCAtMTI4bDIgNzlxMjMgNyA1NiAxMi41dDU3IDEwLjV0NDkuNSAxNC41dDQ0LjUgMjl0MzEgNTAuNWwyMzcgNjE2bDI4MCA3MjRoNzVoNTNxOCAtMTQgMTEgLTIxbDIwNSAtNDgwcTMzIC03OCAxMDYgLTI1Ny41dDExNCAtMjc0LjVxMTUgLTM0IDU4IC0xNDQuNXQ3MiAtMTY4LjVxMjAgLTQ1IDM1IC01NwpxMTkgLTE1IDg4IC0yOS41dDg0IC0yMC41cTYgLTM4IDYgLTU3cTAgLTUgLTAuNSAtMTMuNXQtMC41IC0xMi41cS02MyAwIC0xOTAgOHQtMTkxIDhxLTc2IDAgLTIxNSAtN3QtMTc4IC04cTAgNDMgNCA3OGwxMzEgMjhxMSAwIDEyLjUgMi41dDE1LjUgMy41dDE0LjUgNC41dDE1IDYuNXQxMSA4dDkgMTF0Mi41IDE0cTAgMTYgLTMxIDk2LjV0LTcyIDE3Ny41dC00MiAxMDBsLTQ1MCAycS0yNiAtNTggLTc2LjUgLTE5NS41dC01MC41IC0xNjIuNQpxMCAtMjIgMTQgLTM3LjV0NDMuNSAtMjQuNXQ0OC41IC0xMy41dDU3IC04LjV0NDEgLTRxMSAtMTkgMSAtNThxMCAtOSAtMiAtMjdxLTU4IDAgLTE3NC41IDEwdC0xNzQuNSAxMHEtOCAwIC0yNi41IC00dC0yMS41IC00cS04MCAtMTQgLTE4OCAtMTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImJvbGQiIHVuaWNvZGU9IiYjeGYwMzI7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik01NTUgMTVxNzQgLTMyIDE0MCAtMzJxMzc2IDAgMzc2IDMzNXEwIDExNCAtNDEgMTgwcS0yNyA0NCAtNjEuNSA3NHQtNjcuNSA0Ni41dC04MC41IDI1dC04NCAxMC41dC05NC41IDJxLTczIDAgLTEwMSAtMTBxMCAtNTMgLTAuNSAtMTU5dC0wLjUgLTE1OHEwIC04IC0xIC02Ny41dC0wLjUgLTk2LjV0NC41IC04My41dDEyIC02Ni41ek01NDEgNzYxcTQyIC03IDEwOSAtN3E4MiAwIDE0MyAxM3QxMTAgNDQuNXQ3NC41IDg5LjV0MjUuNSAxNDIKcTAgNzAgLTI5IDEyMi41dC03OSA4MnQtMTA4IDQzLjV0LTEyNCAxNHEtNTAgMCAtMTMwIC0xM3EwIC01MCA0IC0xNTF0NCAtMTUycTAgLTI3IC0wLjUgLTgwdC0wLjUgLTc5cTAgLTQ2IDEgLTY5ek0wIC0xMjhsMiA5NHExNSA0IDg1IDE2dDEwNiAyN3E3IDEyIDEyLjUgMjd0OC41IDMzLjV0NS41IDMyLjV0MyAzNy41dDAuNSAzNHYzNS41djMwcTAgOTgyIC0yMiAxMDI1cS00IDggLTIyIDE0LjV0LTQ0LjUgMTF0LTQ5LjUgN3QtNDguNSA0LjUKdC0zMC41IDNsLTQgODNxOTggMiAzNDAgMTEuNXQzNzMgOS41cTIzIDAgNjggLTAuNXQ2OCAtMC41cTcwIDAgMTM2LjUgLTEzdDEyOC41IC00MnQxMDggLTcxdDc0IC0xMDQuNXQyOCAtMTM3LjVxMCAtNTIgLTE2LjUgLTk1LjV0LTM5IC03MnQtNjQuNSAtNTcuNXQtNzMgLTQ1dC04NCAtNDBxMTU0IC0zNSAyNTYuNSAtMTM0dDEwMi41IC0yNDhxMCAtMTAwIC0zNSAtMTc5LjV0LTkzLjUgLTEzMC41dC0xMzggLTg1LjV0LTE2My41IC00OC41CnQtMTc2IC0xNHEtNDQgMCAtMTMyIDN0LTEzMiAzcS0xMDYgMCAtMzA3IC0xMXQtMjMxIC0xMnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaXRhbGljIiB1bmljb2RlPSImI3hmMDMzOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNMCAtMTI2bDE3IDg1cTIyIDcgNjEuNSAxNi41dDcyIDE5dDU5LjUgMjMuNXEyOCAzNSA0MSAxMDFxMSA3IDYyIDI4OXQxMTQgNTQzLjV0NTIgMjk2LjV2MjVxLTI0IDEzIC01NC41IDE4LjV0LTY5LjUgOHQtNTggNS41bDE5IDEwM3EzMyAtMiAxMjAgLTYuNXQxNDkuNSAtN3QxMjAuNSAtMi41cTQ4IDAgOTguNSAyLjV0MTIxIDd0OTguNSA2LjVxLTUgLTM5IC0xOSAtODlxLTMwIC0xMCAtMTAxLjUgLTI4LjV0LTEwOC41IC0zMy41CnEtOCAtMTkgLTE0IC00Mi41dC05IC00MHQtNy41IC00NS41dC02LjUgLTQycS0yNyAtMTQ4IC04Ny41IC00MTkuNXQtNzcuNSAtMzU1LjVxLTIgLTkgLTEzIC01OHQtMjAgLTkwdC0xNiAtODMuNXQtNiAtNTcuNWwxIC0xOHExNyAtNCAxODUgLTMxcS0zIC00NCAtMTYgLTk5cS0xMSAwIC0zMi41IC0xLjV0LTMyLjUgLTEuNXEtMjkgMCAtODcgMTB0LTg2IDEwcS0xMzggMiAtMjA2IDJxLTUxIDAgLTE0MyAtOXQtMTIxIC0xMXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGV4dF9oZWlnaHQiIHVuaWNvZGU9IiYjeGYwMzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzQ0IDEyOHEzMyAwIDQyIC0xOC41dC0xMSAtNDQuNWwtMTI2IC0xNjJxLTIwIC0yNiAtNDkgLTI2dC00OSAyNmwtMTI2IDE2MnEtMjAgMjYgLTExIDQ0LjV0NDIgMTguNWg4MHYxMDI0aC04MHEtMzMgMCAtNDIgMTguNXQxMSA0NC41bDEyNiAxNjJxMjAgMjYgNDkgMjZ0NDkgLTI2bDEyNiAtMTYycTIwIC0yNiAxMSAtNDQuNXQtNDIgLTE4LjVoLTgwdi0xMDI0aDgwek04MSAxNDA3bDU0IC0yN3ExMiAtNSAyMTEgLTVxNDQgMCAxMzIgMgp0MTMyIDJxMzYgMCAxMDcuNSAtMC41dDEwNy41IC0wLjVoMjkzcTYgMCAyMSAtMC41dDIwLjUgMHQxNiAzdDE3LjUgOXQxNSAxNy41bDQyIDFxNCAwIDE0IC0wLjV0MTQgLTAuNXEyIC0xMTIgMiAtMzM2cTAgLTgwIC01IC0xMDlxLTM5IC0xNCAtNjggLTE4cS0yNSA0NCAtNTQgMTI4cS0zIDkgLTExIDQ4dC0xNC41IDczLjV0LTcuNSAzNS41cS02IDggLTEyIDEyLjV0LTE1LjUgNnQtMTMgMi41dC0xOCAwLjV0LTE2LjUgLTAuNQpxLTE3IDAgLTY2LjUgMC41dC03NC41IDAuNXQtNjQgLTJ0LTcxIC02cS05IC04MSAtOCAtMTM2cTAgLTk0IDIgLTM4OHQyIC00NTVxMCAtMTYgLTIuNSAtNzEuNXQwIC05MS41dDEyLjUgLTY5cTQwIC0yMSAxMjQgLTQyLjV0MTIwIC0zNy41cTUgLTQwIDUgLTUwcTAgLTE0IC0zIC0yOWwtMzQgLTFxLTc2IC0yIC0yMTggOHQtMjA3IDEwcS01MCAwIC0xNTEgLTl0LTE1MiAtOXEtMyA1MSAtMyA1MnY5cTE3IDI3IDYxLjUgNDN0OTguNSAyOXQ3OCAyNwpxMTkgNDIgMTkgMzgzcTAgMTAxIC0zIDMwM3QtMyAzMDN2MTE3cTAgMiAwLjUgMTUuNXQwLjUgMjV0LTEgMjUuNXQtMyAyNHQtNSAxNHEtMTEgMTIgLTE2MiAxMnEtMzMgMCAtOTMgLTEydC04MCAtMjZxLTE5IC0xMyAtMzQgLTcyLjV0LTMxLjUgLTExMXQtNDIuNSAtNTMuNXEtNDIgMjYgLTU2IDQ0djM4M3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGV4dF93aWR0aCIgdW5pY29kZT0iJiN4ZjAzNTsiIApkPSJNODEgMTQwN2w1NCAtMjdxMTIgLTUgMjExIC01cTQ0IDAgMTMyIDJ0MTMyIDJxNzAgMCAyNDYuNSAxdDMwNC41IDAuNXQyNDcgLTQuNXEzMyAtMSA1NiAzMWw0MiAxcTQgMCAxNCAtMC41dDE0IC0wLjVxMiAtMTEyIDIgLTMzNnEwIC04MCAtNSAtMTA5cS0zOSAtMTQgLTY4IC0xOHEtMjUgNDQgLTU0IDEyOHEtMyA5IC0xMSA0Ny41dC0xNSA3My41dC03IDM2cS0xMCAxMyAtMjcgMTlxLTUgMiAtNjYgMnEtMzAgMCAtOTMgMXQtMTAzIDEKdC05NCAtMnQtOTYgLTdxLTkgLTgxIC04IC0xMzZsMSAtMTUydjUycTAgLTU1IDEgLTE1NHQxLjUgLTE4MHQwLjUgLTE1M3EwIC0xNiAtMi41IC03MS41dDAgLTkxLjV0MTIuNSAtNjlxNDAgLTIxIDEyNCAtNDIuNXQxMjAgLTM3LjVxNSAtNDAgNSAtNTBxMCAtMTQgLTMgLTI5bC0zNCAtMXEtNzYgLTIgLTIxOCA4dC0yMDcgMTBxLTUwIDAgLTE1MSAtOXQtMTUyIC05cS0zIDUxIC0zIDUydjlxMTcgMjcgNjEuNSA0M3Q5OC41IDI5dDc4IDI3CnE3IDE2IDExLjUgNzR0NiAxNDUuNXQxLjUgMTU1dC0wLjUgMTUzLjV0LTAuNSA4OXEwIDcgLTIuNSAyMS41dC0yLjUgMjIuNXEwIDcgMC41IDQ0dDEgNzN0MCA3Ni41dC0zIDY3LjV0LTYuNSAzMnEtMTEgMTIgLTE2MiAxMnEtNDEgMCAtMTYzIC0xMy41dC0xMzggLTI0LjVxLTE5IC0xMiAtMzQgLTcxLjV0LTMxLjUgLTExMS41dC00Mi41IC01NHEtNDIgMjYgLTU2IDQ0djM4M3pNMTMxMCAxMjVxMTIgMCA0MiAtMTkuNXQ1Ny41IC00MS41CnQ1OS41IC00OXQzNiAtMzBxMjYgLTIxIDI2IC00OXQtMjYgLTQ5cS00IC0zIC0zNiAtMzB0LTU5LjUgLTQ5dC01Ny41IC00MS41dC00MiAtMTkuNXEtMTMgMCAtMjAuNSAxMC41dC0xMCAyOC41dC0yLjUgMzMuNXQxLjUgMzN0MS41IDE5LjVoLTEwMjRxMCAtMiAxLjUgLTE5LjV0MS41IC0zM3QtMi41IC0zMy41dC0xMCAtMjguNXQtMjAuNSAtMTAuNXEtMTIgMCAtNDIgMTkuNXQtNTcuNSA0MS41dC01OS41IDQ5dC0zNiAzMHEtMjYgMjEgLTI2IDQ5CnQyNiA0OXE0IDMgMzYgMzB0NTkuNSA0OXQ1Ny41IDQxLjV0NDIgMTkuNXExMyAwIDIwLjUgLTEwLjV0MTAgLTI4LjV0Mi41IC0zMy41dC0xLjUgLTMzdC0xLjUgLTE5LjVoMTAyNHEwIDIgLTEuNSAxOS41dC0xLjUgMzN0Mi41IDMzLjV0MTAgMjguNXQyMC41IDEwLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFsaWduX2xlZnQiIHVuaWNvZGU9IiYjeGYwMzY7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzkyIDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNDA4IDU3NnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDEyODBxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNjY0IDk2MHYtMTI4cTAgLTI2IC0xOSAtNDUKdC00NSAtMTloLTE1MzZxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxNTM2cTI2IDAgNDUgLTE5dDE5IC00NXpNMTI4MCAxMzQ0di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMTUycS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTE1MnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFsaWduX2NlbnRlciIgdW5pY29kZT0iJiN4ZjAzNzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgMTkydi0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE0MDggNTc2di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC04OTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNjY0IDk2MHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOQpoLTE0MDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXpNMTI4MCAxMzQ0di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NDBxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg2NDBxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbGlnbl9yaWdodCIgdW5pY29kZT0iJiN4ZjAzODsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgMTkydi0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgNTc2di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjgwcS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTI4MHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgOTYwdi0xMjhxMCAtMjYgLTE5IC00NQp0LTQ1IC0xOWgtMTUzNnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE1MzZxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDEzNDR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTExNTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxMTUycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWxpZ25fanVzdGlmeSIgdW5pY29kZT0iJiN4ZjAzOTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgMTkydi0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgNTc2di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgOTYwdi0xMjhxMCAtMjYgLTE5IC00NQp0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDEzNDR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE2NjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxNjY0cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlzdCIgdW5pY29kZT0iJiN4ZjAzYTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTI1NiAyMjR2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE5MnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTI1NiA2MDh2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE5MnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNQp0OS41IC0yMi41ek0yNTYgOTkydi0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xOTJxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxOTJxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDIyNHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTM0NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEzNDQKcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMjU2IDEzNzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE5MnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgNjA4di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjUKdDIyLjUgOS41aDEzNDRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDk5MnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTM0NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEzNDRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDEzNzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEzNDRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTIKcTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTM0NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZGVudF9sZWZ0IiB1bmljb2RlPSImI3hmMDNiOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMzg0IDk5MnYtNTc2cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNXEtMTQgMCAtMjMgOWwtMjg4IDI4OHEtOSA5IC05IDIzdDkgMjNsMjg4IDI4OHE5IDkgMjMgOXExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgMjI0di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xNzI4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTcyOHExMyAwIDIyLjUgLTkuNQp0OS41IC0yMi41ek0xNzkyIDYwOHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODhxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDk5MnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODgKcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiAxMzc2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xNzI4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTcyOHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZGVudF9yaWdodCIgdW5pY29kZT0iJiN4ZjAzYzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTM1MiA3MDRxMCAtMTQgLTkgLTIzbC0yODggLTI4OHEtOSAtOSAtMjMgLTlxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY1NzZxMCAxMyA5LjUgMjIuNXQyMi41IDkuNXExNCAwIDIzIC05bDI4OCAtMjg4cTkgLTkgOSAtMjN6TTE3OTIgMjI0di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xNzI4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTcyOHExMyAwIDIyLjUgLTkuNQp0OS41IC0yMi41ek0xNzkyIDYwOHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODhxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDk5MnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODgKcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiAxMzc2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xNzI4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTcyOHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhY2V0aW1lX3ZpZGVvIiB1bmljb2RlPSImI3hmMDNkOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc5MiAxMTg0di0xMDg4cTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDUgMTlsLTQwMyA0MDN2LTE2NnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtNzA0cS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY3MDRxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDcwNHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtMTY1bDQwMyA0MDJxMTggMTkgNDUgMTlxMTIgMCAyNSAtNQpxMzkgLTE3IDM5IC01OXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGljdHVyZSIgdW5pY29kZT0iJiN4ZjAzZTsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTY0MCA5NjBxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDU3NnYtNDQ4aC0xNDA4djE5MmwzMjAgMzIwbDE2MCAtMTYwbDUxMiA1MTJ6TTE3NjAgMTI4MGgtMTYwMHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTEyMTZxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxNjAwcTEzIDAgMjIuNSA5LjV0OS41IDIyLjV2MTIxNgpxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41ek0xOTIwIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE2MDBxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE2MDBxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InBlbmNpbCIgdW5pY29kZT0iJiN4ZjA0MDsiIApkPSJNMzYzIDBsOTEgOTFsLTIzNSAyMzVsLTkxIC05MXYtMTA3aDEyOHYtMTI4aDEwN3pNODg2IDkyOHEwIDIyIC0yMiAyMnEtMTAgMCAtMTcgLTdsLTU0MiAtNTQycS03IC03IC03IC0xN3EwIC0yMiAyMiAtMjJxMTAgMCAxNyA3bDU0MiA1NDJxNyA3IDcgMTd6TTgzMiAxMTIwbDQxNiAtNDE2bC04MzIgLTgzMmgtNDE2djQxNnpNMTUxNSAxMDI0cTAgLTUzIC0zNyAtOTBsLTE2NiAtMTY2bC00MTYgNDE2bDE2NiAxNjVxMzYgMzggOTAgMzgKcTUzIDAgOTEgLTM4bDIzNSAtMjM0cTM3IC0zOSAzNyAtOTF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im1hcF9tYXJrZXIiIHVuaWNvZGU9IiYjeGYwNDE7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik03NjggODk2cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMTAyNCA4OTZxMCAtMTA5IC0zMyAtMTc5bC0zNjQgLTc3NHEtMTYgLTMzIC00Ny41IC01MnQtNjcuNSAtMTl0LTY3LjUgMTl0LTQ2LjUgNTJsLTM2NSA3NzRxLTMzIDcwIC0zMyAxNzlxMCAyMTIgMTUwIDM2MnQzNjIgMTUwdDM2MiAtMTUwdDE1MCAtMzYyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhZGp1c3QiIHVuaWNvZGU9IiYjeGYwNDI7IiAKZD0iTTc2OCA5NnYxMDg4cS0xNDggMCAtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGludCIgdW5pY29kZT0iJiN4ZjA0MzsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTUxMiAzODRxMCAzNiAtMjAgNjlxLTEgMSAtMTUuNSAyMi41dC0yNS41IDM4dC0yNSA0NHQtMjEgNTAuNXEtNCAxNiAtMjEgMTZ0LTIxIC0xNnEtNyAtMjMgLTIxIC01MC41dC0yNSAtNDR0LTI1LjUgLTM4dC0xNS41IC0yMi41cS0yMCAtMzMgLTIwIC02OXEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTAyNCA1MTJxMCAtMjEyIC0xNTAgLTM2MnQtMzYyIC0xNTB0LTM2MiAxNTB0LTE1MCAzNjIKcTAgMTQ1IDgxIDI3NXE2IDkgNjIuNSA5MC41dDEwMSAxNTF0OTkuNSAxNzh0ODMgMjAxLjVxOSAzMCAzNCA0N3Q1MSAxN3Q1MS41IC0xN3QzMy41IC00N3EyOCAtOTMgODMgLTIwMS41dDk5LjUgLTE3OHQxMDEgLTE1MXQ2Mi41IC05MC41cTgxIC0xMjcgODEgLTI3NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZWRpdCIgdW5pY29kZT0iJiN4ZjA0NDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg4OCAzNTJsMTE2IDExNmwtMTUyIDE1MmwtMTE2IC0xMTZ2LTU2aDk2di05Nmg1NnpNMTMyOCAxMDcycS0xNiAxNiAtMzMgLTFsLTM1MCAtMzUwcS0xNyAtMTcgLTEgLTMzdDMzIDFsMzUwIDM1MHExNyAxNyAxIDMzek0xNDA4IDQ3OHYtMTkwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC04MzJxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djgzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoODMyCnE2MyAwIDExNyAtMjVxMTUgLTcgMTggLTIzcTMgLTE3IC05IC0yOWwtNDkgLTQ5cS0xNCAtMTQgLTMyIC04cS0yMyA2IC00NSA2aC04MzJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMnEwIC02NiA0NyAtMTEzdDExMyAtNDdoODMycTY2IDAgMTEzIDQ3dDQ3IDExM3YxMjZxMCAxMyA5IDIybDY0IDY0cTE1IDE1IDM1IDd0MjAgLTI5ek0xMzEyIDEyMTZsMjg4IC0yODhsLTY3MiAtNjcyaC0yODh2Mjg4ek0xNzU2IDEwODRsLTkyIC05MgpsLTI4OCAyODhsOTIgOTJxMjggMjggNjggMjh0NjggLTI4bDE1MiAtMTUycTI4IC0yOCAyOCAtNjh0LTI4IC02OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hhcmUiIHVuaWNvZGU9IiYjeGYwNDU7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNDA4IDU0N3YtMjU5cTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC04MzJxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djgzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoMjU1djBxMTMgMCAyMi41IC05LjV0OS41IC0yMi41cTAgLTI3IC0yNiAtMzJxLTc3IC0yNiAtMTMzIC02MHEtMTAgLTQgLTE2IC00aC0xMTJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMnEwIC02NiA0NyAtMTEzdDExMyAtNDdoODMyCnE2NiAwIDExMyA0N3Q0NyAxMTN2MjE0cTAgMTkgMTggMjlxMjggMTMgNTQgMzdxMTYgMTYgMzUgOHEyMSAtOSAyMSAtMjl6TTE2NDUgMTA0M2wtMzg0IC0zODRxLTE4IC0xOSAtNDUgLTE5cS0xMiAwIC0yNSA1cS0zOSAxNyAtMzkgNTl2MTkyaC0xNjBxLTMyMyAwIC00MzggLTEzMXEtMTE5IC0xMzcgLTc0IC00NzNxMyAtMjMgLTIwIC0zNHEtOCAtMiAtMTIgLTJxLTE2IDAgLTI2IDEzcS0xMCAxNCAtMjEgMzF0LTM5LjUgNjguNXQtNDkuNSA5OS41CnQtMzguNSAxMTR0LTE3LjUgMTIycTAgNDkgMy41IDkxdDE0IDkwdDI4IDg4dDQ3IDgxLjV0NjguNSA3NHQ5NC41IDYxLjV0MTI0LjUgNDguNXQxNTkuNSAzMC41dDE5Ni41IDExaDE2MHYxOTJxMCA0MiAzOSA1OXExMyA1IDI1IDVxMjYgMCA0NSAtMTlsMzg0IC0zODRxMTkgLTE5IDE5IC00NXQtMTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGVjayIgdW5pY29kZT0iJiN4ZjA0NjsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTE0MDggNjA2di0zMThxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg4MzJxNjMgMCAxMTcgLTI1cTE1IC03IDE4IC0yM3EzIC0xNyAtOSAtMjlsLTQ5IC00OXEtMTAgLTEwIC0yMyAtMTBxLTMgMCAtOSAycS0yMyA2IC00NSA2aC04MzJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMgpxMCAtNjYgNDcgLTExM3QxMTMgLTQ3aDgzMnE2NiAwIDExMyA0N3Q0NyAxMTN2MjU0cTAgMTMgOSAyMmw2NCA2NHExMCAxMCAyMyAxMHE2IDAgMTIgLTNxMjAgLTggMjAgLTI5ek0xNjM5IDEwOTVsLTgxNCAtODE0cS0yNCAtMjQgLTU3IC0yNHQtNTcgMjRsLTQzMCA0MzBxLTI0IDI0IC0yNCA1N3QyNCA1N2wxMTAgMTEwcTI0IDI0IDU3IDI0dDU3IC0yNGwyNjMgLTI2M2w2NDcgNjQ3cTI0IDI0IDU3IDI0dDU3IC0yNGwxMTAgLTExMApxMjQgLTI0IDI0IC01N3QtMjQgLTU3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtb3ZlIiB1bmljb2RlPSImI3hmMDQ3OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc5MiA2NDBxMCAtMjYgLTE5IC00NWwtMjU2IC0yNTZxLTE5IC0xOSAtNDUgLTE5dC00NSAxOXQtMTkgNDV2MTI4aC0zODR2LTM4NGgxMjhxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDVsLTI1NiAtMjU2cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTI1NiAyNTZxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWgxMjh2Mzg0aC0zODR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDUKdDE5IDQ1bDI1NiAyNTZxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXYtMTI4aDM4NHYzODRoLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDI1NiAyNTZxMTkgMTkgNDUgMTl0NDUgLTE5bDI1NiAtMjU2cTE5IC0xOSAxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC0xMjh2LTM4NGgzODR2MTI4cTAgMjYgMTkgNDV0NDUgMTl0NDUgLTE5bDI1NiAtMjU2cTE5IC0xOSAxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InN0ZXBfYmFja3dhcmQiIHVuaWNvZGU9IiYjeGYwNDg7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik05NzkgMTM5NXExOSAxOSAzMiAxM3QxMyAtMzJ2LTE0NzJxMCAtMjYgLTEzIC0zMnQtMzIgMTNsLTcxMCA3MTBxLTkgOSAtMTMgMTl2LTY3OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djE0MDhxMCAyNiAxOSA0NXQ0NSAxOWgxMjhxMjYgMCA0NSAtMTl0MTkgLTQ1di02NzhxNCAxMCAxMyAxOXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmFzdF9iYWNrd2FyZCIgdW5pY29kZT0iJiN4ZjA0OTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3NDcgMTM5NXExOSAxOSAzMiAxM3QxMyAtMzJ2LTE0NzJxMCAtMjYgLTEzIC0zMnQtMzIgMTNsLTcxMCA3MTBxLTkgOSAtMTMgMTl2LTcxMHEwIC0yNiAtMTMgLTMydC0zMiAxM2wtNzEwIDcxMHEtOSA5IC0xMyAxOXYtNjc4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTQwOHEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTY3OHE0IDEwIDEzIDE5bDcxMCA3MTAKcTE5IDE5IDMyIDEzdDEzIC0zMnYtNzEwcTQgMTAgMTMgMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImJhY2t3YXJkIiB1bmljb2RlPSImI3hmMDRhOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTYxOSAxMzk1cTE5IDE5IDMyIDEzdDEzIC0zMnYtMTQ3MnEwIC0yNiAtMTMgLTMydC0zMiAxM2wtNzEwIDcxMHEtOSA5IC0xMyAxOXYtNzEwcTAgLTI2IC0xMyAtMzJ0LTMyIDEzbC03MTAgNzEwcS0xOSAxOSAtMTkgNDV0MTkgNDVsNzEwIDcxMHExOSAxOSAzMiAxM3QxMyAtMzJ2LTcxMHE0IDEwIDEzIDE5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5IiB1bmljb2RlPSImI3hmMDRiOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTM4NCA2MDlsLTEzMjggLTczOHEtMjMgLTEzIC0zOS41IC0zdC0xNi41IDM2djE0NzJxMCAyNiAxNi41IDM2dDM5LjUgLTNsMTMyOCAtNzM4cTIzIC0xMyAyMyAtMzF0LTIzIC0zMXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGF1c2UiIHVuaWNvZGU9IiYjeGYwNGM7IiAKZD0iTTE1MzYgMTM0NHYtMTQwOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djE0MDhxMCAyNiAxOSA0NXQ0NSAxOWg1MTJxMjYgMCA0NSAtMTl0MTkgLTQ1ek02NDAgMTM0NHYtMTQwOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djE0MDhxMCAyNiAxOSA0NXQ0NSAxOWg1MTJxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdG9wIiB1bmljb2RlPSImI3hmMDRkOyIgCmQ9Ik0xNTM2IDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTQwOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmb3J3YXJkIiB1bmljb2RlPSImI3hmMDRlOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNNDUgLTExNXEtMTkgLTE5IC0zMiAtMTN0LTEzIDMydjE0NzJxMCAyNiAxMyAzMnQzMiAtMTNsNzEwIC03MTBxOSAtOSAxMyAtMTl2NzEwcTAgMjYgMTMgMzJ0MzIgLTEzbDcxMCAtNzEwcTE5IC0xOSAxOSAtNDV0LTE5IC00NWwtNzEwIC03MTBxLTE5IC0xOSAtMzIgLTEzdC0xMyAzMnY3MTBxLTQgLTEwIC0xMyAtMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhc3RfZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA1MDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTQ1IC0xMTVxLTE5IC0xOSAtMzIgLTEzdC0xMyAzMnYxNDcycTAgMjYgMTMgMzJ0MzIgLTEzbDcxMCAtNzEwcTkgLTkgMTMgLTE5djcxMHEwIDI2IDEzIDMydDMyIC0xM2w3MTAgLTcxMHE5IC05IDEzIC0xOXY2NzhxMCAyNiAxOSA0NXQ0NSAxOWgxMjhxMjYgMCA0NSAtMTl0MTkgLTQ1di0xNDA4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2Njc4cS00IC0xMCAtMTMgLTE5bC03MTAgLTcxMApxLTE5IC0xOSAtMzIgLTEzdC0xMyAzMnY3MTBxLTQgLTEwIC0xMyAtMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InN0ZXBfZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA1MTsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTQ1IC0xMTVxLTE5IC0xOSAtMzIgLTEzdC0xMyAzMnYxNDcycTAgMjYgMTMgMzJ0MzIgLTEzbDcxMCAtNzEwcTkgLTkgMTMgLTE5djY3OHEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY2NzhxLTQgLTEwIC0xMyAtMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImVqZWN0IiB1bmljb2RlPSImI3hmMDUyOyIgaG9yaXotYWR2LXg9IjE1MzgiIApkPSJNMTQgNTU3bDcxMCA3MTBxMTkgMTkgNDUgMTl0NDUgLTE5bDcxMCAtNzEwcTE5IC0xOSAxMyAtMzJ0LTMyIC0xM2gtMTQ3MnEtMjYgMCAtMzIgMTN0MTMgMzJ6TTE0NzMgMGgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGV2cm9uX2xlZnQiIHVuaWNvZGU9IiYjeGYwNTM7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMTcxIDEyMzVsLTUzMSAtNTMxbDUzMSAtNTMxcTE5IC0xOSAxOSAtNDV0LTE5IC00NWwtMTY2IC0xNjZxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNzQyIDc0MnEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDc0MiA3NDJxMTkgMTkgNDUgMTl0NDUgLTE5bDE2NiAtMTY2cTE5IC0xOSAxOSAtNDV0LTE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9yaWdodCIgdW5pY29kZT0iJiN4ZjA1NDsiIGhvcml6LWFkdi14PSIxMjgwIiAKZD0iTTExMDcgNjU5bC03NDIgLTc0MnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0xNjYgMTY2cS0xOSAxOSAtMTkgNDV0MTkgNDVsNTMxIDUzMWwtNTMxIDUzMXEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDE2NiAxNjZxMTkgMTkgNDUgMTl0NDUgLTE5bDc0MiAtNzQycTE5IC0xOSAxOSAtNDV0LTE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGx1c19zaWduIiB1bmljb2RlPSImI3hmMDU1OyIgCmQ9Ik0xMjE2IDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0yNTZ2MjU2cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMjU2aC0yNTZxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgyNTZ2LTI1NnEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1djI1NmgyNTZxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41CnQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtaW51c19zaWduIiB1bmljb2RlPSImI3hmMDU2OyIgCmQ9Ik0xMjE2IDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC03NjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg3NjhxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41CnQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZW1vdmVfc2lnbiIgdW5pY29kZT0iJiN4ZjA1NzsiIApkPSJNMTE0OSA0MTRxMCAyNiAtMTkgNDVsLTE4MSAxODFsMTgxIDE4MXExOSAxOSAxOSA0NXEwIDI3IC0xOSA0NmwtOTAgOTBxLTE5IDE5IC00NiAxOXEtMjYgMCAtNDUgLTE5bC0xODEgLTE4MWwtMTgxIDE4MXEtMTkgMTkgLTQ1IDE5cS0yNyAwIC00NiAtMTlsLTkwIC05MHEtMTkgLTE5IC0xOSAtNDZxMCAtMjYgMTkgLTQ1bDE4MSAtMTgxbC0xODEgLTE4MXEtMTkgLTE5IC0xOSAtNDVxMCAtMjcgMTkgLTQ2bDkwIC05MHExOSAtMTkgNDYgLTE5CnEyNiAwIDQ1IDE5bDE4MSAxODFsMTgxIC0xODFxMTkgLTE5IDQ1IC0xOXEyNyAwIDQ2IDE5bDkwIDkwcTE5IDE5IDE5IDQ2ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ib2tfc2lnbiIgdW5pY29kZT0iJiN4ZjA1ODsiIApkPSJNMTI4NCA4MDJxMCAyOCAtMTggNDZsLTkxIDkwcS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtNDA4IC00MDdsLTIyNiAyMjZxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC05MSAtOTBxLTE4IC0xOCAtMTggLTQ2cTAgLTI3IDE4IC00NWwzNjIgLTM2MnExOSAtMTkgNDUgLTE5cTI3IDAgNDYgMTlsNTQzIDU0M3ExOCAxOCAxOCA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwMwp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxdWVzdGlvbl9zaWduIiB1bmljb2RlPSImI3hmMDU5OyIgCmQ9Ik04OTYgMTYwdjE5MnEwIDE0IC05IDIzdC0yMyA5aC0xOTJxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3pNMTE1MiA4MzJxMCA4OCAtNTUuNSAxNjN0LTEzOC41IDExNnQtMTcwIDQxcS0yNDMgMCAtMzcxIC0yMTNxLTE1IC0yNCA4IC00MmwxMzIgLTEwMHE3IC02IDE5IC02cTE2IDAgMjUgMTJxNTMgNjggODYgOTJxMzQgMjQgODYgMjRxNDggMCA4NS41IC0yNnQzNy41IC01OQpxMCAtMzggLTIwIC02MXQtNjggLTQ1cS02MyAtMjggLTExNS41IC04Ni41dC01Mi41IC0xMjUuNXYtMzZxMCAtMTQgOSAtMjN0MjMgLTloMTkycTE0IDAgMjMgOXQ5IDIzcTAgMTkgMjEuNSA0OS41dDU0LjUgNDkuNXEzMiAxOCA0OSAyOC41dDQ2IDM1dDQ0LjUgNDh0MjggNjAuNXQxMi41IDgxek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNQp0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZm9fc2lnbiIgdW5pY29kZT0iJiN4ZjA1YTsiIApkPSJNMTAyNCAxNjB2MTYwcTAgMTQgLTkgMjN0LTIzIDloLTk2djUxMnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTYwcTAgLTE0IDkgLTIzdDIzIC05aDk2di0zMjBoLTk2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE2MHEwIC0xNCA5IC0yM3QyMyAtOWg0NDhxMTQgMCAyMyA5dDkgMjN6TTg5NiAxMDU2djE2MHEwIDE0IC05IDIzdC0yMyA5aC0xOTJxLTE0IDAgLTIzIC05dC05IC0yM3YtMTYwcTAgLTE0IDkgLTIzCnQyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzY3JlZW5zaG90IiB1bmljb2RlPSImI3hmMDViOyIgCmQ9Ik0xMTk3IDUxMmgtMTA5cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTA5cS0zMiAxMDggLTExMi41IDE4OC41dC0xODguNSAxMTIuNXYtMTA5cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTA5cS0xMDggLTMyIC0xODguNSAtMTEyLjV0LTExMi41IC0xODguNWgxMDlxMjYgMCA0NSAtMTl0MTkgLTQ1di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMDkKcTMyIC0xMDggMTEyLjUgLTE4OC41dDE4OC41IC0xMTIuNXYxMDlxMCAyNiAxOSA0NXQ0NSAxOWgxMjhxMjYgMCA0NSAtMTl0MTkgLTQ1di0xMDlxMTA4IDMyIDE4OC41IDExMi41dDExMi41IDE4OC41ek0xNTM2IDcwNHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTQzcS0zNyAtMTYxIC0xNTQuNSAtMjc4LjV0LTI3OC41IC0xNTQuNXYtMTQzcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTQzCnEtMTYxIDM3IC0yNzguNSAxNTQuNXQtMTU0LjUgMjc4LjVoLTE0M3EtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0M3EzNyAxNjEgMTU0LjUgMjc4LjV0Mjc4LjUgMTU0LjV2MTQzcTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtMTQzcTE2MSAtMzcgMjc4LjUgLTE1NC41dDE1NC41IC0yNzguNWgxNDNxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZW1vdmVfY2lyY2xlIiB1bmljb2RlPSImI3hmMDVjOyIgCmQ9Ik0xMDk3IDQ1N2wtMTQ2IC0xNDZxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTM3IDEzN2wtMTM3IC0xMzdxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTQ2IDE0NnEtMTAgMTAgLTEwIDIzdDEwIDIzbDEzNyAxMzdsLTEzNyAxMzdxLTEwIDEwIC0xMCAyM3QxMCAyM2wxNDYgMTQ2cTEwIDEwIDIzIDEwdDIzIC0xMGwxMzcgLTEzN2wxMzcgMTM3cTEwIDEwIDIzIDEwdDIzIC0xMGwxNDYgLTE0NnExMCAtMTAgMTAgLTIzdC0xMCAtMjMKbC0xMzcgLTEzN2wxMzcgLTEzN3ExMCAtMTAgMTAgLTIzdC0xMCAtMjN6TTEzMTIgNjQwcTAgMTQ4IC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3QtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNQp0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJva19jaXJjbGUiIHVuaWNvZGU9IiYjeGYwNWQ7IiAKZD0iTTExNzEgNzIzbC00MjIgLTQyMnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0yOTQgMjk0cS0xOSAxOSAtMTkgNDV0MTkgNDVsMTAyIDEwMnExOSAxOSA0NSAxOXQ0NSAtMTlsMTQ3IC0xNDdsMjc1IDI3NXExOSAxOSA0NSAxOXQ0NSAtMTlsMTAyIC0xMDJxMTkgLTE5IDE5IC00NXQtMTkgLTQ1ek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTgKdDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmFuX2NpcmNsZSIgdW5pY29kZT0iJiN4ZjA1ZTsiIApkPSJNMTMxMiA2NDNxMCAxNjEgLTg3IDI5NWwtNzU0IC03NTNxMTM3IC04OSAyOTcgLTg5cTExMSAwIDIxMS41IDQzLjV0MTczLjUgMTE2LjV0MTE2IDE3NC41dDQzIDIxMi41ek0zMTMgMzQ0bDc1NSA3NTRxLTEzNSA5MSAtMzAwIDkxcS0xNDggMCAtMjczIC03M3QtMTk4IC0xOTl0LTczIC0yNzRxMCAtMTYyIDg5IC0yOTl6TTE1MzYgNjQzcTAgLTE1NyAtNjEgLTMwMHQtMTYzLjUgLTI0NnQtMjQ1IC0xNjR0LTI5OC41IC02MXQtMjk4LjUgNjEKdC0yNDUgMTY0dC0xNjMuNSAyNDZ0LTYxIDMwMHQ2MSAyOTkuNXQxNjMuNSAyNDUuNXQyNDUgMTY0dDI5OC41IDYxdDI5OC41IC02MXQyNDUgLTE2NHQxNjMuNSAtMjQ1LjV0NjEgLTI5OS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvd19sZWZ0IiB1bmljb2RlPSImI3hmMDYwOyIgCmQ9Ik0xNTM2IDY0MHYtMTI4cTAgLTUzIC0zMi41IC05MC41dC04NC41IC0zNy41aC03MDRsMjkzIC0yOTRxMzggLTM2IDM4IC05MHQtMzggLTkwbC03NSAtNzZxLTM3IC0zNyAtOTAgLTM3cS01MiAwIC05MSAzN2wtNjUxIDY1MnEtMzcgMzcgLTM3IDkwcTAgNTIgMzcgOTFsNjUxIDY1MHEzOCAzOCA5MSAzOHE1MiAwIDkwIC0zOGw3NSAtNzRxMzggLTM4IDM4IC05MXQtMzggLTkxbC0yOTMgLTI5M2g3MDRxNTIgMCA4NC41IC0zNy41CnQzMi41IC05MC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvd19yaWdodCIgdW5pY29kZT0iJiN4ZjA2MTsiIApkPSJNMTQ3MiA1NzZxMCAtNTQgLTM3IC05MWwtNjUxIC02NTFxLTM5IC0zNyAtOTEgLTM3cS01MSAwIC05MCAzN2wtNzUgNzVxLTM4IDM4IC0zOCA5MXQzOCA5MWwyOTMgMjkzaC03MDRxLTUyIDAgLTg0LjUgMzcuNXQtMzIuNSA5MC41djEyOHEwIDUzIDMyLjUgOTAuNXQ4NC41IDM3LjVoNzA0bC0yOTMgMjk0cS0zOCAzNiAtMzggOTB0MzggOTBsNzUgNzVxMzggMzggOTAgMzhxNTMgMCA5MSAtMzhsNjUxIC02NTFxMzcgLTM1IDM3IC05MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3dfdXAiIHVuaWNvZGU9IiYjeGYwNjI7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNjExIDU2NXEwIC01MSAtMzcgLTkwbC03NSAtNzVxLTM4IC0zOCAtOTEgLTM4cS01NCAwIC05MCAzOGwtMjk0IDI5M3YtNzA0cTAgLTUyIC0zNy41IC04NC41dC05MC41IC0zMi41aC0xMjhxLTUzIDAgLTkwLjUgMzIuNXQtMzcuNSA4NC41djcwNGwtMjk0IC0yOTNxLTM2IC0zOCAtOTAgLTM4dC05MCAzOGwtNzUgNzVxLTM4IDM4IC0zOCA5MHEwIDUzIDM4IDkxbDY1MSA2NTFxMzUgMzcgOTAgMzdxNTQgMCA5MSAtMzdsNjUxIC02NTEKcTM3IC0zOSAzNyAtOTF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFycm93X2Rvd24iIHVuaWNvZGU9IiYjeGYwNjM7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNjExIDcwNHEwIC01MyAtMzcgLTkwbC02NTEgLTY1MnEtMzkgLTM3IC05MSAtMzdxLTUzIDAgLTkwIDM3bC02NTEgNjUycS0zOCAzNiAtMzggOTBxMCA1MyAzOCA5MWw3NCA3NXEzOSAzNyA5MSAzN3E1MyAwIDkwIC0zN2wyOTQgLTI5NHY3MDRxMCA1MiAzOCA5MHQ5MCAzOGgxMjhxNTIgMCA5MCAtMzh0MzggLTkwdi03MDRsMjk0IDI5NHEzNyAzNyA5MCAzN3E1MiAwIDkxIC0zN2w3NSAtNzVxMzcgLTM5IDM3IC05MXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hhcmVfYWx0IiB1bmljb2RlPSImI3hmMDY0OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc5MiA4OTZxMCAtMjYgLTE5IC00NWwtNTEyIC01MTJxLTE5IC0xOSAtNDUgLTE5dC00NSAxOXQtMTkgNDV2MjU2aC0yMjRxLTk4IDAgLTE3NS41IC02dC0xNTQgLTIxLjV0LTEzMyAtNDIuNXQtMTA1LjUgLTY5LjV0LTgwIC0xMDF0LTQ4LjUgLTEzOC41dC0xNy41IC0xODFxMCAtNTUgNSAtMTIzcTAgLTYgMi41IC0yMy41dDIuNSAtMjYuNXEwIC0xNSAtOC41IC0yNXQtMjMuNSAtMTBxLTE2IDAgLTI4IDE3cS03IDkgLTEzIDIyCnQtMTMuNSAzMHQtMTAuNSAyNHEtMTI3IDI4NSAtMTI3IDQ1MXEwIDE5OSA1MyAzMzNxMTYyIDQwMyA4NzUgNDAzaDIyNHYyNTZxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsNTEyIC01MTJxMTkgLTE5IDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVzaXplX2Z1bGwiIHVuaWNvZGU9IiYjeGYwNjU7IiAKZD0iTTc1NSA0ODBxMCAtMTMgLTEwIC0yM2wtMzMyIC0zMzJsMTQ0IC0xNDRxMTkgLTE5IDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTQ0OHEtMjYgMCAtNDUgMTl0LTE5IDQ1djQ0OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWwxNDQgLTE0NGwzMzIgMzMycTEwIDEwIDIzIDEwdDIzIC0xMGwxMTQgLTExNHExMCAtMTAgMTAgLTIzek0xNTM2IDEzNDR2LTQ0OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5bC0xNDQgMTQ0bC0zMzIgLTMzMgpxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTE0IDExNHEtMTAgMTAgLTEwIDIzdDEwIDIzbDMzMiAzMzJsLTE0NCAxNDRxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWg0NDhxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXNpemVfc21hbGwiIHVuaWNvZGU9IiYjeGYwNjY7IiAKZD0iTTc2OCA1NzZ2LTQ0OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5bC0xNDQgMTQ0bC0zMzIgLTMzMnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xMTQgMTE0cS0xMCAxMCAtMTAgMjN0MTAgMjNsMzMyIDMzMmwtMTQ0IDE0NHEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDQ0OHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE1MjMgMTI0OHEwIC0xMyAtMTAgLTIzbC0zMzIgLTMzMmwxNDQgLTE0NHExOSAtMTkgMTkgLTQ1dC0xOSAtNDUKdC00NSAtMTloLTQ0OHEtMjYgMCAtNDUgMTl0LTE5IDQ1djQ0OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWwxNDQgLTE0NGwzMzIgMzMycTEwIDEwIDIzIDEwdDIzIC0xMGwxMTQgLTExNHExMCAtMTAgMTAgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbHVzIiB1bmljb2RlPSImI3hmMDY3OyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTQwOCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTQxNnYtNDE2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTkycS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGg0MTZ2NDE2cTAgNDAgMjggNjh0NjggMjhoMTkycTQwIDAgNjggLTI4dDI4IC02OHYtNDE2aDQxNnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im1pbnVzIiB1bmljb2RlPSImI3hmMDY4OyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTQwOCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEyMTZxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgxMjE2cTQwIDAgNjggLTI4dDI4IC02OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYXN0ZXJpc2siIHVuaWNvZGU9IiYjeGYwNjk7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNDgyIDQ4NnE0NiAtMjYgNTkuNSAtNzcuNXQtMTIuNSAtOTcuNWwtNjQgLTExMHEtMjYgLTQ2IC03Ny41IC01OS41dC05Ny41IDEyLjVsLTI2NiAxNTN2LTMwN3EwIC01MiAtMzggLTkwdC05MCAtMzhoLTEyOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjMwN2wtMjY2IC0xNTNxLTQ2IC0yNiAtOTcuNSAtMTIuNXQtNzcuNSA1OS41bC02NCAxMTBxLTI2IDQ2IC0xMi41IDk3LjV0NTkuNSA3Ny41bDI2NiAxNTRsLTI2NiAxNTQKcS00NiAyNiAtNTkuNSA3Ny41dDEyLjUgOTcuNWw2NCAxMTBxMjYgNDYgNzcuNSA1OS41dDk3LjUgLTEyLjVsMjY2IC0xNTN2MzA3cTAgNTIgMzggOTB0OTAgMzhoMTI4cTUyIDAgOTAgLTM4dDM4IC05MHYtMzA3bDI2NiAxNTNxNDYgMjYgOTcuNSAxMi41dDc3LjUgLTU5LjVsNjQgLTExMHEyNiAtNDYgMTIuNSAtOTcuNXQtNTkuNSAtNzcuNWwtMjY2IC0xNTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImV4Y2xhbWF0aW9uX3NpZ24iIHVuaWNvZGU9IiYjeGYwNmE7IiAKZD0iTTc2OCAxNDA4cTIwOSAwIDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV0LTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN6TTg5NiAxNjF2MTkwcTAgMTQgLTkgMjMuNXQtMjIgOS41aC0xOTJxLTEzIDAgLTIzIC0xMHQtMTAgLTIzdi0xOTBxMCAtMTMgMTAgLTIzdDIzIC0xMGgxOTIKcTEzIDAgMjIgOS41dDkgMjMuNXpNODk0IDUwNWwxOCA2MjFxMCAxMiAtMTAgMThxLTEwIDggLTI0IDhoLTIyMHEtMTQgMCAtMjQgLThxLTEwIC02IC0xMCAtMThsMTcgLTYyMXEwIC0xMCAxMCAtMTcuNXQyNCAtNy41aDE4NXExNCAwIDIzLjUgNy41dDEwLjUgMTcuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2lmdCIgdW5pY29kZT0iJiN4ZjA2YjsiIApkPSJNOTI4IDE4MHY1NnY0Njh2MTkyaC0zMjB2LTE5MnYtNDY4di01NnEwIC0yNSAxOCAtMzguNXQ0NiAtMTMuNWgxOTJxMjggMCA0NiAxMy41dDE4IDM4LjV6TTQ3MiAxMDI0aDE5NWwtMTI2IDE2MXEtMjYgMzEgLTY5IDMxcS00MCAwIC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4ek0xMTYwIDExMjBxMCA0MCAtMjggNjh0LTY4IDI4cS00MyAwIC02OSAtMzFsLTEyNSAtMTYxaDE5NHE0MCAwIDY4IDI4dDI4IDY4ek0xNTM2IDg2NHYtMzIwCnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtNDE2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTA4OHEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtOTZxLTE0IDAgLTIzIDl0LTkgMjN2MzIwcTAgMTQgOSAyM3QyMyA5aDQ0MHEtOTMgMCAtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjVxMTA3IDAgMTY4IC03N2wxMjggLTE2NWwxMjggMTY1cTYxIDc3IDE2OCA3N3E5MyAwIDE1OC41IC02NS41dDY1LjUgLTE1OC41CnQtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41aDQ0MHExNCAwIDIzIC05dDkgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsZWFmIiB1bmljb2RlPSImI3hmMDZjOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5cS0xNzIgMCAtMzE4IC00OS41dC0yNTkuNSAtMTM0dC0yMzUuNSAtMjE5LjVxLTE5IC0yMSAtMTkgLTQ1cTAgLTI2IDE5IC00NXQ0NSAtMTlxMjQgMCA0NSAxOXEyNyAyNCA3NCA3MXQ2NyA2NnExMzcgMTI0IDI2OC41IDE3NnQzMTMuNSA1MnEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIDEwMzBxMCAtOTUgLTIwIC0xOTNxLTQ2IC0yMjQgLTE4NC41IC0zODN0LTM1Ny41IC0yNjgKcS0yMTQgLTEwOCAtNDM4IC0xMDhxLTE0OCAwIC0yODYgNDdxLTE1IDUgLTg4IDQydC05NiAzN3EtMTYgMCAtMzkuNSAtMzJ0LTQ1IC03MHQtNTIuNSAtNzB0LTYwIC0zMnEtNDMgMCAtNjMuNSAxNy41dC00NS41IDU5LjVxLTIgNCAtNiAxMXQtNS41IDEwdC0zIDkuNXQtMS41IDEzLjVxMCAzNSAzMSA3My41dDY4IDY1LjV0NjggNTZ0MzEgNDhxMCA0IC0xNCAzOHQtMTYgNDRxLTkgNTEgLTkgMTA0cTAgMTE1IDQzLjUgMjIwdDExOSAxODQuNQp0MTcwLjUgMTM5dDIwNCA5NS41cTU1IDE4IDE0NSAyNS41dDE3OS41IDl0MTc4LjUgNnQxNjMuNSAyNHQxMTMuNSA1Ni41bDI5LjUgMjkuNXQyOS41IDI4dDI3IDIwdDM2LjUgMTZ0NDMuNSA0LjVxMzkgMCA3MC41IC00NnQ0Ny41IC0xMTJ0MjQgLTEyNHQ4IC05NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlyZSIgdW5pY29kZT0iJiN4ZjA2ZDsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTE0MDggLTE2MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzQ0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTE1MiA4OTZxMCAtNzggLTI0LjUgLTE0NHQtNjQgLTExMi41dC04Ny41IC04OHQtOTYgLTc3LjV0LTg3LjUgLTcydC02NCAtODEuNXQtMjQuNSAtOTYuNXEwIC05NiA2NyAtMjI0bC00IDFsMSAtMQpxLTkwIDQxIC0xNjAgODN0LTEzOC41IDEwMHQtMTEzLjUgMTIyLjV0LTcyLjUgMTUwLjV0LTI3LjUgMTg0cTAgNzggMjQuNSAxNDR0NjQgMTEyLjV0ODcuNSA4OHQ5NiA3Ny41dDg3LjUgNzJ0NjQgODEuNXQyNC41IDk2LjVxMCA5NCAtNjYgMjI0bDMgLTFsLTEgMXE5MCAtNDEgMTYwIC04M3QxMzguNSAtMTAwdDExMy41IC0xMjIuNXQ3Mi41IC0xNTAuNXQyNy41IC0xODR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImV5ZV9vcGVuIiB1bmljb2RlPSImI3hmMDZlOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTY2NCA1NzZxLTE1MiAyMzYgLTM4MSAzNTNxNjEgLTEwNCA2MSAtMjI1cTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDEyMSA2MSAyMjVxLTIyOSAtMTE3IC0zODEgLTM1M3ExMzMgLTIwNSAzMzMuNSAtMzI2LjV0NDM0LjUgLTEyMS41dDQzNC41IDEyMS41dDMzMy41IDMyNi41ek05NDQgOTYwcTAgMjAgLTE0IDM0dC0zNCAxNHEtMTI1IDAgLTIxNC41IC04OS41CnQtODkuNSAtMjE0LjVxMCAtMjAgMTQgLTM0dDM0IC0xNHQzNCAxNHQxNCAzNHEwIDg2IDYxIDE0N3QxNDcgNjFxMjAgMCAzNCAxNHQxNCAzNHpNMTc5MiA1NzZxMCAtMzQgLTIwIC02OXEtMTQwIC0yMzAgLTM3Ni41IC0zNjguNXQtNDk5LjUgLTEzOC41dC00OTkuNSAxMzl0LTM3Ni41IDM2OHEtMjAgMzUgLTIwIDY5dDIwIDY5cTE0MCAyMjkgMzc2LjUgMzY4dDQ5OS41IDEzOXQ0OTkuNSAtMTM5dDM3Ni41IC0zNjhxMjAgLTM1IDIwIC02OXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXllX2Nsb3NlIiB1bmljb2RlPSImI3hmMDcwOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNTU1IDIwMWw3OCAxNDFxLTg3IDYzIC0xMzYgMTU5dC00OSAyMDNxMCAxMjEgNjEgMjI1cS0yMjkgLTExNyAtMzgxIC0zNTNxMTY3IC0yNTggNDI3IC0zNzV6TTk0NCA5NjBxMCAyMCAtMTQgMzR0LTM0IDE0cS0xMjUgMCAtMjE0LjUgLTg5LjV0LTg5LjUgLTIxNC41cTAgLTIwIDE0IC0zNHQzNCAtMTR0MzQgMTR0MTQgMzRxMCA4NiA2MSAxNDd0MTQ3IDYxcTIwIDAgMzQgMTR0MTQgMzR6TTEzMDcgMTE1MXEwIC03IC0xIC05CnEtMTA2IC0xODkgLTMxNiAtNTY3dC0zMTUgLTU2NmwtNDkgLTg5cS0xMCAtMTYgLTI4IC0xNnEtMTIgMCAtMTM0IDcwcS0xNiAxMCAtMTYgMjhxMCAxMiA0NCA4N3EtMTQzIDY1IC0yNjMuNSAxNzN0LTIwOC41IDI0NXEtMjAgMzEgLTIwIDY5dDIwIDY5cTE1MyAyMzUgMzgwIDM3MXQ0OTYgMTM2cTg5IDAgMTgwIC0xN2w1NCA5N3ExMCAxNiAyOCAxNnE1IDAgMTggLTZ0MzEgLTE1LjV0MzMgLTE4LjV0MzEuNSAtMTguNXQxOS41IC0xMS41CnExNiAtMTAgMTYgLTI3ek0xMzQ0IDcwNHEwIC0xMzkgLTc5IC0yNTMuNXQtMjA5IC0xNjQuNWwyODAgNTAycTggLTQ1IDggLTg0ek0xNzkyIDU3NnEwIC0zNSAtMjAgLTY5cS0zOSAtNjQgLTEwOSAtMTQ1cS0xNTAgLTE3MiAtMzQ3LjUgLTI2N3QtNDE5LjUgLTk1bDc0IDEzMnEyMTIgMTggMzkyLjUgMTM3dDMwMS41IDMwN3EtMTE1IDE3OSAtMjgyIDI5NGw2MyAxMTJxOTUgLTY0IDE4Mi41IC0xNTN0MTQ0LjUgLTE4NHEyMCAtMzQgMjAgLTY5egoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0id2FybmluZ19zaWduIiB1bmljb2RlPSImI3hmMDcxOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTAyNCAxNjF2MTkwcTAgMTQgLTkuNSAyMy41dC0yMi41IDkuNWgtMTkycS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjMuNXYtMTkwcTAgLTE0IDkuNSAtMjMuNXQyMi41IC05LjVoMTkycTEzIDAgMjIuNSA5LjV0OS41IDIzLjV6TTEwMjIgNTM1bDE4IDQ1OXEwIDEyIC0xMCAxOXEtMTMgMTEgLTI0IDExaC0yMjBxLTExIDAgLTI0IC0xMXEtMTAgLTcgLTEwIC0yMWwxNyAtNDU3cTAgLTEwIDEwIC0xNi41dDI0IC02LjVoMTg1CnExNCAwIDIzLjUgNi41dDEwLjUgMTYuNXpNMTAwOCAxNDY5bDc2OCAtMTQwOHEzNSAtNjMgLTIgLTEyNnEtMTcgLTI5IC00Ni41IC00NnQtNjMuNSAtMTdoLTE1MzZxLTM0IDAgLTYzLjUgMTd0LTQ2LjUgNDZxLTM3IDYzIC0yIDEyNmw3NjggMTQwOHExNyAzMSA0NyA0OXQ2NSAxOHQ2NSAtMTh0NDcgLTQ5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbGFuZSIgdW5pY29kZT0iJiN4ZjA3MjsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTEzNzYgMTM3NnE0NCAtNTIgMTIgLTE0OHQtMTA4IC0xNzJsLTE2MSAtMTYxbDE2MCAtNjk2cTUgLTE5IC0xMiAtMzNsLTEyOCAtOTZxLTcgLTYgLTE5IC02cS00IDAgLTcgMXEtMTUgMyAtMjEgMTZsLTI3OSA1MDhsLTI1OSAtMjU5bDUzIC0xOTRxNSAtMTcgLTggLTMxbC05NiAtOTZxLTkgLTkgLTIzIC05aC0ycS0xNSAyIC0yNCAxM2wtMTg5IDI1MmwtMjUyIDE4OXEtMTEgNyAtMTMgMjNxLTEgMTMgOSAyNWw5NiA5N3E5IDkgMjMgOQpxNiAwIDggLTFsMTk0IC01M2wyNTkgMjU5bC01MDggMjc5cS0xNCA4IC0xNyAyNHEtMiAxNiA5IDI3bDEyOCAxMjhxMTQgMTMgMzAgOGw2NjUgLTE1OWwxNjAgMTYwcTc2IDc2IDE3MiAxMDh0MTQ4IC0xMnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2FsZW5kYXIiIHVuaWNvZGU9IiYjeGYwNzM7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xMjggLTEyOGgyODh2Mjg4aC0yODh2LTI4OHpNNDgwIC0xMjhoMzIwdjI4OGgtMzIwdi0yODh6TTEyOCAyMjRoMjg4djMyMGgtMjg4di0zMjB6TTQ4MCAyMjRoMzIwdjMyMGgtMzIwdi0zMjB6TTEyOCA2MDhoMjg4djI4OGgtMjg4di0yODh6TTg2NCAtMTI4aDMyMHYyODhoLTMyMHYtMjg4ek00ODAgNjA4aDMyMHYyODhoLTMyMHYtMjg4ek0xMjQ4IC0xMjhoMjg4djI4OGgtMjg4di0yODh6TTg2NCAyMjRoMzIwdjMyMGgtMzIwdi0zMjB6Ck01MTIgMTA4OHYyODhxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC02NHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTI4OHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDY0cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTEyNDggMjI0aDI4OHYzMjBoLTI4OHYtMzIwek04NjQgNjA4aDMyMHYyODhoLTMyMHYtMjg4ek0xMjQ4IDYwOGgyODh2Mjg4aC0yODh2LTI4OHpNMTI4MCAxMDg4djI4OHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTY0CnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTI4OHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDY0cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTE2NjQgMTE1MnYtMTI4MHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTE0MDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxMjgwcTAgNTIgMzggOTB0OTAgMzhoMTI4djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDd0NDcgLTExM3YtOTZoMzg0djk2cTAgNjYgNDcgMTEzdDExMyA0NwpoNjRxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InJhbmRvbSIgdW5pY29kZT0iJiN4ZjA3NDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTY2NiAxMDU1cS02MCAtOTIgLTEzNyAtMjczcS0yMiA0NSAtMzcgNzIuNXQtNDAuNSA2My41dC01MSA1Ni41dC02MyAzNXQtODEuNSAxNC41aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDIyNHEyNTAgMCA0MTAgLTIyNXpNMTc5MiAyNTZxMCAtMTQgLTkgLTIzbC0zMjAgLTMyMHEtOSAtOSAtMjMgLTlxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxLTMyIDAgLTg1IC0wLjV0LTgxIC0xdC03MyAxCnQtNzEgNXQtNjQgMTAuNXQtNjMgMTguNXQtNTggMjguNXQtNTkgNDB0LTU1IDUzLjV0LTU2IDY5LjVxNTkgOTMgMTM2IDI3M3EyMiAtNDUgMzcgLTcyLjV0NDAuNSAtNjMuNXQ1MSAtNTYuNXQ2MyAtMzV0ODEuNSAtMTQuNWgyNTZ2MTkycTAgMTQgOSAyM3QyMyA5cTEyIDAgMjQgLTEwbDMxOSAtMzE5cTkgLTkgOSAtMjN6TTE3OTIgMTE1MnEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41CnYxOTJoLTI1NnEtNDggMCAtODcgLTE1dC02OSAtNDV0LTUxIC02MS41dC00NSAtNzcuNXEtMzIgLTYyIC03OCAtMTcxcS0yOSAtNjYgLTQ5LjUgLTExMXQtNTQgLTEwNXQtNjQgLTEwMHQtNzQgLTgzdC05MCAtNjguNXQtMTA2LjUgLTQydC0xMjggLTE2LjVoLTIyNHEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMjI0cTQ4IDAgODcgMTV0NjkgNDV0NTEgNjEuNXQ0NSA3Ny41cTMyIDYyIDc4IDE3MXEyOSA2NiA0OS41IDExMQp0NTQgMTA1dDY0IDEwMHQ3NCA4M3Q5MCA2OC41dDEwNi41IDQydDEyOCAxNi41aDI1NnYxOTJxMCAxNCA5IDIzdDIzIDlxMTIgMCAyNCAtMTBsMzE5IC0zMTlxOSAtOSA5IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudCIgdW5pY29kZT0iJiN4ZjA3NTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgNjQwcTAgLTE3NCAtMTIwIC0zMjEuNXQtMzI2IC0yMzN0LTQ1MCAtODUuNXEtNzAgMCAtMTQ1IDhxLTE5OCAtMTc1IC00NjAgLTI0MnEtNDkgLTE0IC0xMTQgLTIycS0xNyAtMiAtMzAuNSA5dC0xNy41IDI5djFxLTMgNCAtMC41IDEydDIgMTB0NC41IDkuNWw2IDl0NyA4LjV0OCA5cTcgOCAzMSAzNC41dDM0LjUgMzh0MzEgMzkuNXQzMi41IDUxdDI3IDU5dDI2IDc2cS0xNTcgODkgLTI0Ny41IDIyMHQtOTAuNSAyODEKcTAgMTMwIDcxIDI0OC41dDE5MSAyMDQuNXQyODYgMTM2LjV0MzQ4IDUwLjVxMjQ0IDAgNDUwIC04NS41dDMyNiAtMjMzdDEyMCAtMzIxLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im1hZ25ldCIgdW5pY29kZT0iJiN4ZjA3NjsiIApkPSJNMTUzNiA3MDR2LTEyOHEwIC0yMDEgLTk4LjUgLTM2MnQtMjc0IC0yNTEuNXQtMzk1LjUgLTkwLjV0LTM5NS41IDkwLjV0LTI3NCAyNTEuNXQtOTguNSAzNjJ2MTI4cTAgMjYgMTkgNDV0NDUgMTloMzg0cTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTUyIDIzLjUgLTkwdDUzLjUgLTU3dDcxIC0zMHQ2NCAtMTN0NDQgLTJ0NDQgMnQ2NCAxM3Q3MSAzMHQ1My41IDU3dDIzLjUgOTB2MTI4cTAgMjYgMTkgNDV0NDUgMTloMzg0CnEyNiAwIDQ1IC0xOXQxOSAtNDV6TTUxMiAxMzQ0di0zODRxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0zODRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYzODRxMCAyNiAxOSA0NXQ0NSAxOWgzODRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNTM2IDEzNDR2LTM4NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTM4NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NHEwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fdXAiIHVuaWNvZGU9IiYjeGYwNzc7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNjgzIDIwNWwtMTY2IC0xNjVxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNTMxIDUzMWwtNTMxIC01MzFxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtMTY2IDE2NXEtMTkgMTkgLTE5IDQ1LjV0MTkgNDUuNWw3NDIgNzQxcTE5IDE5IDQ1IDE5dDQ1IC0xOWw3NDIgLTc0MXExOSAtMTkgMTkgLTQ1LjV0LTE5IC00NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGV2cm9uX2Rvd24iIHVuaWNvZGU9IiYjeGYwNzg7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNjgzIDcyOGwtNzQyIC03NDFxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNzQyIDc0MXEtMTkgMTkgLTE5IDQ1LjV0MTkgNDUuNWwxNjYgMTY1cTE5IDE5IDQ1IDE5dDQ1IC0xOWw1MzEgLTUzMWw1MzEgNTMxcTE5IDE5IDQ1IDE5dDQ1IC0xOWwxNjYgLTE2NXExOSAtMTkgMTkgLTQ1LjV0LTE5IC00NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXR3ZWV0IiB1bmljb2RlPSImI3hmMDc5OyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNMTI4MCAzMnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTk2MHEtOCAwIC0xMy41IDJ0LTkgN3QtNS41IDh0LTMgMTEuNXQtMSAxMS41djEzdjExdjE2MHY0MTZoLTE5MnEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMjQgMTUgNDFsMzIwIDM4NHExOSAyMiA0OSAyMnQ0OSAtMjJsMzIwIC0zODRxMTUgLTE3IDE1IC00MXEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE5MnYtMzg0aDU3NnExNiAwIDI1IC0xMWwxNjAgLTE5MnE3IC0xMCA3IC0yMQp6TTE5MjAgNDQ4cTAgLTI0IC0xNSAtNDFsLTMyMCAtMzg0cS0yMCAtMjMgLTQ5IC0yM3QtNDkgMjNsLTMyMCAzODRxLTE1IDE3IC0xNSA0MXEwIDI2IDE5IDQ1dDQ1IDE5aDE5MnYzODRoLTU3NnEtMTYgMCAtMjUgMTJsLTE2MCAxOTJxLTcgOSAtNyAyMHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk2MHE4IDAgMTMuNSAtMnQ5IC03dDUuNSAtOHQzIC0xMS41dDEgLTExLjV2LTEzdi0xMXYtMTYwdi00MTZoMTkycTI2IDAgNDUgLTE5dDE5IC00NXoKIiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNob3BwaW5nX2NhcnQiIHVuaWNvZGU9IiYjeGYwN2E7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik02NDAgMHEwIC01MiAtMzggLTkwdC05MCAtMzh0LTkwIDM4dC0zOCA5MHQzOCA5MHQ5MCAzOHQ5MCAtMzh0MzggLTkwek0xNTM2IDBxMCAtNTIgLTM4IC05MHQtOTAgLTM4dC05MCAzOHQtMzggOTB0MzggOTB0OTAgMzh0OTAgLTM4dDM4IC05MHpNMTY2NCAxMDg4di01MTJxMCAtMjQgLTE2LjUgLTQyLjV0LTQwLjUgLTIxLjVsLTEwNDQgLTEyMnExMyAtNjAgMTMgLTcwcTAgLTE2IC0yNCAtNjRoOTIwcTI2IDAgNDUgLTE5dDE5IC00NQp0LTE5IC00NXQtNDUgLTE5aC0xMDI0cS0yNiAwIC00NSAxOXQtMTkgNDVxMCAxMSA4IDMxLjV0MTYgMzZ0MjEuNSA0MHQxNS41IDI5LjVsLTE3NyA4MjNoLTIwNHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDI1NnExNiAwIDI4LjUgLTYuNXQxOS41IC0xNS41dDEzIC0yNC41dDggLTI2dDUuNSAtMjkuNXQ0LjUgLTI2aDEyMDFxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmb2xkZXJfY2xvc2UiIHVuaWNvZGU9IiYjeGYwN2I7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNjY0IDkyOHYtNzA0cTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC0xMjE2cS05MiAwIC0xNTggNjZ0LTY2IDE1OHY5NjBxMCA5MiA2NiAxNTh0MTU4IDY2aDMyMHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNjcycTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmb2xkZXJfb3BlbiIgdW5pY29kZT0iJiN4ZjA3YzsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTE4NzkgNTg0cTAgLTMxIC0zMSAtNjZsLTMzNiAtMzk2cS00MyAtNTEgLTEyMC41IC04Ni41dC0xNDMuNSAtMzUuNWgtMTA4OHEtMzQgMCAtNjAuNSAxM3QtMjYuNSA0M3EwIDMxIDMxIDY2bDMzNiAzOTZxNDMgNTEgMTIwLjUgODYuNXQxNDMuNSAzNS41aDEwODhxMzQgMCA2MC41IC0xM3QyNi41IC00M3pNMTUzNiA5Mjh2LTE2MGgtODMycS05NCAwIC0xOTcgLTQ3LjV0LTE2NCAtMTE5LjVsLTMzNyAtMzk2bC01IC02cTAgNCAtMC41IDEyLjUKdC0wLjUgMTIuNXY5NjBxMCA5MiA2NiAxNTh0MTU4IDY2aDMyMHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNTQ0cTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXNpemVfdmVydGljYWwiIHVuaWNvZGU9IiYjeGYwN2Q7IiBob3Jpei1hZHYteD0iNzY4IiAKZD0iTTcwNCAxMjE2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4di0xMDI0aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NWwtMjU2IC0yNTZxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtMjU2IDI1NnEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDEyOHYxMDI0aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NWwyNTYgMjU2cTE5IDE5IDQ1IDE5dDQ1IC0xOWwyNTYgLTI1NnExOSAtMTkgMTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXNpemVfaG9yaXpvbnRhbCIgdW5pY29kZT0iJiN4ZjA3ZTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgNjQwcTAgLTI2IC0xOSAtNDVsLTI1NiAtMjU2cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djEyOGgtMTAyNHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTlsLTI1NiAyNTZxLTE5IDE5IC0xOSA0NXQxOSA0NWwyNTYgMjU2cTE5IDE5IDQ1IDE5dDQ1IC0xOXQxOSAtNDV2LTEyOGgxMDI0djEyOHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWwyNTYgLTI1NnExOSAtMTkgMTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiYXJfY2hhcnQiIHVuaWNvZGU9IiYjeGYwODA7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik02NDAgNjQwdi01MTJoLTI1NnY1MTJoMjU2ek0xMDI0IDExNTJ2LTEwMjRoLTI1NnYxMDI0aDI1NnpNMjA0OCAwdi0xMjhoLTIwNDh2MTUzNmgxMjh2LTE0MDhoMTkyMHpNMTQwOCA4OTZ2LTc2OGgtMjU2djc2OGgyNTZ6TTE3OTIgMTI4MHYtMTE1MmgtMjU2djExNTJoMjU2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0d2l0dGVyX3NpZ24iIHVuaWNvZGU9IiYjeGYwODE7IiAKZD0iTTEyODAgOTI2cS01NiAtMjUgLTEyMSAtMzRxNjggNDAgOTMgMTE3cS02NSAtMzggLTEzNCAtNTFxLTYxIDY2IC0xNTMgNjZxLTg3IDAgLTE0OC41IC02MS41dC02MS41IC0xNDguNXEwIC0yOSA1IC00OHEtMTI5IDcgLTI0MiA2NXQtMTkyIDE1NXEtMjkgLTUwIC0yOSAtMTA2cTAgLTExNCA5MSAtMTc1cS00NyAxIC0xMDAgMjZ2LTJxMCAtNzUgNTAgLTEzMy41dDEyMyAtNzIuNXEtMjkgLTggLTUxIC04cS0xMyAwIC0zOSA0CnEyMSAtNjMgNzQuNSAtMTA0dDEyMS41IC00MnEtMTE2IC05MCAtMjYxIC05MHEtMjYgMCAtNTAgM3ExNDggLTk0IDMyMiAtOTRxMTEyIDAgMjEwIDM1LjV0MTY4IDk1dDEyMC41IDEzN3Q3NSAxNjJ0MjQuNSAxNjguNXEwIDE4IC0xIDI3cTYzIDQ1IDEwNSAxMDl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41CnQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmFjZWJvb2tfc2lnbiIgdW5pY29kZT0iJiN4ZjA4MjsiIApkPSJNMTI0OCAxNDA4cTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41di05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTE4OHY1OTVoMTk5bDMwIDIzMmgtMjI5djE0OHEwIDU2IDIzLjUgODR0OTEuNSAyOGwxMjIgMXYyMDdxLTYzIDkgLTE3OCA5cS0xMzYgMCAtMjE3LjUgLTgwdC04MS41IC0yMjZ2LTE3MWgtMjAwdi0yMzJoMjAwdi01OTVoLTUzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwCnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYW1lcmFfcmV0cm8iIHVuaWNvZGU9IiYjeGYwODM7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik05MjggNzA0cTAgMTQgLTkgMjN0LTIzIDlxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTNxMCAtMTQgOSAtMjN0MjMgLTl0MjMgOXQ5IDIzcTAgNDAgMjggNjh0NjggMjhxMTQgMCAyMyA5dDkgMjN6TTExNTIgNTc0cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODF0NzUgMTgxdDE4MSA3NXQxODEgLTc1dDc1IC0xODF6TTEyOCAwaDE1MzZ2MTI4aC0xNTM2di0xMjh6TTEyODAgNTc0cTAgMTU5IC0xMTIuNSAyNzEuNQp0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41ek0yNTYgMTIxNmgzODR2MTI4aC0zODR2LTEyOHpNMTI4IDEwMjRoMTUzNnYxMTh2MTM4aC04MjhsLTY0IC0xMjhoLTY0NHYtMTI4ek0xNzkyIDEyODB2LTEyODBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjVoLTE1MzZxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djEyODAKcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNWgxNTM2cTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJrZXkiIHVuaWNvZGU9IiYjeGYwODQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik04MzIgMTAyNHEwIDgwIC01NiAxMzZ0LTEzNiA1NnQtMTM2IC01NnQtNTYgLTEzNnEwIC00MiAxOSAtODNxLTQxIDE5IC04MyAxOXEtODAgMCAtMTM2IC01NnQtNTYgLTEzNnQ1NiAtMTM2dDEzNiAtNTZ0MTM2IDU2dDU2IDEzNnEwIDQyIC0xOSA4M3E0MSAtMTkgODMgLTE5cTgwIDAgMTM2IDU2dDU2IDEzNnpNMTY4MyAzMjBxMCAtMTcgLTQ5IC02NnQtNjYgLTQ5cS05IDAgLTI4LjUgMTZ0LTM2LjUgMzN0LTM4LjUgNDB0LTI0LjUgMjYKbC05NiAtOTZsMjIwIC0yMjBxMjggLTI4IDI4IC02OHEwIC00MiAtMzkgLTgxdC04MSAtMzlxLTQwIDAgLTY4IDI4bC02NzEgNjcxcS0xNzYgLTEzMSAtMzY1IC0xMzFxLTE2MyAwIC0yNjUuNSAxMDIuNXQtMTAyLjUgMjY1LjVxMCAxNjAgOTUgMzEzdDI0OCAyNDh0MzEzIDk1cTE2MyAwIDI2NS41IC0xMDIuNXQxMDIuNSAtMjY1LjVxMCAtMTg5IC0xMzEgLTM2NWwzNTUgLTM1NWw5NiA5NnEtMyAzIC0yNiAyNC41dC00MCAzOC41dC0zMyAzNi41CnQtMTYgMjguNXEwIDE3IDQ5IDY2dDY2IDQ5cTEzIDAgMjMgLTEwcTYgLTYgNDYgLTQ0LjV0ODIgLTc5LjV0ODYuNSAtODZ0NzMgLTc4dDI4LjUgLTQxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2dzIiB1bmljb2RlPSImI3hmMDg1OyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNODk2IDY0MHEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF0NzUgLTE4MXQxODEgLTc1dDE4MSA3NXQ3NSAxODF6TTE2NjQgMTI4cTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTBxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE2NjQgMTE1MnEwIDUyIC0zOCA5MHQtOTAgMzh0LTkwIC0zOHQtMzggLTkwcTAgLTUzIDM3LjUgLTkwLjV0OTAuNSAtMzcuNQp0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTI4MCA3MzF2LTE4NXEwIC0xMCAtNyAtMTkuNXQtMTYgLTEwLjVsLTE1NSAtMjRxLTExIC0zNSAtMzIgLTc2cTM0IC00OCA5MCAtMTE1cTcgLTExIDcgLTIwcTAgLTEyIC03IC0xOXEtMjMgLTMwIC04Mi41IC04OS41dC03OC41IC01OS41cS0xMSAwIC0yMSA3bC0xMTUgOTBxLTM3IC0xOSAtNzcgLTMxcS0xMSAtMTA4IC0yMyAtMTU1cS03IC0yNCAtMzAgLTI0aC0xODZxLTExIDAgLTIwIDcuNXQtMTAgMTcuNQpsLTIzIDE1M3EtMzQgMTAgLTc1IDMxbC0xMTggLTg5cS03IC03IC0yMCAtN3EtMTEgMCAtMjEgOHEtMTQ0IDEzMyAtMTQ0IDE2MHEwIDkgNyAxOXExMCAxNCA0MSA1M3Q0NyA2MXEtMjMgNDQgLTM1IDgybC0xNTIgMjRxLTEwIDEgLTE3IDkuNXQtNyAxOS41djE4NXEwIDEwIDcgMTkuNXQxNiAxMC41bDE1NSAyNHExMSAzNSAzMiA3NnEtMzQgNDggLTkwIDExNXEtNyAxMSAtNyAyMHEwIDEyIDcgMjBxMjIgMzAgODIgODl0NzkgNTlxMTEgMCAyMSAtNwpsMTE1IC05MHEzNCAxOCA3NyAzMnExMSAxMDggMjMgMTU0cTcgMjQgMzAgMjRoMTg2cTExIDAgMjAgLTcuNXQxMCAtMTcuNWwyMyAtMTUzcTM0IC0xMCA3NSAtMzFsMTE4IDg5cTggNyAyMCA3cTExIDAgMjEgLThxMTQ0IC0xMzMgMTQ0IC0xNjBxMCAtOCAtNyAtMTlxLTEyIC0xNiAtNDIgLTU0dC00NSAtNjBxMjMgLTQ4IDM0IC04MmwxNTIgLTIzcTEwIC0yIDE3IC0xMC41dDcgLTE5LjV6TTE5MjAgMTk4di0xNDBxMCAtMTYgLTE0OSAtMzEKcS0xMiAtMjcgLTMwIC01MnE1MSAtMTEzIDUxIC0xMzhxMCAtNCAtNCAtN3EtMTIyIC03MSAtMTI0IC03MXEtOCAwIC00NiA0N3QtNTIgNjhxLTIwIC0yIC0zMCAtMnQtMzAgMnEtMTQgLTIxIC01MiAtNjh0LTQ2IC00N3EtMiAwIC0xMjQgNzFxLTQgMyAtNCA3cTAgMjUgNTEgMTM4cS0xOCAyNSAtMzAgNTJxLTE0OSAxNSAtMTQ5IDMxdjE0MHEwIDE2IDE0OSAzMXExMyAyOSAzMCA1MnEtNTEgMTEzIC01MSAxMzhxMCA0IDQgN3E0IDIgMzUgMjAKdDU5IDM0dDMwIDE2cTggMCA0NiAtNDYuNXQ1MiAtNjcuNXEyMCAyIDMwIDJ0MzAgLTJxNTEgNzEgOTIgMTEybDYgMnE0IDAgMTI0IC03MHE0IC0zIDQgLTdxMCAtMjUgLTUxIC0xMzhxMTcgLTIzIDMwIC01MnExNDkgLTE1IDE0OSAtMzF6TTE5MjAgMTIyMnYtMTQwcTAgLTE2IC0xNDkgLTMxcS0xMiAtMjcgLTMwIC01MnE1MSAtMTEzIDUxIC0xMzhxMCAtNCAtNCAtN3EtMTIyIC03MSAtMTI0IC03MXEtOCAwIC00NiA0N3QtNTIgNjgKcS0yMCAtMiAtMzAgLTJ0LTMwIDJxLTE0IC0yMSAtNTIgLTY4dC00NiAtNDdxLTIgMCAtMTI0IDcxcS00IDMgLTQgN3EwIDI1IDUxIDEzOHEtMTggMjUgLTMwIDUycS0xNDkgMTUgLTE0OSAzMXYxNDBxMCAxNiAxNDkgMzFxMTMgMjkgMzAgNTJxLTUxIDExMyAtNTEgMTM4cTAgNCA0IDdxNCAyIDM1IDIwdDU5IDM0dDMwIDE2cTggMCA0NiAtNDYuNXQ1MiAtNjcuNXEyMCAyIDMwIDJ0MzAgLTJxNTEgNzEgOTIgMTEybDYgMnE0IDAgMTI0IC03MApxNCAtMyA0IC03cTAgLTI1IC01MSAtMTM4cTE3IC0yMyAzMCAtNTJxMTQ5IC0xNSAxNDkgLTMxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb21tZW50cyIgdW5pY29kZT0iJiN4ZjA4NjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE0MDggNzY4cTAgLTEzOSAtOTQgLTI1N3QtMjU2LjUgLTE4Ni41dC0zNTMuNSAtNjguNXEtODYgMCAtMTc2IDE2cS0xMjQgLTg4IC0yNzggLTEyOHEtMzYgLTkgLTg2IC0xNmgtM3EtMTEgMCAtMjAuNSA4dC0xMS41IDIxcS0xIDMgLTEgNi41dDAuNSA2LjV0MiA2bDIuNSA1dDMuNSA1LjV0NCA1dDQuNSA1dDQgNC41cTUgNiAyMyAyNXQyNiAyOS41dDIyLjUgMjl0MjUgMzguNXQyMC41IDQ0cS0xMjQgNzIgLTE5NSAxNzd0LTcxIDIyNApxMCAxMzkgOTQgMjU3dDI1Ni41IDE4Ni41dDM1My41IDY4LjV0MzUzLjUgLTY4LjV0MjU2LjUgLTE4Ni41dDk0IC0yNTd6TTE3OTIgNTEycTAgLTEyMCAtNzEgLTIyNC41dC0xOTUgLTE3Ni41cTEwIC0yNCAyMC41IC00NHQyNSAtMzguNXQyMi41IC0yOXQyNiAtMjkuNXQyMyAtMjVxMSAtMSA0IC00LjV0NC41IC01dDQgLTV0My41IC01LjVsMi41IC01dDIgLTZ0MC41IC02LjV0LTEgLTYuNXEtMyAtMTQgLTEzIC0yMnQtMjIgLTcKcS01MCA3IC04NiAxNnEtMTU0IDQwIC0yNzggMTI4cS05MCAtMTYgLTE3NiAtMTZxLTI3MSAwIC00NzIgMTMycTU4IC00IDg4IC00cTE2MSAwIDMwOSA0NXQyNjQgMTI5cTEyNSA5MiAxOTIgMjEydDY3IDI1NHEwIDc3IC0yMyAxNTJxMTI5IC03MSAyMDQgLTE3OHQ3NSAtMjMweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0aHVtYnNfdXBfYWx0IiB1bmljb2RlPSImI3hmMDg3OyIgCmQ9Ik0yNTYgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA3NjhxMCA1MSAtMzkgODkuNXQtODkgMzguNWgtMzUycTAgNTggNDggMTU5LjV0NDggMTYwLjVxMCA5OCAtMzIgMTQ1dC0xMjggNDdxLTI2IC0yNiAtMzggLTg1dC0zMC41IC0xMjUuNXQtNTkuNSAtMTA5LjVxLTIyIC0yMyAtNzcgLTkxcS00IC01IC0yMyAtMzB0LTMxLjUgLTQxdC0zNC41IC00Mi41CnQtNDAgLTQ0dC0zOC41IC0zNS41dC00MCAtMjd0LTM1LjUgLTloLTMydi02NDBoMzJxMTMgMCAzMS41IC0zdDMzIC02LjV0MzggLTExdDM1IC0xMS41dDM1LjUgLTEyLjV0MjkgLTEwLjVxMjExIC03MyAzNDIgLTczaDEyMXExOTIgMCAxOTIgMTY3cTAgMjYgLTUgNTZxMzAgMTYgNDcuNSA1Mi41dDE3LjUgNzMuNXQtMTggNjlxNTMgNTAgNTMgMTE5cTAgMjUgLTEwIDU1LjV0LTI1IDQ3LjVxMzIgMSA1My41IDQ3dDIxLjUgODF6TTE1MzYgNzY5CnEwIC04OSAtNDkgLTE2M3E5IC0zMyA5IC02OXEwIC03NyAtMzggLTE0NHEzIC0yMSAzIC00M3EwIC0xMDEgLTYwIC0xNzhxMSAtMTM5IC04NSAtMjE5LjV0LTIyNyAtODAuNWgtMzZoLTkzcS05NiAwIC0xODkuNSAyMi41dC0yMTYuNSA2NS41cS0xMTYgNDAgLTEzOCA0MGgtMjg4cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXY2NDBxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDI3NHEzNiAyNCAxMzcgMTU1cTU4IDc1IDEwNyAxMjgKcTI0IDI1IDM1LjUgODUuNXQzMC41IDEyNi41dDYyIDEwOHEzOSAzNyA5MCAzN3E4NCAwIDE1MSAtMzIuNXQxMDIgLTEwMS41dDM1IC0xODZxMCAtOTMgLTQ4IC0xOTJoMTc2cTEwNCAwIDE4MCAtNzZ0NzYgLTE3OXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGh1bWJzX2Rvd25fYWx0IiB1bmljb2RlPSImI3hmMDg4OyIgCmQ9Ik0yNTYgMTA4OHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE0MDggNTEycTAgMzUgLTIxLjUgODF0LTUzLjUgNDdxMTUgMTcgMjUgNDcuNXQxMCA1NS41cTAgNjkgLTUzIDExOXExOCAzMSAxOCA2OXEwIDM3IC0xNy41IDczLjV0LTQ3LjUgNTIuNXE1IDMwIDUgNTZxMCA4NSAtNDkgMTI2dC0xMzYgNDFoLTEyOHEtMTMxIDAgLTM0MiAtNzNxLTUgLTIgLTI5IC0xMC41CnQtMzUuNSAtMTIuNXQtMzUgLTExLjV0LTM4IC0xMXQtMzMgLTYuNXQtMzEuNSAtM2gtMzJ2LTY0MGgzMnExNiAwIDM1LjUgLTl0NDAgLTI3dDM4LjUgLTM1LjV0NDAgLTQ0dDM0LjUgLTQyLjV0MzEuNSAtNDF0MjMgLTMwcTU1IC02OCA3NyAtOTFxNDEgLTQzIDU5LjUgLTEwOS41dDMwLjUgLTEyNS41dDM4IC04NXE5NiAwIDEyOCA0N3QzMiAxNDVxMCA1OSAtNDggMTYwLjV0LTQ4IDE1OS41aDM1MnE1MCAwIDg5IDM4LjV0MzkgODkuNXoKTTE1MzYgNTExcTAgLTEwMyAtNzYgLTE3OXQtMTgwIC03NmgtMTc2cTQ4IC05OSA0OCAtMTkycTAgLTExOCAtMzUgLTE4NnEtMzUgLTY5IC0xMDIgLTEwMS41dC0xNTEgLTMyLjVxLTUxIDAgLTkwIDM3cS0zNCAzMyAtNTQgODJ0LTI1LjUgOTAuNXQtMTcuNSA4NC41dC0zMSA2NHEtNDggNTAgLTEwNyAxMjdxLTEwMSAxMzEgLTEzNyAxNTVoLTI3NHEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV2NjQwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNQpoMjg4cTIyIDAgMTM4IDQwcTEyOCA0NCAyMjMgNjZ0MjAwIDIyaDExMnExNDAgMCAyMjYuNSAtNzl0ODUuNSAtMjE2di01cTYwIC03NyA2MCAtMTc4cTAgLTIyIC0zIC00M3EzOCAtNjcgMzggLTE0NHEwIC0zNiAtOSAtNjlxNDkgLTczIDQ5IC0xNjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InN0YXJfaGFsZiIgdW5pY29kZT0iJiN4ZjA4OTsiIGhvcml6LWFkdi14PSI4OTYiIApkPSJNODMyIDE1MDR2LTEzMzlsLTQ0OSAtMjM2cS0yMiAtMTIgLTQwIC0xMnEtMjEgMCAtMzEuNSAxNC41dC0xMC41IDM1LjVxMCA2IDIgMjBsODYgNTAwbC0zNjQgMzU0cS0yNSAyNyAtMjUgNDhxMCAzNyA1NiA0Nmw1MDIgNzNsMjI1IDQ1NXExOSA0MSA0OSA0MXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGVhcnRfZW1wdHkiIHVuaWNvZGU9IiYjeGYwOGE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNjY0IDk0MHEwIDgxIC0yMS41IDE0M3QtNTUgOTguNXQtODEuNSA1OS41dC05NCAzMXQtOTggOHQtMTEyIC0yNS41dC0xMTAuNSAtNjR0LTg2LjUgLTcydC02MCAtNjEuNXEtMTggLTIyIC00OSAtMjJ0LTQ5IDIycS0yNCAyOCAtNjAgNjEuNXQtODYuNSA3MnQtMTEwLjUgNjR0LTExMiAyNS41dC05OCAtOHQtOTQgLTMxdC04MS41IC01OS41dC01NSAtOTguNXQtMjEuNSAtMTQzcTAgLTE2OCAxODcgLTM1NWw1ODEgLTU2MGw1ODAgNTU5CnExODggMTg4IDE4OCAzNTZ6TTE3OTIgOTQwcTAgLTIyMSAtMjI5IC00NTBsLTYyMyAtNjAwcS0xOCAtMTggLTQ0IC0xOHQtNDQgMThsLTYyNCA2MDJxLTEwIDggLTI3LjUgMjZ0LTU1LjUgNjUuNXQtNjggOTcuNXQtNTMuNSAxMjF0LTIzLjUgMTM4cTAgMjIwIDEyNyAzNDR0MzUxIDEyNHE2MiAwIDEyNi41IC0yMS41dDEyMCAtNTh0OTUuNSAtNjguNXQ3NiAtNjhxMzYgMzYgNzYgNjh0OTUuNSA2OC41dDEyMCA1OHQxMjYuNSAyMS41CnEyMjQgMCAzNTEgLTEyNHQxMjcgLTM0NHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2lnbm91dCIgdW5pY29kZT0iJiN4ZjA4YjsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTY0MCA5NnEwIC00IDEgLTIwdDAuNSAtMjYuNXQtMyAtMjMuNXQtMTAgLTE5LjV0LTIwLjUgLTYuNWgtMzIwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY3MDRxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDMyMHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjVxMCAtNCAxIC0yMHQwLjUgLTI2LjV0LTMgLTIzLjV0LTEwIC0xOS41dC0yMC41IC02LjVoLTMyMHEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtNzA0CnEwIC02NiA0NyAtMTEzdDExMyAtNDdoMjg4aDExaDEzdDExLjUgLTF0MTEuNSAtM3Q4IC01LjV0NyAtOXQyIC0xMy41ek0xNTY4IDY0MHEwIC0yNiAtMTkgLTQ1bC01NDQgLTU0NHEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5dC0xOSA0NXYyODhoLTQ0OHEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NHEwIDI2IDE5IDQ1dDQ1IDE5aDQ0OHYyODhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsNTQ0IC01NDRxMTkgLTE5IDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlua2VkaW5fc2lnbiIgdW5pY29kZT0iJiN4ZjA4YzsiIApkPSJNMjM3IDEyMmgyMzF2Njk0aC0yMzF2LTY5NHpNNDgzIDEwMzBxLTEgNTIgLTM2IDg2dC05MyAzNHQtOTQuNSAtMzR0LTM2LjUgLTg2cTAgLTUxIDM1LjUgLTg1LjV0OTIuNSAtMzQuNWgxcTU5IDAgOTUgMzQuNXQzNiA4NS41ek0xMDY4IDEyMmgyMzF2Mzk4cTAgMTU0IC03MyAyMzN0LTE5MyA3OXEtMTM2IDAgLTIwOSAtMTE3aDJ2MTAxaC0yMzFxMyAtNjYgMCAtNjk0aDIzMXYzODhxMCAzOCA3IDU2cTE1IDM1IDQ1IDU5LjV0NzQgMjQuNQpxMTE2IDAgMTE2IC0xNTd2LTM3MXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InB1c2hwaW4iIHVuaWNvZGU9IiYjeGYwOGQ7IiBob3Jpei1hZHYteD0iMTE1MiIgCmQ9Ik00ODAgNjcydjQ0OHEwIDE0IC05IDIzdC0yMyA5dC0yMyAtOXQtOSAtMjN2LTQ0OHEwIC0xNCA5IC0yM3QyMyAtOXQyMyA5dDkgMjN6TTExNTIgMzIwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNDI5bC01MSAtNDgzcS0yIC0xMiAtMTAuNSAtMjAuNXQtMjAuNSAtOC41aC0xcS0yNyAwIC0zMiAyN2wtNzYgNDg1aC00MDRxLTI2IDAgLTQ1IDE5dC0xOSA0NXEwIDEyMyA3OC41IDIyMS41dDE3Ny41IDk4LjV2NTEycS01MiAwIC05MCAzOAp0LTM4IDkwdDM4IDkwdDkwIDM4aDY0MHE1MiAwIDkwIC0zOHQzOCAtOTB0LTM4IC05MHQtOTAgLTM4di01MTJxOTkgMCAxNzcuNSAtOTguNXQ3OC41IC0yMjEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXh0ZXJuYWxfbGluayIgdW5pY29kZT0iJiN4ZjA4ZTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE0MDggNjA4di0zMjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg3MDRxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0cS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdi04MzJxMCAtNjYgNDcgLTExM3QxMTMgLTQ3aDgzMnE2NiAwIDExMyA0N3Q0NyAxMTN2MzIwCnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzek0xNzkyIDE0NzJ2LTUxMnEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5bC0xNzYgMTc2bC02NTIgLTY1MnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xMTQgMTE0cS0xMCAxMCAtMTAgMjN0MTAgMjNsNjUyIDY1MmwtMTc2IDE3NnEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDUxMnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNpZ25pbiIgdW5pY29kZT0iJiN4ZjA5MDsiIApkPSJNMTE4NCA2NDBxMCAtMjYgLTE5IC00NWwtNTQ0IC01NDRxLTE5IC0xOSAtNDUgLTE5dC00NSAxOXQtMTkgNDV2Mjg4aC00NDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXYzODRxMCAyNiAxOSA0NXQ0NSAxOWg0NDh2Mjg4cTAgMjYgMTkgNDV0NDUgMTl0NDUgLTE5bDU0NCAtNTQ0cTE5IC0xOSAxOSAtNDV6TTE1MzYgOTkydi03MDRxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTMyMHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41CnEwIDQgLTEgMjB0LTAuNSAyNi41dDMgMjMuNXQxMCAxOS41dDIwLjUgNi41aDMyMHE2NiAwIDExMyA0N3Q0NyAxMTN2NzA0cTAgNjYgLTQ3IDExM3QtMTEzIDQ3aC0yODhoLTExaC0xM3QtMTEuNSAxdC0xMS41IDN0LTggNS41dC03IDl0LTIgMTMuNXEwIDQgLTEgMjB0LTAuNSAyNi41dDMgMjMuNXQxMCAxOS41dDIwLjUgNi41aDMyMHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHJvcGh5IiB1bmljb2RlPSImI3hmMDkxOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNNDU4IDY1M3EtNzQgMTYyIC03NCAzNzFoLTI1NnYtOTZxMCAtNzggOTQuNSAtMTYydDIzNS41IC0xMTN6TTE1MzYgOTI4djk2aC0yNTZxMCAtMjA5IC03NCAtMzcxcTE0MSAyOSAyMzUuNSAxMTN0OTQuNSAxNjJ6TTE2NjQgMTA1NnYtMTI4cTAgLTcxIC00MS41IC0xNDN0LTExMiAtMTMwdC0xNzMgLTk3LjV0LTIxNS41IC00NC41cS00MiAtNTQgLTk1IC05NXEtMzggLTM0IC01Mi41IC03Mi41dC0xNC41IC04OS41cTAgLTU0IDMwLjUgLTkxCnQ5Ny41IC0zN3E3NSAwIDEzMy41IC00NS41dDU4LjUgLTExNC41di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC04MzJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCA2OSA1OC41IDExNC41dDEzMy41IDQ1LjVxNjcgMCA5Ny41IDM3dDMwLjUgOTFxMCA1MSAtMTQuNSA4OS41dC01Mi41IDcyLjVxLTUzIDQxIC05NSA5NXEtMTEzIDUgLTIxNS41IDQ0LjV0LTE3MyA5Ny41dC0xMTIgMTMwdC00MS41IDE0M3YxMjhxMCA0MCAyOCA2OHQ2OCAyOGgyODh2OTYKcTAgNjYgNDcgMTEzdDExMyA0N2g1NzZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDI4OHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImdpdGh1Yl9zaWduIiB1bmljb2RlPSImI3hmMDkyOyIgCmQ9Ik01MTkgMzM2cTQgNiAtMyAxM3EtOSA3IC0xNCAycS00IC02IDMgLTEzcTkgLTcgMTQgLTJ6TTQ5MSAzNzdxLTUgNyAtMTIgNHEtNiAtNCAwIC0xMnE3IC04IDEyIC01cTYgNCAwIDEzek00NTAgNDE3cTIgNCAtNSA4cS03IDIgLTggLTJxLTMgLTUgNCAtOHE4IC0yIDkgMnpNNDcxIDM5NHEyIDEgMS41IDQuNXQtMy41IDUuNXEtNiA3IC0xMCAzdDEgLTExcTYgLTYgMTEgLTJ6TTU1NyAzMTlxMiA3IC05IDExcS05IDMgLTEzIC00CnEtMiAtNyA5IC0xMXE5IC0zIDEzIDR6TTU5OSAzMTZxMCA4IC0xMiA4cS0xMCAwIC0xMCAtOHQxMSAtOHQxMSA4ek02MzggMzIzcS0yIDcgLTEzIDV0LTkgLTlxMiAtOCAxMiAtNnQxMCAxMHpNMTI4MCA2NDBxMCAyMTIgLTE1MCAzNjJ0LTM2MiAxNTB0LTM2MiAtMTUwdC0xNTAgLTM2MnEwIC0xNjcgOTggLTMwMC41dDI1MiAtMTg1LjVxMTggLTMgMjYuNSA1dDguNSAyMHEwIDUyIC0xIDk1cS02IC0xIC0xNS41IC0yLjV0LTM1LjUgLTJ0LTQ4IDQKdC00My41IDIwdC0yOS41IDQxLjVxLTIzIDU5IC01NyA3NHEtMiAxIC00LjUgMy41bC04IDh0LTcgOS41dDQgNy41dDE5LjUgMy41cTYgMCAxNSAtMnQzMCAtMTUuNXQzMyAtMzUuNXExNiAtMjggMzcuNSAtNDJ0NDMuNSAtMTR0MzggMy41dDMwIDkuNXE3IDQ3IDMzIDY5cS00OSA2IC04NiAxOC41dC03MyAzOXQtNTUuNSA3NnQtMTkuNSAxMTkuNXEwIDc5IDUzIDEzN3EtMjQgNjIgNSAxMzZxMTkgNiA1NC41IC03LjV0NjAuNSAtMjkuNWwyNiAtMTYKcTU4IDE3IDEyOCAxN3QxMjggLTE3cTExIDcgMjguNSAxOHQ1NS41IDI2dDU3IDlxMjkgLTc0IDUgLTEzNnE1MyAtNTggNTMgLTEzN3EwIC01NyAtMTQgLTEwMC41dC0zNS41IC03MHQtNTMuNSAtNDQuNXQtNjIuNSAtMjZ0LTY4LjUgLTEycTM1IC0zMSAzNSAtOTVxMCAtNDAgLTAuNSAtODl0LTAuNSAtNTFxMCAtMTIgOC41IC0yMHQyNi41IC01cTE1NCA1MiAyNTIgMTg1LjV0OTggMzAwLjV6TTE1MzYgMTEyMHYtOTYwCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXBsb2FkX2FsdCIgdW5pY29kZT0iJiN4ZjA5MzsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTEyODAgNjRxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNTM2IDY0cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTY2NCAyODh2LTMyMHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE0NzJxLTQwIDAgLTY4IDI4dC0yOCA2OHYzMjBxMCA0MCAyOCA2OHQ2OCAyOGg0MjdxMjEgLTU2IDcwLjUgLTkyCnQxMTAuNSAtMzZoMjU2cTYxIDAgMTEwLjUgMzZ0NzAuNSA5Mmg0MjdxNDAgMCA2OCAtMjh0MjggLTY4ek0xMzM5IDkzNnEtMTcgLTQwIC01OSAtNDBoLTI1NnYtNDQ4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4aC0yNTZxLTQyIDAgLTU5IDQwcS0xNyAzOSAxNCA2OWw0NDggNDQ4cTE4IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHEzMSAtMzAgMTQgLTY5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsZW1vbiIgdW5pY29kZT0iJiN4ZjA5NDsiIApkPSJNMTQwNyA3MTBxMCA0NCAtNyAxMTMuNXQtMTggOTYuNXEtMTIgMzAgLTE3IDQ0dC05IDM2LjV0LTQgNDguNXEwIDIzIDUgNjguNXQ1IDY3LjVxMCAzNyAtMTAgNTVxLTQgMSAtMTMgMXEtMTkgMCAtNTggLTQuNXQtNTkgLTQuNXEtNjAgMCAtMTc2IDI0dC0xNzUgMjRxLTQzIDAgLTk0LjUgLTExLjV0LTg1IC0yMy41dC04OS41IC0zNHEtMTM3IC01NCAtMjAyIC0xMDNxLTk2IC03MyAtMTU5LjUgLTE4OS41dC04OCAtMjM2dC0yNC41IC0yNDguNQpxMCAtNDAgMTIuNSAtMTIwdDEyLjUgLTEyMXEwIC0yMyAtMTEgLTY2LjV0LTExIC02NS41dDEyIC0zNi41dDM0IC0xNC41cTI0IDAgNzIuNSAxMXQ3My41IDExcTU3IDAgMTY5LjUgLTE1LjV0MTY5LjUgLTE1LjVxMTgxIDAgMjg0IDM2cTEyOSA0NSAyMzUuNSAxNTIuNXQxNjYgMjQ1LjV0NTkuNSAyNzV6TTE1MzUgNzEycTAgLTE2NSAtNzAgLTMyNy41dC0xOTYgLTI4OHQtMjgxIC0xODAuNXEtMTI0IC00NCAtMzI2IC00NApxLTU3IDAgLTE3MCAxNC41dC0xNjkgMTQuNXEtMjQgMCAtNzIuNSAtMTQuNXQtNzMuNSAtMTQuNXEtNzMgMCAtMTIzLjUgNTUuNXQtNTAuNSAxMjguNXEwIDI0IDExIDY4dDExIDY3cTAgNDAgLTEyLjUgMTIwLjV0LTEyLjUgMTIxLjVxMCAxMTEgMTggMjE3LjV0NTQuNSAyMDkuNXQxMDAuNSAxOTR0MTUwIDE1NnE3OCA1OSAyMzIgMTIwcTE5NCA3OCAzMTYgNzhxNjAgMCAxNzUuNSAtMjR0MTczLjUgLTI0cTE5IDAgNTcgNXQ1OCA1CnE4MSAwIDExOCAtNTAuNXQzNyAtMTM0LjVxMCAtMjMgLTUgLTY4dC01IC02OHEwIC0xMyAyIC0yNXQzLjUgLTE2LjV0Ny41IC0yMC41dDggLTIwcTE2IC00MCAyNSAtMTE4LjV0OSAtMTM2LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InBob25lIiB1bmljb2RlPSImI3hmMDk1OyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTQwOCAyOTZxMCAtMjcgLTEwIC03MC41dC0yMSAtNjguNXEtMjEgLTUwIC0xMjIgLTEwNnEtOTQgLTUxIC0xODYgLTUxcS0yNyAwIC01MyAzLjV0LTU3LjUgMTIuNXQtNDcgMTQuNXQtNTUuNSAyMC41dC00OSAxOHEtOTggMzUgLTE3NSA4M3EtMTI3IDc5IC0yNjQgMjE2dC0yMTYgMjY0cS00OCA3NyAtODMgMTc1cS0zIDkgLTE4IDQ5dC0yMC41IDU1LjV0LTE0LjUgNDd0LTEyLjUgNTcuNXQtMy41IDUzcTAgOTIgNTEgMTg2CnE1NiAxMDEgMTA2IDEyMnEyNSAxMSA2OC41IDIxdDcwLjUgMTBxMTQgMCAyMSAtM3ExOCAtNiA1MyAtNzZxMTEgLTE5IDMwIC01NHQzNSAtNjMuNXQzMSAtNTMuNXEzIC00IDE3LjUgLTI1dDIxLjUgLTM1LjV0NyAtMjguNXEwIC0yMCAtMjguNSAtNTB0LTYyIC01NXQtNjIgLTUzdC0yOC41IC00NnEwIC05IDUgLTIyLjV0OC41IC0yMC41dDE0IC0yNHQxMS41IC0xOXE3NiAtMTM3IDE3NCAtMjM1dDIzNSAtMTc0cTIgLTEgMTkgLTExLjV0MjQgLTE0CnQyMC41IC04LjV0MjIuNSAtNXExOCAwIDQ2IDI4LjV0NTMgNjJ0NTUgNjJ0NTAgMjguNXExNCAwIDI4LjUgLTd0MzUuNSAtMjEuNXQyNSAtMTcuNXEyNSAtMTUgNTMuNSAtMzF0NjMuNSAtMzV0NTQgLTMwcTcwIC0zNSA3NiAtNTNxMyAtNyAzIC0yMXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hlY2tfZW1wdHkiIHVuaWNvZGU9IiYjeGYwOTY7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik0xMTIwIDEyODBoLTgzMnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzdjgzMnEwIDY2IC00NyAxMTN0LTExMyA0N3pNMTQwOCAxMTIwdi04MzJxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg4MzIKcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJib29rbWFya19lbXB0eSIgdW5pY29kZT0iJiN4ZjA5NzsiIGhvcml6LWFkdi14PSIxMjgwIiAKZD0iTTExNTIgMTI4MGgtMTAyNHYtMTI0Mmw0MjMgNDA2bDg5IDg1bDg5IC04NWw0MjMgLTQwNnYxMjQyek0xMTY0IDE0MDhxMjMgMCA0NCAtOXEzMyAtMTMgNTIuNSAtNDF0MTkuNSAtNjJ2LTEyODlxMCAtMzQgLTE5LjUgLTYydC01Mi41IC00MXEtMTkgLTggLTQ0IC04cS00OCAwIC04MyAzMmwtNDQxIDQyNGwtNDQxIC00MjRxLTM2IC0zMyAtODMgLTMzcS0yMyAwIC00NCA5cS0zMyAxMyAtNTIuNSA0MXQtMTkuNSA2MnYxMjg5CnEwIDM0IDE5LjUgNjJ0NTIuNSA0MXEyMSA5IDQ0IDloMTA0OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGhvbmVfc2lnbiIgdW5pY29kZT0iJiN4ZjA5ODsiIApkPSJNMTI4MCAzNDNxMCAxMSAtMiAxNnQtMTggMTYuNXQtNDAuNSAyNXQtNDcuNSAyNi41dC00NS41IDI1dC0yOC41IDE1cS01IDMgLTE5IDEzdC0yNSAxNXQtMjEgNXEtMTUgMCAtMzYuNSAtMjAuNXQtMzkuNSAtNDV0LTM4LjUgLTQ1dC0zMy41IC0yMC41cS03IDAgLTE2LjUgMy41dC0xNS41IDYuNXQtMTcgOS41dC0xNCA4LjVxLTk5IDU1IC0xNzAgMTI2LjV0LTEyNyAxNzAuNXEtMiAzIC04LjUgMTR0LTkuNSAxN3QtNi41IDE1LjUKdC0zLjUgMTYuNXEwIDEzIDIwLjUgMzMuNXQ0NSAzOC41dDQ1IDM5LjV0MjAuNSAzNi41cTAgMTAgLTUgMjF0LTE1IDI1dC0xMyAxOXEtMyA2IC0xNSAyOC41dC0yNSA0NS41dC0yNi41IDQ3LjV0LTI1IDQwLjV0LTE2LjUgMTh0LTE2IDJxLTQ4IDAgLTEwMSAtMjJxLTQ2IC0yMSAtODAgLTk0LjV0LTM0IC0xMzAuNXEwIC0xNiAyLjUgLTM0dDUgLTMwLjV0OSAtMzN0MTAgLTI5LjV0MTIuNSAtMzN0MTEgLTMwcTYwIC0xNjQgMjE2LjUgLTMyMC41CnQzMjAuNSAtMjE2LjVxNiAtMiAzMCAtMTF0MzMgLTEyLjV0MjkuNSAtMTB0MzMgLTl0MzAuNSAtNXQzNCAtMi41cTU3IDAgMTMwLjUgMzR0OTQuNSA4MHEyMiA1MyAyMiAxMDF6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41egoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHdpdHRlciIgdW5pY29kZT0iJiN4ZjA5OTsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTE2MjAgMTEyOHEtNjcgLTk4IC0xNjIgLTE2N3ExIC0xNCAxIC00MnEwIC0xMzAgLTM4IC0yNTkuNXQtMTE1LjUgLTI0OC41dC0xODQuNSAtMjEwLjV0LTI1OCAtMTQ2dC0zMjMgLTU0LjVxLTI3MSAwIC00OTYgMTQ1cTM1IC00IDc4IC00cTIyNSAwIDQwMSAxMzhxLTEwNSAyIC0xODggNjQuNXQtMTE0IDE1OS41cTMzIC01IDYxIC01cTQzIDAgODUgMTFxLTExMiAyMyAtMTg1LjUgMTExLjV0LTczLjUgMjA1LjV2NHE2OCAtMzggMTQ2IC00MQpxLTY2IDQ0IC0xMDUgMTE1dC0zOSAxNTRxMCA4OCA0NCAxNjNxMTIxIC0xNDkgMjk0LjUgLTIzOC41dDM3MS41IC05OS41cS04IDM4IC04IDc0cTAgMTM0IDk0LjUgMjI4LjV0MjI4LjUgOTQuNXExNDAgMCAyMzYgLTEwMnExMDkgMjEgMjA1IDc4cS0zNyAtMTE1IC0xNDIgLTE3OHE5MyAxMCAxODYgNTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhY2Vib29rIiB1bmljb2RlPSImI3hmMDlhOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNOTU5IDE1MjR2LTI2NGgtMTU3cS04NiAwIC0xMTYgLTM2dC0zMCAtMTA4di0xODloMjkzbC0zOSAtMjk2aC0yNTR2LTc1OWgtMzA2djc1OWgtMjU1djI5NmgyNTV2MjE4cTAgMTg2IDEwNCAyODguNXQyNzcgMTAyLjVxMTQ3IDAgMjI4IC0xMnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2l0aHViIiB1bmljb2RlPSImI3hmMDliOyIgCmQ9Ik03NjggMTQwOHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41cTAgLTI1MSAtMTQ2LjUgLTQ1MS41dC0zNzguNSAtMjc3LjVxLTI3IC01IC00MCA3dC0xMyAzMHEwIDMgMC41IDc2LjV0MC41IDEzNC41cTAgOTcgLTUyIDE0MnE1NyA2IDEwMi41IDE4dDk0IDM5dDgxIDY2LjV0NTMgMTA1dDIwLjUgMTUwLjVxMCAxMTkgLTc5IDIwNnEzNyA5MSAtOCAyMDRxLTI4IDkgLTgxIC0xMXQtOTIgLTQ0bC0zOCAtMjQKcS05MyAyNiAtMTkyIDI2dC0xOTIgLTI2cS0xNiAxMSAtNDIuNSAyN3QtODMuNSAzOC41dC04NSAxMy41cS00NSAtMTEzIC04IC0yMDRxLTc5IC04NyAtNzkgLTIwNnEwIC04NSAyMC41IC0xNTB0NTIuNSAtMTA1dDgwLjUgLTY3dDk0IC0zOXQxMDIuNSAtMThxLTM5IC0zNiAtNDkgLTEwM3EtMjEgLTEwIC00NSAtMTV0LTU3IC01dC02NS41IDIxLjV0LTU1LjUgNjIuNXEtMTkgMzIgLTQ4LjUgNTJ0LTQ5LjUgMjRsLTIwIDNxLTIxIDAgLTI5IC00LjUKdC01IC0xMS41dDkgLTE0dDEzIC0xMmw3IC01cTIyIC0xMCA0My41IC0zOHQzMS41IC01MWwxMCAtMjNxMTMgLTM4IDQ0IC02MS41dDY3IC0zMHQ2OS41IC03dDU1LjUgMy41bDIzIDRxMCAtMzggMC41IC04OC41dDAuNSAtNTQuNXEwIC0xOCAtMTMgLTMwdC00MCAtN3EtMjMyIDc3IC0zNzguNSAyNzcuNXQtMTQ2LjUgNDUxLjVxMCAyMDkgMTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNMjkxIDMwNXEzIDcgLTcgMTIKcS0xMCAzIC0xMyAtMnEtMyAtNyA3IC0xMnE5IC02IDEzIDJ6TTMyMiAyNzFxNyA1IC0yIDE2cS0xMCA5IC0xNiAzcS03IC01IDIgLTE2cTEwIC0xMCAxNiAtM3pNMzUyIDIyNnE5IDcgMCAxOXEtOCAxMyAtMTcgNnEtOSAtNSAwIC0xOHQxNyAtN3pNMzk0IDE4NHE4IDggLTQgMTlxLTEyIDEyIC0yMCAzcS05IC04IDQgLTE5cTEyIC0xMiAyMCAtM3pNNDUxIDE1OXEzIDExIC0xMyAxNnEtMTUgNCAtMTkgLTd0MTMgLTE1cTE1IC02IDE5IDZ6Ck01MTQgMTU0cTAgMTMgLTE3IDExcS0xNiAwIC0xNiAtMTFxMCAtMTMgMTcgLTExcTE2IDAgMTYgMTF6TTU3MiAxNjRxLTIgMTEgLTE4IDlxLTE2IC0zIC0xNCAtMTV0MTggLTh0MTQgMTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVubG9jayIgdW5pY29kZT0iJiN4ZjA5YzsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTE2NjQgOTYwdi0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF2LTE5Mmg5NnE0MCAwIDY4IC0yOHQyOCAtNjh2LTU3NnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djU3NnEwIDQwIDI4IDY4dDY4IDI4aDY3MnYxOTJxMCAxODUgMTMxLjUgMzE2LjV0MzE2LjUgMTMxLjUKdDMxNi41IC0xMzEuNXQxMzEuNSAtMzE2LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNyZWRpdF9jYXJkIiB1bmljb2RlPSImI3hmMDlkOyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNMTc2MCAxNDA4cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNjAwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxNjAwek0xNjAgMTI4MHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTIyNGgxNjY0djIyNHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTE2MDB6TTE3NjAgMHExMyAwIDIyLjUgOS41dDkuNSAyMi41djYwOGgtMTY2NHYtNjA4CnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE2MDB6TTI1NiAxMjh2MTI4aDI1NnYtMTI4aC0yNTZ6TTY0MCAxMjh2MTI4aDM4NHYtMTI4aC0zODR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InJzcyIgdW5pY29kZT0iJiN4ZjA5ZTsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTM4NCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek04OTYgNjlxMiAtMjggLTE3IC00OHEtMTggLTIxIC00NyAtMjFoLTEzNXEtMjUgMCAtNDMgMTYuNXQtMjAgNDEuNXEtMjIgMjI5IC0xODQuNSAzOTEuNXQtMzkxLjUgMTg0LjVxLTI1IDIgLTQxLjUgMjB0LTE2LjUgNDN2MTM1cTAgMjkgMjEgNDdxMTcgMTcgNDMgMTdoNXExNjAgLTEzIDMwNiAtODAuNQp0MjU5IC0xODEuNXExMTQgLTExMyAxODEuNSAtMjU5dDgwLjUgLTMwNnpNMTQwOCA2N3EyIC0yNyAtMTggLTQ3cS0xOCAtMjAgLTQ2IC0yMGgtMTQzcS0yNiAwIC00NC41IDE3LjV0LTE5LjUgNDIuNXEtMTIgMjE1IC0xMDEgNDA4LjV0LTIzMS41IDMzNnQtMzM2IDIzMS41dC00MDguNSAxMDJxLTI1IDEgLTQyLjUgMTkuNXQtMTcuNSA0My41djE0M3EwIDI4IDIwIDQ2cTE4IDE4IDQ0IDE4aDNxMjYyIC0xMyA1MDEuNSAtMTIwdDQyNS41IC0yOTQKcTE4NyAtMTg2IDI5NCAtNDI1LjV0MTIwIC01MDEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGRkIiB1bmljb2RlPSImI3hmMGEwOyIgCmQ9Ik0xMDQwIDMyMHEwIC0zMyAtMjMuNSAtNTYuNXQtNTYuNSAtMjMuNXQtNTYuNSAyMy41dC0yMy41IDU2LjV0MjMuNSA1Ni41dDU2LjUgMjMuNXQ1Ni41IC0yMy41dDIzLjUgLTU2LjV6TTEyOTYgMzIwcTAgLTMzIC0yMy41IC01Ni41dC01Ni41IC0yMy41dC01Ni41IDIzLjV0LTIzLjUgNTYuNXQyMy41IDU2LjV0NTYuNSAyMy41dDU2LjUgLTIzLjV0MjMuNSAtNTYuNXpNMTQwOCAxNjB2MzIwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNQpoLTEyMTZxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0zMjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxMjE2cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTE3OCA2NDBoMTE4MGwtMTU3IDQ4MnEtNCAxMyAtMTYgMjEuNXQtMjYgOC41aC03ODJxLTE0IDAgLTI2IC04LjV0LTE2IC0yMS41ek0xNTM2IDQ4MHYtMzIwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YzMjBxMCAyNSAxNiA3NQpsMTk3IDYwNnExNyA1MyA2MyA4NnQxMDEgMzNoNzgycTU1IDAgMTAxIC0zM3Q2MyAtODZsMTk3IC02MDZxMTYgLTUwIDE2IC03NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnVsbGhvcm4iIHVuaWNvZGU9IiYjeGYwYTE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNjY0IDg5NnE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXQtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOHEtNDE3IDM0NyAtODEyIDM4MHEtNTggLTE5IC05MSAtNjZ0LTMxIC0xMDAuNXQ0MCAtOTIuNXEtMjAgLTMzIC0yMyAtNjUuNXQ2IC01OHQzMy41IC01NXQ0OCAtNTB0NjEuNSAtNTAuNXEtMjkgLTU4IC0xMTEuNSAtODN0LTE2OC41IC0xMS41dC0xMzIgNTUuNXEtNyAyMyAtMjkuNSA4Ny41CnQtMzIgOTQuNXQtMjMgODl0LTE1IDEwMXQzLjUgOTguNXQyMiAxMTAuNWgtMTIycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxOTJxMCA2NiA0NyAxMTN0MTEzIDQ3aDQ4MHE0MzUgMCA4OTYgMzg0cTUyIDAgOTAgLTM4dDM4IC05MHYtMzg0ek0xNTM2IDI5MnY5NTRxLTM5NCAtMzAyIC03NjggLTM0M3YtMjcwcTM3NyAtNDIgNzY4IC0zNDF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImJlbGwiIHVuaWNvZGU9IiYjeGYwYTI7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik05MTIgLTE2MHEwIDE2IC0xNiAxNnEtNTkgMCAtMTAxLjUgNDIuNXQtNDIuNSAxMDEuNXEwIDE2IC0xNiAxNnQtMTYgLTE2cTAgLTczIDUxLjUgLTEyNC41dDEyNC41IC01MS41cTE2IDAgMTYgMTZ6TTI0NiAxMjhoMTMwMHEtMjY2IDMwMCAtMjY2IDgzMnEwIDUxIC0yNCAxMDV0LTY5IDEwM3QtMTIxLjUgODAuNXQtMTY5LjUgMzEuNXQtMTY5LjUgLTMxLjV0LTEyMS41IC04MC41dC02OSAtMTAzdC0yNCAtMTA1cTAgLTUzMiAtMjY2IC04MzJ6Ck0xNzI4IDEyOHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTQ0OHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxaC00NDhxLTUyIDAgLTkwIDM4dC0zOCA5MHE1MCA0MiA5MSA4OHQ4NSAxMTkuNXQ3NC41IDE1OC41dDUwIDIwNnQxOS41IDI2MHEwIDE1MiAxMTcgMjgyLjV0MzA3IDE1OC41cS04IDE5IC04IDM5cTAgNDAgMjggNjh0NjggMjh0NjggLTI4dDI4IC02OHEwIC0yMCAtOCAtMzlxMTkwIC0yOCAzMDcgLTE1OC41CnQxMTcgLTI4Mi41cTAgLTEzOSAxOS41IC0yNjB0NTAgLTIwNnQ3NC41IC0xNTguNXQ4NSAtMTE5LjV0OTEgLTg4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjZXJ0aWZpY2F0ZSIgdW5pY29kZT0iJiN4ZjBhMzsiIApkPSJNMTM3NiA2NDBsMTM4IC0xMzVxMzAgLTI4IDIwIC03MHEtMTIgLTQxIC01MiAtNTFsLTE4OCAtNDhsNTMgLTE4NnExMiAtNDEgLTE5IC03MHEtMjkgLTMxIC03MCAtMTlsLTE4NiA1M2wtNDggLTE4OHEtMTAgLTQwIC01MSAtNTJxLTEyIC0yIC0xOSAtMnEtMzEgMCAtNTEgMjJsLTEzNSAxMzhsLTEzNSAtMTM4cS0yOCAtMzAgLTcwIC0yMHEtNDEgMTEgLTUxIDUybC00OCAxODhsLTE4NiAtNTNxLTQxIC0xMiAtNzAgMTlxLTMxIDI5IC0xOSA3MApsNTMgMTg2bC0xODggNDhxLTQwIDEwIC01MiA1MXEtMTAgNDIgMjAgNzBsMTM4IDEzNWwtMTM4IDEzNXEtMzAgMjggLTIwIDcwcTEyIDQxIDUyIDUxbDE4OCA0OGwtNTMgMTg2cS0xMiA0MSAxOSA3MHEyOSAzMSA3MCAxOWwxODYgLTUzbDQ4IDE4OHExMCA0MSA1MSA1MXE0MSAxMiA3MCAtMTlsMTM1IC0xMzlsMTM1IDEzOXEyOSAzMCA3MCAxOXE0MSAtMTAgNTEgLTUxbDQ4IC0xODhsMTg2IDUzcTQxIDEyIDcwIC0xOXEzMSAtMjkgMTkgLTcwCmwtNTMgLTE4NmwxODggLTQ4cTQwIC0xMCA1MiAtNTFxMTAgLTQyIC0yMCAtNzB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImhhbmRfcmlnaHQiIHVuaWNvZGU9IiYjeGYwYTQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0yNTYgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTY2NCA3NjhxMCA1MSAtMzkgODkuNXQtODkgMzguNWgtNTc2cTAgMjAgMTUgNDguNXQzMyA1NXQzMyA2OHQxNSA4NC41cTAgNjcgLTQ0LjUgOTcuNXQtMTE1LjUgMzAuNXEtMjQgMCAtOTAgLTEzOXEtMjQgLTQ0IC0zNyAtNjVxLTQwIC02NCAtMTEyIC0xNDVxLTcxIC04MSAtMTAxIC0xMDYKcS02OSAtNTcgLTE0MCAtNTdoLTMydi02NDBoMzJxNzIgMCAxNjcgLTMydDE5My41IC02NHQxNzkuNSAtMzJxMTg5IDAgMTg5IDE2N3EwIDI2IC01IDU2cTMwIDE2IDQ3LjUgNTIuNXQxNy41IDczLjV0LTE4IDY5cTUzIDUwIDUzIDExOXEwIDI1IC0xMCA1NS41dC0yNSA0Ny41aDMzMXE1MiAwIDkwIDM4dDM4IDkwek0xNzkyIDc2OXEwIC0xMDUgLTc1LjUgLTE4MXQtMTgwLjUgLTc2aC0xNjlxLTQgLTYyIC0zNyAtMTE5cTMgLTIxIDMgLTQzCnEwIC0xMDEgLTYwIC0xNzhxMSAtMTM5IC04NSAtMjE5LjV0LTIyNyAtODAuNXEtMTMzIDAgLTMyMiA2OXEtMTY0IDU5IC0yMjMgNTloLTI4OHEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV2NjQwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNWgyODhxMTAgMCAyMS41IDQuNXQyMy41IDE0dDIyLjUgMTh0MjQgMjIuNXQyMC41IDIxLjV0MTkgMjEuNXQxNCAxN3E2NSA3NCAxMDAgMTI5cTEzIDIxIDMzIDYydDM3IDcydDQwLjUgNjN0NTUgNDkuNQp0NjkuNSAxNy41cTEyNSAwIDIwNi41IC02N3Q4MS41IC0xODlxMCAtNjggLTIyIC0xMjhoMzc0cTEwNCAwIDE4MCAtNzZ0NzYgLTE3OXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGFuZF9sZWZ0IiB1bmljb2RlPSImI3hmMGE1OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTM3NiAxMjhoMzJ2NjQwaC0zMnEtMzUgMCAtNjcuNSAxMnQtNjIuNSAzN3QtNTAgNDZ0LTQ5IDU0cS04IDkgLTEyIDE0cS03MiA4MSAtMTEyIDE0NXEtMTQgMjIgLTM4IDY4cS0xIDMgLTEwLjUgMjIuNXQtMTguNSAzNnQtMjAgMzUuNXQtMjEuNSAzMC41dC0xOC41IDExLjVxLTcxIDAgLTExNS41IC0zMC41dC00NC41IC05Ny41cTAgLTQzIDE1IC04NC41dDMzIC02OHQzMyAtNTV0MTUgLTQ4LjVoLTU3NnEtNTAgMCAtODkgLTM4LjUKdC0zOSAtODkuNXEwIC01MiAzOCAtOTB0OTAgLTM4aDMzMXEtMTUgLTE3IC0yNSAtNDcuNXQtMTAgLTU1LjVxMCAtNjkgNTMgLTExOXEtMTggLTMyIC0xOCAtNjl0MTcuNSAtNzMuNXQ0Ny41IC01Mi41cS00IC0yNCAtNCAtNTZxMCAtODUgNDguNSAtMTI2dDEzNS41IC00MXE4NCAwIDE4MyAzMnQxOTQgNjR0MTY3IDMyek0xNjY0IDE5MnEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6Ck0xNzkyIDc2OHYtNjQwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC0yODhxLTU5IDAgLTIyMyAtNTlxLTE5MCAtNjkgLTMxNyAtNjlxLTE0MiAwIC0yMzAgNzcuNXQtODcgMjE3LjVsMSA1cS02MSA3NiAtNjEgMTc4cTAgMjIgMyA0M3EtMzMgNTcgLTM3IDExOWgtMTY5cS0xMDUgMCAtMTgwLjUgNzZ0LTc1LjUgMTgxcTAgMTAzIDc2IDE3OXQxODAgNzZoMzc0cS0yMiA2MCAtMjIgMTI4cTAgMTIyIDgxLjUgMTg5dDIwNi41IDY3CnEzOCAwIDY5LjUgLTE3LjV0NTUgLTQ5LjV0NDAuNSAtNjN0MzcgLTcydDMzIC02MnEzNSAtNTUgMTAwIC0xMjlxMiAtMyAxNCAtMTd0MTkgLTIxLjV0MjAuNSAtMjEuNXQyNCAtMjIuNXQyMi41IC0xOHQyMy41IC0xNHQyMS41IC00LjVoMjg4cTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoYW5kX3VwIiB1bmljb2RlPSImI3hmMGE2OyIgCmQ9Ik0xMjgwIC02NHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE0MDggNzAwcTAgMTg5IC0xNjcgMTg5cS0yNiAwIC01NiAtNXEtMTYgMzAgLTUyLjUgNDcuNXQtNzMuNSAxNy41dC02OSAtMThxLTUwIDUzIC0xMTkgNTNxLTI1IDAgLTU1LjUgLTEwdC00Ny41IC0yNXYzMzFxMCA1MiAtMzggOTB0LTkwIDM4cS01MSAwIC04OS41IC0zOXQtMzguNSAtODl2LTU3NgpxLTIwIDAgLTQ4LjUgMTV0LTU1IDMzdC02OCAzM3QtODQuNSAxNXEtNjcgMCAtOTcuNSAtNDQuNXQtMzAuNSAtMTE1LjVxMCAtMjQgMTM5IC05MHE0NCAtMjQgNjUgLTM3cTY0IC00MCAxNDUgLTExMnE4MSAtNzEgMTA2IC0xMDFxNTcgLTY5IDU3IC0xNDB2LTMyaDY0MHYzMnEwIDcyIDMyIDE2N3Q2NCAxOTMuNXQzMiAxNzkuNXpNMTUzNiA3MDVxMCAtMTMzIC02OSAtMzIycS01OSAtMTY0IC01OSAtMjIzdi0yODhxMCAtNTMgLTM3LjUgLTkwLjUKdC05MC41IC0zNy41aC02NDBxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djI4OHEwIDEwIC00LjUgMjEuNXQtMTQgMjMuNXQtMTggMjIuNXQtMjIuNSAyNHQtMjEuNSAyMC41dC0yMS41IDE5dC0xNyAxNHEtNzQgNjUgLTEyOSAxMDBxLTIxIDEzIC02MiAzM3QtNzIgMzd0LTYzIDQwLjV0LTQ5LjUgNTV0LTE3LjUgNjkuNXEwIDEyNSA2NyAyMDYuNXQxODkgODEuNXE2OCAwIDEyOCAtMjJ2Mzc0cTAgMTA0IDc2IDE4MHQxNzkgNzYKcTEwNSAwIDE4MSAtNzUuNXQ3NiAtMTgwLjV2LTE2OXE2MiAtNCAxMTkgLTM3cTIxIDMgNDMgM3ExMDEgMCAxNzggLTYwcTEzOSAxIDIxOS41IC04NXQ4MC41IC0yMjd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImhhbmRfZG93biIgdW5pY29kZT0iJiN4ZjBhNzsiIApkPSJNMTQwOCA1NzZxMCA4NCAtMzIgMTgzdC02NCAxOTR0LTMyIDE2N3YzMmgtNjQwdi0zMnEwIC0zNSAtMTIgLTY3LjV0LTM3IC02Mi41dC00NiAtNTB0LTU0IC00OXEtOSAtOCAtMTQgLTEycS04MSAtNzIgLTE0NSAtMTEycS0yMiAtMTQgLTY4IC0zOHEtMyAtMSAtMjIuNSAtMTAuNXQtMzYgLTE4LjV0LTM1LjUgLTIwdC0zMC41IC0yMS41dC0xMS41IC0xOC41cTAgLTcxIDMwLjUgLTExNS41dDk3LjUgLTQ0LjVxNDMgMCA4NC41IDE1dDY4IDMzCnQ1NSAzM3Q0OC41IDE1di01NzZxMCAtNTAgMzguNSAtODl0ODkuNSAtMzlxNTIgMCA5MCAzOHQzOCA5MHYzMzFxNDYgLTM1IDEwMyAtMzVxNjkgMCAxMTkgNTNxMzIgLTE4IDY5IC0xOHQ3My41IDE3LjV0NTIuNSA0Ny41cTI0IC00IDU2IC00cTg1IDAgMTI2IDQ4LjV0NDEgMTM1LjV6TTEyODAgMTM0NHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE1MzYgNTgwCnEwIC0xNDIgLTc3LjUgLTIzMHQtMjE3LjUgLTg3bC01IDFxLTc2IC02MSAtMTc4IC02MXEtMjIgMCAtNDMgM3EtNTQgLTMwIC0xMTkgLTM3di0xNjlxMCAtMTA1IC03NiAtMTgwLjV0LTE4MSAtNzUuNXEtMTAzIDAgLTE3OSA3NnQtNzYgMTgwdjM3NHEtNTQgLTIyIC0xMjggLTIycS0xMjEgMCAtMTg4LjUgODEuNXQtNjcuNSAyMDYuNXEwIDM4IDE3LjUgNjkuNXQ0OS41IDU1dDYzIDQwLjV0NzIgMzd0NjIgMzNxNTUgMzUgMTI5IDEwMApxMyAyIDE3IDE0dDIxLjUgMTl0MjEuNSAyMC41dDIyLjUgMjR0MTggMjIuNXQxNCAyMy41dDQuNSAyMS41djI4OHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjVoNjQwcTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41di0yODhxMCAtNTkgNTkgLTIyM3E2OSAtMTkwIDY5IC0zMTd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9hcnJvd19sZWZ0IiB1bmljb2RlPSImI3hmMGE4OyIgCmQ9Ik0xMjgwIDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC01MDJsMTg5IDE4OXExOSAxOSAxOSA0NXQtMTkgNDVsLTkxIDkxcS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtMzYyIC0zNjJsLTkxIC05MXEtMTggLTE4IC0xOCAtNDV0MTggLTQ1bDkxIC05MWwzNjIgLTM2MnExOCAtMTggNDUgLTE4dDQ1IDE4bDkxIDkxcTE4IDE4IDE4IDQ1dC0xOCA0NWwtMTg5IDE4OWg1MDJxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDAKcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGVfYXJyb3dfcmlnaHQiIHVuaWNvZGU9IiYjeGYwYTk7IiAKZD0iTTEyODUgNjQwcTAgMjcgLTE4IDQ1bC05MSA5MWwtMzYyIDM2MnEtMTggMTggLTQ1IDE4dC00NSAtMThsLTkxIC05MXEtMTggLTE4IC0xOCAtNDV0MTggLTQ1bDE4OSAtMTg5aC01MDJxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg1MDJsLTE4OSAtMTg5cS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsOTEgLTkxcTE4IC0xOCA0NSAtMTh0NDUgMThsMzYyIDM2Mmw5MSA5MXExOCAxOCAxOCA0NXpNMTUzNiA2NDAKcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGVfYXJyb3dfdXAiIHVuaWNvZGU9IiYjeGYwYWE7IiAKZD0iTTEyODQgNjQxcTAgMjcgLTE4IDQ1bC0zNjIgMzYybC05MSA5MXEtMTggMTggLTQ1IDE4dC00NSAtMThsLTkxIC05MWwtMzYyIC0zNjJxLTE4IC0xOCAtMTggLTQ1dDE4IC00NWw5MSAtOTFxMTggLTE4IDQ1IC0xOHQ0NSAxOGwxODkgMTg5di01MDJxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXY1MDJsMTg5IC0xODlxMTkgLTE5IDQ1IC0xOXQ0NSAxOWw5MSA5MXExOCAxOCAxOCA0NXpNMTUzNiA2NDAKcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGVfYXJyb3dfZG93biIgdW5pY29kZT0iJiN4ZjBhYjsiIApkPSJNMTI4NCA2MzlxMCAyNyAtMTggNDVsLTkxIDkxcS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtMTg5IC0xODl2NTAycTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtNTAybC0xODkgMTg5cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtOTEgLTkxcS0xOCAtMTggLTE4IC00NXQxOCAtNDVsMzYyIC0zNjJsOTEgLTkxcTE4IC0xOCA0NSAtMTh0NDUgMThsOTEgOTFsMzYyIDM2MnExOCAxOCAxOCA0NXpNMTUzNiA2NDAKcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnbG9iZSIgdW5pY29kZT0iJiN4ZjBhYzsiIApkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNMTA0MiA4ODdxLTIgLTEgLTkuNSAtOS41dC0xMy41IC05LjVxMiAwIDQuNSA1dDUgMTF0My41IDdxNiA3IDIyIDE1cTE0IDYgNTIgMTJxMzQgOCA1MSAtMTEKcS0yIDIgOS41IDEzdDE0LjUgMTJxMyAyIDE1IDQuNXQxNSA3LjVsMiAyMnEtMTIgLTEgLTE3LjUgN3QtNi41IDIxcTAgLTIgLTYgLThxMCA3IC00LjUgOHQtMTEuNSAtMXQtOSAtMXEtMTAgMyAtMTUgNy41dC04IDE2LjV0LTQgMTVxLTIgNSAtOS41IDExdC05LjUgMTBxLTEgMiAtMi41IDUuNXQtMyA2LjV0LTQgNS41dC01LjUgMi41dC03IC01dC03LjUgLTEwdC00LjUgLTVxLTMgMiAtNiAxLjV0LTQuNSAtMXQtNC41IC0zdC01IC0zLjUKcS0zIC0yIC04LjUgLTN0LTguNSAtMnExNSA1IC0xIDExcS0xMCA0IC0xNiAzcTkgNCA3LjUgMTJ0LTguNSAxNGg1cS0xIDQgLTguNSA4LjV0LTE3LjUgOC41dC0xMyA2cS04IDUgLTM0IDkuNXQtMzMgMC41cS01IC02IC00LjUgLTEwLjV0NCAtMTR0My41IC0xMi41cTEgLTYgLTUuNSAtMTN0LTYuNSAtMTJxMCAtNyAxNCAtMTUuNXQxMCAtMjEuNXEtMyAtOCAtMTYgLTE2dC0xNiAtMTJxLTUgLTggLTEuNSAtMTguNXQxMC41IC0xNi41CnEyIC0yIDEuNSAtNHQtMy41IC00LjV0LTUuNSAtNHQtNi41IC0zLjVsLTMgLTJxLTExIC01IC0yMC41IDZ0LTEzLjUgMjZxLTcgMjUgLTE2IDMwcS0yMyA4IC0yOSAtMXEtNSAxMyAtNDEgMjZxLTI1IDkgLTU4IDRxNiAxIDAgMTVxLTcgMTUgLTE5IDEycTMgNiA0IDE3LjV0MSAxMy41cTMgMTMgMTIgMjNxMSAxIDcgOC41dDkuNSAxMy41dDAuNSA2cTM1IC00IDUwIDExcTUgNSAxMS41IDE3dDEwLjUgMTdxOSA2IDE0IDUuNXQxNC41IC01LjUKdDE0LjUgLTVxMTQgLTEgMTUuNSAxMXQtNy41IDIwcTEyIC0xIDMgMTdxLTQgNyAtOCA5cS0xMiA0IC0yNyAtNXEtOCAtNCAyIC04cS0xIDEgLTkuNSAtMTAuNXQtMTYuNSAtMTcuNXQtMTYgNXEtMSAxIC01LjUgMTMuNXQtOS41IDEzLjVxLTggMCAtMTYgLTE1cTMgOCAtMTEgMTV0LTI0IDhxMTkgMTIgLTggMjdxLTcgNCAtMjAuNSA1dC0xOS41IC00cS01IC03IC01LjUgLTExLjV0NSAtOHQxMC41IC01LjV0MTEuNSAtNHQ4LjUgLTMKcTE0IC0xMCA4IC0xNHEtMiAtMSAtOC41IC0zLjV0LTExLjUgLTQuNXQtNiAtNHEtMyAtNCAwIC0xNHQtMiAtMTRxLTUgNSAtOSAxNy41dC03IDE2LjVxNyAtOSAtMjUgLTZsLTEwIDFxLTQgMCAtMTYgLTJ0LTIwLjUgLTF0LTEzLjUgOHEtNCA4IDAgMjBxMSA0IDQgMnEtNCAzIC0xMSA5LjV0LTEwIDguNXEtNDYgLTE1IC05NCAtNDFxNiAtMSAxMiAxcTUgMiAxMyA2LjV0MTAgNS41cTM0IDE0IDQyIDdsNSA1cTE0IC0xNiAyMCAtMjUKcS03IDQgLTMwIDFxLTIwIC02IC0yMiAtMTJxNyAtMTIgNSAtMThxLTQgMyAtMTEuNSAxMHQtMTQuNSAxMXQtMTUgNXEtMTYgMCAtMjIgLTFxLTE0NiAtODAgLTIzNSAtMjIycTcgLTcgMTIgLThxNCAtMSA1IC05dDIuNSAtMTF0MTEuNSAzcTkgLTggMyAtMTlxMSAxIDQ0IC0yN3ExOSAtMTcgMjEgLTIxcTMgLTExIC0xMCAtMThxLTEgMiAtOSA5dC05IDRxLTMgLTUgMC41IC0xOC41dDEwLjUgLTEyLjVxLTcgMCAtOS41IC0xNnQtMi41IC0zNS41CnQtMSAtMjMuNWwyIC0xcS0zIC0xMiA1LjUgLTM0LjV0MjEuNSAtMTkuNXEtMTMgLTMgMjAgLTQzcTYgLTggOCAtOXEzIC0yIDEyIC03LjV0MTUgLTEwdDEwIC0xMC41cTQgLTUgMTAgLTIyLjV0MTQgLTIzLjVxLTIgLTYgOS41IC0yMHQxMC41IC0yM3EtMSAwIC0yLjUgLTF0LTIuNSAtMXEzIC03IDE1LjUgLTE0dDE1LjUgLTEzcTEgLTMgMiAtMTB0MyAtMTF0OCAtMnEyIDIwIC0yNCA2MnEtMTUgMjUgLTE3IDI5cS0zIDUgLTUuNSAxNS41CnQtNC41IDE0LjVxMiAwIDYgLTEuNXQ4LjUgLTMuNXQ3LjUgLTR0MiAtM3EtMyAtNyAyIC0xNy41dDEyIC0xOC41dDE3IC0xOXQxMiAtMTNxNiAtNiAxNCAtMTkuNXQwIC0xMy41cTkgMCAyMCAtMTAuNXQxNyAtMTkuNXE1IC04IDggLTI2dDUgLTI0cTIgLTcgOC41IC0xMy41dDEyLjUgLTkuNWwxNiAtOHQxMyAtN3E1IC0yIDE4LjUgLTEwLjV0MjEuNSAtMTEuNXExMCAtNCAxNiAtNHQxNC41IDIuNXQxMy41IDMuNXExNSAyIDI5IC0xNXQyMSAtMjEKcTM2IC0xOSA1NSAtMTFxLTIgLTEgMC41IC03LjV0OCAtMTUuNXQ5IC0xNC41dDUuNSAtOC41cTUgLTYgMTggLTE1dDE4IC0xNXE2IDQgNyA5cS0zIC04IDcgLTIwdDE4IC0xMHExNCAzIDE0IDMycS0zMSAtMTUgLTQ5IDE4cTAgMSAtMi41IDUuNXQtNCA4LjV0LTIuNSA4LjV0MCA3LjV0NSAzcTkgMCAxMCAzLjV0LTIgMTIuNXQtNCAxM3EtMSA4IC0xMSAyMHQtMTIgMTVxLTUgLTkgLTE2IC04dC0xNiA5cTAgLTEgLTEuNSAtNS41dC0xLjUgLTYuNQpxLTEzIDAgLTE1IDFxMSAzIDIuNSAxNy41dDMuNSAyMi41cTEgNCA1LjUgMTJ0Ny41IDE0LjV0NCAxMi41dC00LjUgOS41dC0xNy41IDIuNXEtMTkgLTEgLTI2IC0yMHEtMSAtMyAtMyAtMTAuNXQtNSAtMTEuNXQtOSAtN3EtNyAtMyAtMjQgLTJ0LTI0IDVxLTEzIDggLTIyLjUgMjl0LTkuNSAzN3EwIDEwIDIuNSAyNi41dDMgMjV0LTUuNSAyNC41cTMgMiA5IDkuNXQxMCAxMC41cTIgMSA0LjUgMS41dDQuNSAwdDQgMS41dDMgNnEtMSAxIC00IDMKcS0zIDMgLTQgM3E3IC0zIDI4LjUgMS41dDI3LjUgLTEuNXExNSAtMTEgMjIgMnEwIDEgLTIuNSA5LjV0LTAuNSAxMy41cTUgLTI3IDI5IC05cTMgLTMgMTUuNSAtNXQxNy41IC01cTMgLTIgNyAtNS41dDUuNSAtNC41dDUgMC41dDguNSA2LjVxMTAgLTE0IDEyIC0yNHExMSAtNDAgMTkgLTQ0cTcgLTMgMTEgLTJ0NC41IDkuNXQwIDE0dC0xLjUgMTIuNWwtMSA4djE4bC0xIDhxLTE1IDMgLTE4LjUgMTJ0MS41IDE4LjV0MTUgMTguNXExIDEgOCAzLjUKdDE1LjUgNi41dDEyLjUgOHEyMSAxOSAxNSAzNXE3IDAgMTEgOXEtMSAwIC01IDN0LTcuNSA1dC00LjUgMnE5IDUgMiAxNnE1IDMgNy41IDExdDcuNSAxMHE5IC0xMiAyMSAtMnE4IDggMSAxNnE1IDcgMjAuNSAxMC41dDE4LjUgOS41cTcgLTIgOCAydDEgMTJ0MyAxMnE0IDUgMTUgOXQxMyA1bDE3IDExcTMgNCAwIDRxMTggLTIgMzEgMTFxMTAgMTEgLTYgMjBxMyA2IC0zIDkuNXQtMTUgNS41cTMgMSAxMS41IDAuNXQxMC41IDEuNQpxMTUgMTAgLTcgMTZxLTE3IDUgLTQzIC0xMnpNODc5IDEwcTIwNiAzNiAzNTEgMTg5cS0zIDMgLTEyLjUgNC41dC0xMi41IDMuNXEtMTggNyAtMjQgOHExIDcgLTIuNSAxM3QtOCA5dC0xMi41IDh0LTExIDdxLTIgMiAtNyA2dC03IDUuNXQtNy41IDQuNXQtOC41IDJ0LTEwIC0xbC0zIC0xcS0zIC0xIC01LjUgLTIuNXQtNS41IC0zdC00IC0zdDAgLTIuNXEtMjEgMTcgLTM2IDIycS01IDEgLTExIDUuNXQtMTAuNSA3dC0xMCAxLjV0LTExLjUgLTcKcS01IC01IC02IC0xNXQtMiAtMTNxLTcgNSAwIDE3LjV0MiAxOC41cS0zIDYgLTEwLjUgNC41dC0xMiAtNC41dC0xMS41IC04LjV0LTkgLTYuNXQtOC41IC01LjV0LTguNSAtNy41cS0zIC00IC02IC0xMnQtNSAtMTFxLTIgNCAtMTEuNSA2LjV0LTkuNSA1LjVxMiAtMTAgNCAtMzV0NSAtMzhxNyAtMzEgLTEyIC00OHEtMjcgLTI1IC0yOSAtNDBxLTQgLTIyIDEyIC0yNnEwIC03IC04IC0yMC41dC03IC0yMS41cTAgLTYgMiAtMTZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9IndyZW5jaCIgdW5pY29kZT0iJiN4ZjBhZDsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTM4NCA2NHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTEwMjggNDg0bC02ODIgLTY4MnEtMzcgLTM3IC05MCAtMzdxLTUyIDAgLTkxIDM3bC0xMDYgMTA4cS0zOCAzNiAtMzggOTBxMCA1MyAzOCA5MWw2ODEgNjgxcTM5IC05OCAxMTQuNSAtMTczLjV0MTczLjUgLTExNC41ek0xNjYyIDkxOXEwIC0zOSAtMjMgLTEwNnEtNDcgLTEzNCAtMTY0LjUgLTIxNy41CnQtMjU4LjUgLTgzLjVxLTE4NSAwIC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjV0MTMxLjUgMzE2LjV0MzE2LjUgMTMxLjVxNTggMCAxMjEuNSAtMTYuNXQxMDcuNSAtNDYuNXExNiAtMTEgMTYgLTI4dC0xNiAtMjhsLTI5MyAtMTY5di0yMjRsMTkzIC0xMDdxNSAzIDc5IDQ4LjV0MTM1LjUgODF0NzAuNSAzNS41cTE1IDAgMjMuNSAtMTB0OC41IC0yNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGFza3MiIHVuaWNvZGU9IiYjeGYwYWU7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMDI0IDEyOGg2NDB2MTI4aC02NDB2LTEyOHpNNjQwIDY0MGgxMDI0djEyOGgtMTAyNHYtMTI4ek0xMjgwIDExNTJoMzg0djEyOGgtMzg0di0xMjh6TTE3OTIgMzIwdi0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MjU2cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgODMydi0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOQp0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDEzNDR2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE2NjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYyNTZxMCAyNiAxOSA0NXQ0NSAxOWgxNjY0cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsdGVyIiB1bmljb2RlPSImI3hmMGIwOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTQwMyAxMjQxcTE3IC00MSAtMTQgLTcwbC00OTMgLTQ5M3YtNzQycTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDUgMTlsLTI1NiAyNTZxLTE5IDE5IC0xOSA0NXY0ODZsLTQ5MyA0OTNxLTMxIDI5IC0xNCA3MHExNyAzOSA1OSAzOWgxMjgwcTQyIDAgNTkgLTM5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJicmllZmNhc2UiIHVuaWNvZGU9IiYjeGYwYjE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik02NDAgMTI4MGg1MTJ2MTI4aC01MTJ2LTEyOHpNMTc5MiA2NDB2LTQ4MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTQ3MnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2NDgwaDY3MnYtMTYwcTAgLTI2IDE5IC00NXQ0NSAtMTloMzIwcTI2IDAgNDUgMTl0MTkgNDV2MTYwaDY3MnpNMTAyNCA2NDB2LTEyOGgtMjU2djEyOGgyNTZ6TTE3OTIgMTEyMHYtMzg0aC0xNzkydjM4NHEwIDY2IDQ3IDExM3QxMTMgNDdoMzUydjE2MHEwIDQwIDI4IDY4CnQ2OCAyOGg1NzZxNDAgMCA2OCAtMjh0MjggLTY4di0xNjBoMzUycTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmdWxsc2NyZWVuIiB1bmljb2RlPSImI3hmMGIyOyIgCmQ9Ik0xMjgzIDk5NWwtMzU1IC0zNTVsMzU1IC0zNTVsMTQ0IDE0NHEyOSAzMSA3MCAxNHEzOSAtMTcgMzkgLTU5di00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC00NDhxLTQyIDAgLTU5IDQwcS0xNyAzOSAxNCA2OWwxNDQgMTQ0bC0zNTUgMzU1bC0zNTUgLTM1NWwxNDQgLTE0NHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDE0NCAtMTQ0CmwzNTUgMzU1bC0zNTUgMzU1bC0xNDQgLTE0NHEtMTkgLTE5IC00NSAtMTlxLTEyIDAgLTI0IDVxLTQwIDE3IC00MCA1OXY0NDhxMCAyNiAxOSA0NXQ0NSAxOWg0NDhxNDIgMCA1OSAtNDBxMTcgLTM5IC0xNCAtNjlsLTE0NCAtMTQ0bDM1NSAtMzU1bDM1NSAzNTVsLTE0NCAxNDRxLTMxIDMwIC0xNCA2OXExNyA0MCA1OSA0MGg0NDhxMjYgMCA0NSAtMTl0MTkgLTQ1di00NDhxMCAtNDIgLTM5IC01OXEtMTMgLTUgLTI1IC01cS0yNiAwIC00NSAxOXoKIiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Imdyb3VwIiB1bmljb2RlPSImI3hmMGMwOyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNNTkzIDY0MHEtMTYyIC01IC0yNjUgLTEyOGgtMTM0cS04MiAwIC0xMzggNDAuNXQtNTYgMTE4LjVxMCAzNTMgMTI0IDM1M3E2IDAgNDMuNSAtMjF0OTcuNSAtNDIuNXQxMTkgLTIxLjVxNjcgMCAxMzMgMjNxLTUgLTM3IC01IC02NnEwIC0xMzkgODEgLTI1NnpNMTY2NCAzcTAgLTEyMCAtNzMgLTE4OS41dC0xOTQgLTY5LjVoLTg3NHEtMTIxIDAgLTE5NCA2OS41dC03MyAxODkuNXEwIDUzIDMuNSAxMDMuNXQxNCAxMDl0MjYuNSAxMDguNQp0NDMgOTcuNXQ2MiA4MXQ4NS41IDUzLjV0MTExLjUgMjBxMTAgMCA0MyAtMjEuNXQ3MyAtNDh0MTA3IC00OHQxMzUgLTIxLjV0MTM1IDIxLjV0MTA3IDQ4dDczIDQ4dDQzIDIxLjVxNjEgMCAxMTEuNSAtMjB0ODUuNSAtNTMuNXQ2MiAtODF0NDMgLTk3LjV0MjYuNSAtMTA4LjV0MTQgLTEwOXQzLjUgLTEwMy41ek02NDAgMTI4MHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxdDc1IDE4MXQxODEgNzV0MTgxIC03NQp0NzUgLTE4MXpNMTM0NCA4OTZxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXQtMjcxLjUgMTEyLjV0LTExMi41IDI3MS41dDExMi41IDI3MS41dDI3MS41IDExMi41dDI3MS41IC0xMTIuNXQxMTIuNSAtMjcxLjV6TTE5MjAgNjcxcTAgLTc4IC01NiAtMTE4LjV0LTEzOCAtNDAuNWgtMTM0cS0xMDMgMTIzIC0yNjUgMTI4cTgxIDExNyA4MSAyNTZxMCAyOSAtNSA2NnE2NiAtMjMgMTMzIC0yM3E1OSAwIDExOSAyMS41dDk3LjUgNDIuNQp0NDMuNSAyMXExMjQgMCAxMjQgLTM1M3pNMTc5MiAxMjgwcTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODF0NzUgMTgxdDE4MSA3NXQxODEgLTc1dDc1IC0xODF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImxpbmsiIHVuaWNvZGU9IiYjeGYwYzE7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNDU2IDMyMHEwIDQwIC0yOCA2OGwtMjA4IDIwOHEtMjggMjggLTY4IDI4cS00MiAwIC03MiAtMzJxMyAtMyAxOSAtMTguNXQyMS41IC0yMS41dDE1IC0xOXQxMyAtMjUuNXQzLjUgLTI3LjVxMCAtNDAgLTI4IC02OHQtNjggLTI4cS0xNSAwIC0yNy41IDMuNXQtMjUuNSAxM3QtMTkgMTV0LTIxLjUgMjEuNXQtMTguNSAxOXEtMzMgLTMxIC0zMyAtNzNxMCAtNDAgMjggLTY4bDIwNiAtMjA3cTI3IC0yNyA2OCAtMjdxNDAgMCA2OCAyNgpsMTQ3IDE0NnEyOCAyOCAyOCA2N3pNNzUzIDEwMjVxMCA0MCAtMjggNjhsLTIwNiAyMDdxLTI4IDI4IC02OCAyOHEtMzkgMCAtNjggLTI3bC0xNDcgLTE0NnEtMjggLTI4IC0yOCAtNjdxMCAtNDAgMjggLTY4bDIwOCAtMjA4cTI3IC0yNyA2OCAtMjdxNDIgMCA3MiAzMXEtMyAzIC0xOSAxOC41dC0yMS41IDIxLjV0LTE1IDE5dC0xMyAyNS41dC0zLjUgMjcuNXEwIDQwIDI4IDY4dDY4IDI4cTE1IDAgMjcuNSAtMy41dDI1LjUgLTEzdDE5IC0xNQp0MjEuNSAtMjEuNXQxOC41IC0xOXEzMyAzMSAzMyA3M3pNMTY0OCAzMjBxMCAtMTIwIC04NSAtMjAzbC0xNDcgLTE0NnEtODMgLTgzIC0yMDMgLTgzcS0xMjEgMCAtMjA0IDg1bC0yMDYgMjA3cS04MyA4MyAtODMgMjAzcTAgMTIzIDg4IDIwOWwtODggODhxLTg2IC04OCAtMjA4IC04OHEtMTIwIDAgLTIwNCA4NGwtMjA4IDIwOHEtODQgODQgLTg0IDIwNHQ4NSAyMDNsMTQ3IDE0NnE4MyA4MyAyMDMgODNxMTIxIDAgMjA0IC04NWwyMDYgLTIwNwpxODMgLTgzIDgzIC0yMDNxMCAtMTIzIC04OCAtMjA5bDg4IC04OHE4NiA4OCAyMDggODhxMTIwIDAgMjA0IC04NGwyMDggLTIwOHE4NCAtODQgODQgLTIwNHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2xvdWQiIHVuaWNvZGU9IiYjeGYwYzI7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik0xOTIwIDM4NHEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41aC0xMDg4cS0xODUgMCAtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTMyIDcxIDI0MS41dDE4NyAxNjMuNXEtMiAyOCAtMiA0M3EwIDIxMiAxNTAgMzYydDM2MiAxNTBxMTU4IDAgMjg2LjUgLTg4dDE4Ny41IC0yMzBxNzAgNjIgMTY2IDYycTEwNiAwIDE4MSAtNzV0NzUgLTE4MXEwIC03NSAtNDEgLTEzOHExMjkgLTMwIDIxMyAtMTM0LjV0ODQgLTIzOS41egoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmVha2VyIiB1bmljb2RlPSImI3hmMGMzOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTUyNyA4OHE1NiAtODkgMjEuNSAtMTUyLjV0LTE0MC41IC02My41aC0xMTUycS0xMDYgMCAtMTQwLjUgNjMuNXQyMS41IDE1Mi41bDUwMyA3OTN2Mzk5aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDUxMnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC02NHYtMzk5ek03NDggODEzbC0yNzIgLTQyOWg3MTJsLTI3MiA0MjlsLTIwIDMxdjM3djM5OWgtMTI4di0zOTl2LTM3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjdXQiIHVuaWNvZGU9IiYjeGYwYzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik05NjAgNjQwcTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTI2MCA1NzZsNTA3IC0zOThxMjggLTIwIDI1IC01NnEtNSAtMzUgLTM1IC01MWwtMTI4IC02NHEtMTMgLTcgLTI5IC03cS0xNyAwIC0zMSA4bC02OTAgMzg3bC0xMTAgLTY2cS04IC00IC0xMiAtNXExNCAtNDkgMTAgLTk3cS03IC03NyAtNTYgLTE0Ny41dC0xMzIgLTEyMy41cS0xMzIgLTg0IC0yNzcgLTg0CnEtMTM2IDAgLTIyMiA3OHEtOTAgODQgLTc5IDIwN3E3IDc2IDU2IDE0N3QxMzEgMTI0cTEzMiA4NCAyNzggODRxODMgMCAxNTEgLTMxcTkgMTMgMjIgMjJsMTIyIDczbC0xMjIgNzNxLTEzIDkgLTIyIDIycS02OCAtMzEgLTE1MSAtMzFxLTE0NiAwIC0yNzggODRxLTgyIDUzIC0xMzEgMTI0dC01NiAxNDdxLTUgNTkgMTUuNSAxMTN0NjMuNSA5M3E4NSA3OSAyMjIgNzlxMTQ1IDAgMjc3IC04NHE4MyAtNTIgMTMyIC0xMjN0NTYgLTE0OApxNCAtNDggLTEwIC05N3E0IC0xIDEyIC01bDExMCAtNjZsNjkwIDM4N3ExNCA4IDMxIDhxMTYgMCAyOSAtN2wxMjggLTY0cTMwIC0xNiAzNSAtNTFxMyAtMzYgLTI1IC01NnpNNTc5IDgzNnE0NiA0MiAyMSAxMDh0LTEwNiAxMTdxLTkyIDU5IC0xOTIgNTlxLTc0IDAgLTExMyAtMzZxLTQ2IC00MiAtMjEgLTEwOHQxMDYgLTExN3E5MiAtNTkgMTkyIC01OXE3NCAwIDExMyAzNnpNNDk0IDkxcTgxIDUxIDEwNiAxMTd0LTIxIDEwOApxLTM5IDM2IC0xMTMgMzZxLTEwMCAwIC0xOTIgLTU5cS04MSAtNTEgLTEwNiAtMTE3dDIxIC0xMDhxMzkgLTM2IDExMyAtMzZxMTAwIDAgMTkyIDU5ek02NzIgNzA0bDk2IC01OHYxMXEwIDM2IDMzIDU2bDE0IDhsLTc5IDQ3bC0yNiAtMjZxLTMgLTMgLTEwIC0xMXQtMTIgLTEycS0yIC0yIC00IC0zLjV0LTMgLTIuNXpNODk2IDQ4MGw5NiAtMzJsNzM2IDU3NmwtMTI4IDY0bC03NjggLTQzMXYtMTEzbC0xNjAgLTk2bDkgLThxMiAtMiA3IC02CnE0IC00IDExIC0xMnQxMSAtMTJsMjYgLTI2ek0xNjAwIDY0bDEyOCA2NGwtNTIwIDQwOGwtMTc3IC0xMzhxLTIgLTMgLTEzIC03eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb3B5IiB1bmljb2RlPSImI3hmMGM1OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTY5NiAxMTUycTQwIDAgNjggLTI4dDI4IC02OHYtMTIxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djI4OGgtNTQ0cS00MCAwIC02OCAyOHQtMjggNjh2NjcycTAgNDAgMjAgODh0NDggNzZsNDA4IDQwOHEyOCAyOCA3NiA0OHQ4OCAyMGg0MTZxNDAgMCA2OCAtMjh0MjggLTY4di0zMjhxNjggNDAgMTI4IDQwaDQxNnpNMTE1MiA5MzlsLTI5OSAtMjk5aDI5OXYyOTl6TTUxMiAxMzIzbC0yOTkgLTI5OQpoMjk5djI5OXpNNzA4IDY3NmwzMTYgMzE2djQxNmgtMzg0di00MTZxMCAtNDAgLTI4IC02OHQtNjggLTI4aC00MTZ2LTY0MGg1MTJ2MjU2cTAgNDAgMjAgODh0NDggNzZ6TTE2NjQgLTEyOHYxMTUyaC0zODR2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTQxNnYtNjQwaDg5NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGFwZXJfY2xpcCIgdW5pY29kZT0iJiN4ZjBjNjsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTE0MDQgMTUxcTAgLTExNyAtNzkgLTE5NnQtMTk2IC03OXEtMTM1IDAgLTIzNSAxMDBsLTc3NyA3NzZxLTExMyAxMTUgLTExMyAyNzFxMCAxNTkgMTEwIDI3MHQyNjkgMTExcTE1OCAwIDI3MyAtMTEzbDYwNSAtNjA2cTEwIC0xMCAxMCAtMjJxMCAtMTYgLTMwLjUgLTQ2LjV0LTQ2LjUgLTMwLjVxLTEzIDAgLTIzIDEwbC02MDYgNjA3cS03OSA3NyAtMTgxIDc3cS0xMDYgMCAtMTc5IC03NXQtNzMgLTE4MXEwIC0xMDUgNzYgLTE4MQpsNzc2IC03NzdxNjMgLTYzIDE0NSAtNjNxNjQgMCAxMDYgNDJ0NDIgMTA2cTAgODIgLTYzIDE0NWwtNTgxIDU4MXEtMjYgMjQgLTYwIDI0cS0yOSAwIC00OCAtMTl0LTE5IC00OHEwIC0zMiAyNSAtNTlsNDEwIC00MTBxMTAgLTEwIDEwIC0yMnEwIC0xNiAtMzEgLTQ3dC00NyAtMzFxLTEyIDAgLTIyIDEwbC00MTAgNDEwcS02MyA2MSAtNjMgMTQ5cTAgODIgNTcgMTM5dDEzOSA1N3E4OCAwIDE0OSAtNjNsNTgxIC01ODFxMTAwIC05OCAxMDAgLTIzNQp6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNhdmUiIHVuaWNvZGU9IiYjeGYwYzc7IiAKZD0iTTM4NCAwaDc2OHYzODRoLTc2OHYtMzg0ek0xMjgwIDBoMTI4djg5NnEwIDE0IC0xMCAzOC41dC0yMCAzNC41bC0yODEgMjgxcS0xMCAxMCAtMzQgMjB0LTM5IDEwdi00MTZxMCAtNDAgLTI4IC02OHQtNjggLTI4aC01NzZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTEyOHYtMTI4MGgxMjh2NDE2cTAgNDAgMjggNjh0NjggMjhoODMycTQwIDAgNjggLTI4dDI4IC02OHYtNDE2ek04OTYgOTI4djMyMHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjUKaC0xOTJxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0zMjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxOTJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTUzNiA4OTZ2LTkyOHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxMzQ0cTAgNDAgMjggNjh0NjggMjhoOTI4cTQwIDAgODggLTIwdDc2IC00OGwyODAgLTI4MHEyOCAtMjggNDggLTc2dDIwIC04OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2lnbl9ibGFuayIgdW5pY29kZT0iJiN4ZjBjODsiIApkPSJNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InJlb3JkZXIiIHVuaWNvZGU9IiYjeGYwYzk7IiAKZD0iTTE1MzYgMTkydi0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTQwOHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE1MzYgNzA0di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTQwOHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE1MzYgMTIxNnYtMTI4cTAgLTI2IC0xOSAtNDUKdC00NSAtMTloLTE0MDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idWwiIHVuaWNvZGU9IiYjeGYwY2E7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0zODQgMTI4cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMzg0IDY0MHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTE3OTIgMjI0di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMjE2cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjUKdDIyLjUgOS41aDEyMTZxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgMTE1MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTE3OTIgNzM2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMjE2cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTIxNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck0xNzkyIDEyNDh2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEyMTZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ib2wiIHVuaWNvZGU9IiYjeGYwY2I7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0zODEgLTg0cTAgLTgwIC01NC41IC0xMjZ0LTEzNS41IC00NnEtMTA2IDAgLTE3MiA2Nmw1NyA4OHE0OSAtNDUgMTA2IC00NXEyOSAwIDUwLjUgMTQuNXQyMS41IDQyLjVxMCA2NCAtMTA1IDU2bC0yNiA1NnE4IDEwIDMyLjUgNDMuNXQ0Mi41IDU0dDM3IDM4LjV2MXEtMTYgMCAtNDguNSAtMXQtNDguNSAtMXYtNTNoLTEwNnYxNTJoMzMzdi04OGwtOTUgLTExNXE1MSAtMTIgODEgLTQ5dDMwIC04OHpNMzgzIDU0M3YtMTU5aC0zNjIKcS02IDM2IC02IDU0cTAgNTEgMjMuNSA5M3Q1Ni41IDY4dDY2IDQ3LjV0NTYuNSA0My41dDIzLjUgNDVxMCAyNSAtMTQuNSAzOC41dC0zOS41IDEzLjVxLTQ2IDAgLTgxIC01OGwtODUgNTlxMjQgNTEgNzEuNSA3OS41dDEwNS41IDI4LjVxNzMgMCAxMjMgLTQxLjV0NTAgLTExMi41cTAgLTUwIC0zNCAtOTEuNXQtNzUgLTY0LjV0LTc1LjUgLTUwLjV0LTM1LjUgLTUyLjVoMTI3djYwaDEwNXpNMTc5MiAyMjR2LTE5MnEwIC0xMyAtOS41IC0yMi41CnQtMjIuNSAtOS41aC0xMjE2cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTQgOSAyM3QyMyA5aDEyMTZxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgMTEyM3YtOTloLTMzNXY5OWgxMDdxMCA0MSAwLjUgMTIxLjV0MC41IDEyMS41djEyaC0ycS04IC0xNyAtNTAgLTU0bC03MSA3NmwxMzYgMTI3aDEwNnYtNDA0aDEwOHpNMTc5MiA3MzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEyMTYKcS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTQgOSAyM3QyMyA5aDEyMTZxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDEyNDh2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEyMTZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RyaWtldGhyb3VnaCIgdW5pY29kZT0iJiN4ZjBjYzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3NjAgNjQwcTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE3MjhxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTcyOHpNNDgzIDcwNHEtMjggMzUgLTUxIDgwcS00OCA5OCAtNDggMTg4cTAgMTgxIDEzNCAzMDlxMTMzIDEyNyAzOTMgMTI3cTUwIDAgMTY3IC0xOXE2NiAtMTIgMTc3IC00OHExMCAtMzggMjEgLTExOHExNCAtMTIzIDE0IC0xODNxMCAtMTggLTUgLTQ1bC0xMiAtM2wtODQgNgpsLTE0IDJxLTUwIDE0OSAtMTAzIDIwNXEtODggOTEgLTIxMCA5MXEtMTE0IDAgLTE4MiAtNTlxLTY3IC01OCAtNjcgLTE0NnEwIC03MyA2NiAtMTQwdDI3OSAtMTI5cTY5IC0yMCAxNzMgLTY2cTU4IC0yOCA5NSAtNTJoLTc0M3pNOTkwIDQ0OGg0MTFxNyAtMzkgNyAtOTJxMCAtMTExIC00MSAtMjEycS0yMyAtNTYgLTcxIC0xMDRxLTM3IC0zNSAtMTA5IC04MXEtODAgLTQ4IC0xNTMgLTY2cS04MCAtMjEgLTIwMyAtMjFxLTExNCAwIC0xOTUgMjMKbC0xNDAgNDBxLTU3IDE2IC03MiAyOHEtOCA4IC04IDIydjEzcTAgMTA4IC0yIDE1NnEtMSAzMCAwIDY4bDIgMzd2NDRsMTAyIDJxMTUgLTM0IDMwIC03MXQyMi41IC01NnQxMi41IC0yN3EzNSAtNTcgODAgLTk0cTQzIC0zNiAxMDUgLTU3cTU5IC0yMiAxMzIgLTIycTY0IDAgMTM5IDI3cTc3IDI2IDEyMiA4NnE0NyA2MSA0NyAxMjlxMCA4NCAtODEgMTU3cS0zNCAyOSAtMTM3IDcxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmRlcmxpbmUiIHVuaWNvZGU9IiYjeGYwY2Q7IiAKZD0iTTQ4IDEzMTNxLTM3IDIgLTQ1IDRsLTMgODhxMTMgMSA0MCAxcTYwIDAgMTEyIC00cTEzMiAtNyAxNjYgLTdxODYgMCAxNjggM3ExMTYgNCAxNDYgNXE1NiAwIDg2IDJsLTEgLTE0bDIgLTY0di05cS02MCAtOSAtMTI0IC05cS02MCAwIC03OSAtMjVxLTEzIC0xNCAtMTMgLTEzMnEwIC0xMyAwLjUgLTMyLjV0MC41IC0yNS41bDEgLTIyOWwxNCAtMjgwcTYgLTEyNCA1MSAtMjAycTM1IC01OSA5NiAtOTJxODggLTQ3IDE3NyAtNDcKcTEwNCAwIDE5MSAyOHE1NiAxOCA5OSA1MXE0OCAzNiA2NSA2NHEzNiA1NiA1MyAxMTRxMjEgNzMgMjEgMjI5cTAgNzkgLTMuNSAxMjh0LTExIDEyMi41dC0xMy41IDE1OS41bC00IDU5cS01IDY3IC0yNCA4OHEtMzQgMzUgLTc3IDM0bC0xMDAgLTJsLTE0IDNsMiA4Nmg4NGwyMDUgLTEwcTc2IC0zIDE5NiAxMGwxOCAtMnE2IC0zOCA2IC01MXEwIC03IC00IC0zMXEtNDUgLTEyIC04NCAtMTNxLTczIC0xMSAtNzkgLTE3cS0xNSAtMTUgLTE1IC00MQpxMCAtNyAxLjUgLTI3dDEuNSAtMzFxOCAtMTkgMjIgLTM5NnE2IC0xOTUgLTE1IC0zMDRxLTE1IC03NiAtNDEgLTEyMnEtMzggLTY1IC0xMTIgLTEyM3EtNzUgLTU3IC0xODIgLTg5cS0xMDkgLTMzIC0yNTUgLTMzcS0xNjcgMCAtMjg0IDQ2cS0xMTkgNDcgLTE3OSAxMjJxLTYxIDc2IC04MyAxOTVxLTE2IDgwIC0xNiAyMzd2MzMzcTAgMTg4IC0xNyAyMTNxLTI1IDM2IC0xNDcgMzl6TTE1MzYgLTk2djY0cTAgMTQgLTkgMjN0LTIzIDloLTE0NzIKcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDE0NzJxMTQgMCAyMyA5dDkgMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InRhYmxlIiB1bmljb2RlPSImI3hmMGNlOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNNTEyIDE2MHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTUxMiA1NDR2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xMDI0IDE2MHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjMKdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek01MTIgOTI4djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDMyMHExNCAwIDIzIDl0OSAyM3pNMTAyNCA1NDR2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xNTM2IDE2MHYxOTIKcTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xMDI0IDkyOHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgNTQ0djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkyCnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgOTI4djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDMyMHExNCAwIDIzIDl0OSAyM3pNMTY2NCAxMjQ4di0xMDg4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMzQ0cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxMzQ0cTY2IDAgMTEzIC00N3Q0NyAtMTEzCnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWFnaWMiIHVuaWNvZGU9IiYjeGYwZDA7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xMTkwIDk1NWwyOTMgMjkzbC0xMDcgMTA3bC0yOTMgLTI5M3pNMTYzNyAxMjQ4cTAgLTI3IC0xOCAtNDVsLTEyODYgLTEyODZxLTE4IC0xOCAtNDUgLTE4dC00NSAxOGwtMTk4IDE5OHEtMTggMTggLTE4IDQ1dDE4IDQ1bDEyODYgMTI4NnExOCAxOCA0NSAxOHQ0NSAtMThsMTk4IC0xOThxMTggLTE4IDE4IC00NXpNMjg2IDE0MzhsOTggLTMwbC05OCAtMzBsLTMwIC05OGwtMzAgOThsLTk4IDMwbDk4IDMwbDMwIDk4ek02MzYgMTI3NgpsMTk2IC02MGwtMTk2IC02MGwtNjAgLTE5NmwtNjAgMTk2bC0xOTYgNjBsMTk2IDYwbDYwIDE5NnpNMTU2NiA3OThsOTggLTMwbC05OCAtMzBsLTMwIC05OGwtMzAgOThsLTk4IDMwbDk4IDMwbDMwIDk4ek05MjYgMTQzOGw5OCAtMzBsLTk4IC0zMGwtMzAgLTk4bC0zMCA5OGwtOTggMzBsOTggMzBsMzAgOTh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InRydWNrIiB1bmljb2RlPSImI3hmMGQxOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNjQwIDEyOHEwIDUyIC0zOCA5MHQtOTAgMzh0LTkwIC0zOHQtMzggLTkwdDM4IC05MHQ5MCAtMzh0OTAgMzh0MzggOTB6TTI1NiA2NDBoMzg0djI1NmgtMTU4cS0xMyAwIC0yMiAtOWwtMTk1IC0xOTVxLTkgLTkgLTkgLTIydi0zMHpNMTUzNiAxMjhxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHQzOCAtOTB0OTAgLTM4dDkwIDM4dDM4IDkwek0xNzkyIDEyMTZ2LTEwMjRxMCAtMTUgLTQgLTI2LjV0LTEzLjUgLTE4LjUKdC0xNi41IC0xMS41dC0yMy41IC02dC0yMi41IC0ydC0yNS41IDB0LTIyLjUgMC41cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTM4NHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxaC02NHEtMyAwIC0yMi41IC0wLjV0LTI1LjUgMHQtMjIuNSAydC0yMy41IDZ0LTE2LjUgMTEuNXQtMTMuNSAxOC41dC00IDI2LjVxMCAyNiAxOSA0NXQ0NSAxOXYzMjBxMCA4IC0wLjUgMzV0MCAzOAp0Mi41IDM0LjV0Ni41IDM3dDE0IDMwLjV0MjIuNSAzMGwxOTggMTk4cTE5IDE5IDUwLjUgMzJ0NTguNSAxM2gxNjB2MTkycTAgMjYgMTkgNDV0NDUgMTloMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InBpbnRlcmVzdCIgdW5pY29kZT0iJiN4ZjBkMjsiIApkPSJNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDNxLTExMSAwIC0yMTggMzJxNTkgOTMgNzggMTY0cTkgMzQgNTQgMjExcTIwIC0zOSA3MyAtNjcuNXQxMTQgLTI4LjVxMTIxIDAgMjE2IDY4LjV0MTQ3IDE4OC41dDUyIDI3MHEwIDExNCAtNTkuNSAyMTR0LTE3Mi41IDE2M3QtMjU1IDYzcS0xMDUgMCAtMTk2IC0yOXQtMTU0LjUgLTc3dC0xMDkgLTExMC41dC02NyAtMTI5LjV0LTIxLjUgLTEzNApxMCAtMTA0IDQwIC0xODN0MTE3IC0xMTFxMzAgLTEyIDM4IDIwcTIgNyA4IDMxdDggMzBxNiAyMyAtMTEgNDNxLTUxIDYxIC01MSAxNTFxMCAxNTEgMTA0LjUgMjU5LjV0MjczLjUgMTA4LjVxMTUxIDAgMjM1LjUgLTgydDg0LjUgLTIxM3EwIC0xNzAgLTY4LjUgLTI4OXQtMTc1LjUgLTExOXEtNjEgMCAtOTggNDMuNXQtMjMgMTA0LjVxOCAzNSAyNi41IDkzLjV0MzAgMTAzdDExLjUgNzUuNXEwIDUwIC0yNyA4M3QtNzcgMzMKcS02MiAwIC0xMDUgLTU3dC00MyAtMTQycTAgLTczIDI1IC0xMjJsLTk5IC00MThxLTE3IC03MCAtMTMgLTE3N3EtMjA2IDkxIC0zMzMgMjgxdC0xMjcgNDIzcTAgMjA5IDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGludGVyZXN0X3NpZ24iIHVuaWNvZGU9IiYjeGYwZDM7IiAKZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC03MjVxODUgMTIyIDEwOCAyMTBxOSAzNCA1MyAyMDlxMjEgLTM5IDczLjUgLTY3dDExMi41IC0yOHExODEgMCAyOTUuNSAxNDcuNXQxMTQuNSAzNzMuNXEwIDg0IC0zNSAxNjIuNXQtOTYuNSAxMzl0LTE1Mi41IDk3dC0xOTcgMzYuNXEtMTA0IDAgLTE5NC41IC0yOC41dC0xNTMgLTc2LjUKdC0xMDcuNSAtMTA5LjV0LTY2LjUgLTEyOHQtMjEuNSAtMTMyLjVxMCAtMTAyIDM5LjUgLTE4MHQxMTYuNSAtMTEwcTEzIC01IDIzLjUgMHQxNC41IDE5cTEwIDQ0IDE1IDYxcTYgMjMgLTExIDQycS01MCA2MiAtNTAgMTUwcTAgMTUwIDEwMy41IDI1Ni41dDI3MC41IDEwNi41cTE0OSAwIDIzMi41IC04MXQ4My41IC0yMTBxMCAtMTY4IC02Ny41IC0yODZ0LTE3My41IC0xMThxLTYwIDAgLTk3IDQzLjV0LTIzIDEwMy41cTggMzQgMjYuNSA5Mi41CnQyOS41IDEwMnQxMSA3NC41cTAgNDkgLTI2LjUgODEuNXQtNzUuNSAzMi41cS02MSAwIC0xMDMuNSAtNTYuNXQtNDIuNSAtMTM5LjVxMCAtNzIgMjQgLTEyMWwtOTggLTQxNHEtMjQgLTEwMCAtNyAtMjU0aC0xODNxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnb29nbGVfcGx1c19zaWduIiB1bmljb2RlPSImI3hmMGQ0OyIgCmQ9Ik05MTcgNjMxcTAgMjYgLTYgNjRoLTM2MnYtMTMyaDIxN3EtMyAtMjQgLTE2LjUgLTUwdC0zNy41IC01M3QtNjYuNSAtNDQuNXQtOTYuNSAtMTcuNXEtOTkgMCAtMTY5IDcxdC03MCAxNzF0NzAgMTcxdDE2OSA3MXE5MiAwIDE1MyAtNTlsMTA0IDEwMXEtMTA4IDEwMCAtMjU3IDEwMHEtMTYwIDAgLTI3MiAtMTEyLjV0LTExMiAtMjcxLjV0MTEyIC0yNzEuNXQyNzIgLTExMi41cTE2NSAwIDI2Ni41IDEwNXQxMDEuNSAyNzB6TTEyNjIgNTg1CmgxMDl2MTEwaC0xMDl2MTEwaC0xMTB2LTExMGgtMTEwdi0xMTBoMTEwdi0xMTBoMTEwdjExMHpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Imdvb2dsZV9wbHVzIiB1bmljb2RlPSImI3hmMGQ1OyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMTQzNyA2MjNxMCAtMjA4IC04NyAtMzcwLjV0LTI0OCAtMjU0dC0zNjkgLTkxLjVxLTE0OSAwIC0yODUgNTh0LTIzNCAxNTZ0LTE1NiAyMzR0LTU4IDI4NXQ1OCAyODV0MTU2IDIzNHQyMzQgMTU2dDI4NSA1OHEyODYgMCA0OTEgLTE5MmwtMTk5IC0xOTFxLTExNyAxMTMgLTI5MiAxMTNxLTEyMyAwIC0yMjcuNSAtNjJ0LTE2NS41IC0xNjguNXQtNjEgLTIzMi41dDYxIC0yMzIuNXQxNjUuNSAtMTY4LjV0MjI3LjUgLTYyCnE4MyAwIDE1Mi41IDIzdDExNC41IDU3LjV0NzguNSA3OC41dDQ5IDgzdDIxLjUgNzRoLTQxNnYyNTJoNjkycTEyIC02MyAxMiAtMTIyek0yMzA0IDc0NXYtMjEwaC0yMDl2LTIwOWgtMjEwdjIwOWgtMjA5djIxMGgyMDl2MjA5aDIxMHYtMjA5aDIwOXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibW9uZXkiIHVuaWNvZGU9IiYjeGYwZDY7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik03NjggMzg0aDM4NHY5NmgtMTI4djQ0OGgtMTE0bC0xNDggLTEzN2w3NyAtODBxNDIgMzcgNTUgNTdoMnYtMjg4aC0xMjh2LTk2ek0xMjgwIDY0MHEwIC03MCAtMjEgLTE0MnQtNTkuNSAtMTM0dC0xMDEuNSAtMTAxdC0xMzggLTM5dC0xMzggMzl0LTEwMS41IDEwMXQtNTkuNSAxMzR0LTIxIDE0MnQyMSAxNDJ0NTkuNSAxMzR0MTAxLjUgMTAxdDEzOCAzOXQxMzggLTM5dDEwMS41IC0xMDF0NTkuNSAtMTM0dDIxIC0xNDJ6TTE3OTIgMzg0CnY1MTJxLTEwNiAwIC0xODEgNzV0LTc1IDE4MWgtMTE1MnEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV2LTUxMnExMDYgMCAxODEgLTc1dDc1IC0xODFoMTE1MnEwIDEwNiA3NSAxODF0MTgxIDc1ek0xOTIwIDEyMTZ2LTExNTJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNzkycS0yNiAwIC00NSAxOXQtMTkgNDV2MTE1MnEwIDI2IDE5IDQ1dDQ1IDE5aDE3OTJxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYXJldF9kb3duIiB1bmljb2RlPSImI3hmMGQ3OyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNMTAyNCA4MzJxMCAtMjYgLTE5IC00NWwtNDQ4IC00NDhxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNDQ4IDQ0OHEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDg5NnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhcmV0X3VwIiB1bmljb2RlPSImI3hmMGQ4OyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNMTAyNCAzMjBxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC04OTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NWw0NDggNDQ4cTE5IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHExOSAtMTkgMTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYXJldF9sZWZ0IiB1bmljb2RlPSImI3hmMGQ5OyIgaG9yaXotYWR2LXg9IjY0MCIgCmQ9Ik02NDAgMTA4OHYtODk2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTlsLTQ0OCA0NDhxLTE5IDE5IC0xOSA0NXQxOSA0NWw0NDggNDQ4cTE5IDE5IDQ1IDE5dDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhcmV0X3JpZ2h0IiB1bmljb2RlPSImI3hmMGRhOyIgaG9yaXotYWR2LXg9IjY0MCIgCmQ9Ik01NzYgNjQwcTAgLTI2IC0xOSAtNDVsLTQ0OCAtNDQ4cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djg5NnEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHExOSAtMTkgMTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2x1bW5zIiB1bmljb2RlPSImI3hmMGRiOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTYwIDBoNjA4djExNTJoLTY0MHYtMTEyMHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41ek0xNTM2IDMydjExMjBoLTY0MHYtMTE1Mmg2MDhxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMzQ0cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxMzQ0cTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0IiB1bmljb2RlPSImI3hmMGRjOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNMTAyNCA0NDhxMCAtMjYgLTE5IC00NWwtNDQ4IC00NDhxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNDQ4IDQ0OHEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDg5NnEyNiAwIDQ1IC0xOXQxOSAtNDV6TTEwMjQgODMycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtODk2cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsNDQ4IDQ0OHExOSAxOSA0NSAxOXQ0NSAtMTlsNDQ4IC00NDhxMTkgLTE5IDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF9kb3duIiB1bmljb2RlPSImI3hmMGRkOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNMTAyNCA0NDhxMCAtMjYgLTE5IC00NWwtNDQ4IC00NDhxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNDQ4IDQ0OHEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDg5NnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNvcnRfdXAiIHVuaWNvZGU9IiYjeGYwZGU7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik0xMDI0IDgzMnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTg5NnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDQ0OCA0NDhxMTkgMTkgNDUgMTl0NDUgLTE5bDQ0OCAtNDQ4cTE5IC0xOSAxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImVudmVsb3BlX2FsdCIgdW5pY29kZT0iJiN4ZjBlMDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgODI2di03OTRxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjc5NHE0NCAtNDkgMTAxIC04N3EzNjIgLTI0NiA0OTcgLTM0NXE1NyAtNDIgOTIuNSAtNjUuNXQ5NC41IC00OHQxMTAgLTI0LjVoMWgxcTUxIDAgMTEwIDI0LjV0OTQuNSA0OHQ5Mi41IDY1LjVxMTcwIDEyMyA0OTggMzQ1cTU3IDM5IDEwMCA4N3pNMTc5MiAxMTIwcTAgLTc5IC00OSAtMTUxdC0xMjIgLTEyMwpxLTM3NiAtMjYxIC00NjggLTMyNXEtMTAgLTcgLTQyLjUgLTMwLjV0LTU0IC0zOHQtNTIgLTMyLjV0LTU3LjUgLTI3dC01MCAtOWgtMWgtMXEtMjMgMCAtNTAgOXQtNTcuNSAyN3QtNTIgMzIuNXQtNTQgMzh0LTQyLjUgMzAuNXEtOTEgNjQgLTI2MiAxODIuNXQtMjA1IDE0Mi41cS02MiA0MiAtMTE3IDExNS41dC01NSAxMzYuNXEwIDc4IDQxLjUgMTMwdDExOC41IDUyaDE0NzJxNjUgMCAxMTIuNSAtNDd0NDcuNSAtMTEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsaW5rZWRpbiIgdW5pY29kZT0iJiN4ZjBlMTsiIApkPSJNMzQ5IDkxMXYtOTkxaC0zMzB2OTkxaDMzMHpNMzcwIDEyMTdxMSAtNzMgLTUwLjUgLTEyMnQtMTM1LjUgLTQ5aC0ycS04MiAwIC0xMzIgNDl0LTUwIDEyMnEwIDc0IDUxLjUgMTIyLjV0MTM0LjUgNDguNXQxMzMgLTQ4LjV0NTEgLTEyMi41ek0xNTM2IDQ4OHYtNTY4aC0zMjl2NTMwcTAgMTA1IC00MC41IDE2NC41dC0xMjYuNSA1OS41cS02MyAwIC0xMDUuNSAtMzQuNXQtNjMuNSAtODUuNXEtMTEgLTMwIC0xMSAtODF2LTU1M2gtMzI5CnEyIDM5OSAyIDY0N3QtMSAyOTZsLTEgNDhoMzI5di0xNDRoLTJxMjAgMzIgNDEgNTZ0NTYuNSA1MnQ4NyA0My41dDExNC41IDE1LjVxMTcxIDAgMjc1IC0xMTMuNXQxMDQgLTMzMi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmRvIiB1bmljb2RlPSImI3hmMGUyOyIgCmQ9Ik0xNTM2IDY0MHEwIC0xNTYgLTYxIC0yOTh0LTE2NCAtMjQ1dC0yNDUgLTE2NHQtMjk4IC02MXEtMTcyIDAgLTMyNyA3Mi41dC0yNjQgMjA0LjVxLTcgMTAgLTYuNSAyMi41dDguNSAyMC41bDEzNyAxMzhxMTAgOSAyNSA5cTE2IC0yIDIzIC0xMnE3MyAtOTUgMTc5IC0xNDd0MjI1IC01MnExMDQgMCAxOTguNSA0MC41dDE2My41IDEwOS41dDEwOS41IDE2My41dDQwLjUgMTk4LjV0LTQwLjUgMTk4LjV0LTEwOS41IDE2My41CnQtMTYzLjUgMTA5LjV0LTE5OC41IDQwLjVxLTk4IDAgLTE4OCAtMzUuNXQtMTYwIC0xMDEuNWwxMzcgLTEzOHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDEzMCAtMTI5cTEwNyAxMDEgMjQ0LjUgMTU2LjV0Mjg0LjUgNTUuNXExNTYgMCAyOTggLTYxdDI0NSAtMTY0dDE2NCAtMjQ1dDYxIC0yOTh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImxlZ2FsIiB1bmljb2RlPSImI3hmMGUzOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc3MSAwcTAgLTUzIC0zNyAtOTBsLTEwNyAtMTA4cS0zOSAtMzcgLTkxIC0zN3EtNTMgMCAtOTAgMzdsLTM2MyAzNjRxLTM4IDM2IC0zOCA5MHEwIDUzIDQzIDk2bC0yNTYgMjU2bC0xMjYgLTEyNnEtMTQgLTE0IC0zNCAtMTR0LTM0IDE0cTIgLTIgMTIuNSAtMTJ0MTIuNSAtMTN0MTAgLTExLjV0MTAgLTEzLjV0NiAtMTMuNXQ1LjUgLTE2LjV0MS41IC0xOHEwIC0zOCAtMjggLTY4cS0zIC0zIC0xNi41IC0xOHQtMTkgLTIwLjUKdC0xOC41IC0xNi41dC0yMiAtMTUuNXQtMjIgLTl0LTI2IC00LjVxLTQwIDAgLTY4IDI4bC00MDggNDA4cS0yOCAyOCAtMjggNjhxMCAxMyA0LjUgMjZ0OSAyMnQxNS41IDIydDE2LjUgMTguNXQyMC41IDE5dDE4IDE2LjVxMzAgMjggNjggMjhxMTAgMCAxOCAtMS41dDE2LjUgLTUuNXQxMy41IC02dDEzLjUgLTEwdDExLjUgLTEwdDEzIC0xMi41dDEyIC0xMi41cS0xNCAxNCAtMTQgMzR0MTQgMzRsMzQ4IDM0OHExNCAxNCAzNCAxNHQzNCAtMTQKcS0yIDIgLTEyLjUgMTJ0LTEyLjUgMTN0LTEwIDExLjV0LTEwIDEzLjV0LTYgMTMuNXQtNS41IDE2LjV0LTEuNSAxOHEwIDM4IDI4IDY4cTMgMyAxNi41IDE4dDE5IDIwLjV0MTguNSAxNi41dDIyIDE1LjV0MjIgOXQyNiA0LjVxNDAgMCA2OCAtMjhsNDA4IC00MDhxMjggLTI4IDI4IC02OHEwIC0xMyAtNC41IC0yNnQtOSAtMjJ0LTE1LjUgLTIydC0xNi41IC0xOC41dC0yMC41IC0xOXQtMTggLTE2LjVxLTMwIC0yOCAtNjggLTI4CnEtMTAgMCAtMTggMS41dC0xNi41IDUuNXQtMTMuNSA2dC0xMy41IDEwdC0xMS41IDEwdC0xMyAxMi41dC0xMiAxMi41cTE0IC0xNCAxNCAtMzR0LTE0IC0zNGwtMTI2IC0xMjZsMjU2IC0yNTZxNDMgNDMgOTYgNDNxNTIgMCA5MSAtMzdsMzYzIC0zNjNxMzcgLTM5IDM3IC05MXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZGFzaGJvYXJkIiB1bmljb2RlPSImI3hmMGU0OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMzg0IDM4NHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNNTc2IDgzMnEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTAwNCAzNTFsMTAxIDM4MnE2IDI2IC03LjUgNDguNXQtMzguNSAyOS41CnQtNDggLTYuNXQtMzAgLTM5LjVsLTEwMSAtMzgycS02MCAtNSAtMTA3IC00My41dC02MyAtOTguNXEtMjAgLTc3IDIwIC0xNDZ0MTE3IC04OXQxNDYgMjB0ODkgMTE3cTE2IDYwIC02IDExN3QtNzIgOTF6TTE2NjQgMzg0cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xMDI0IDEwMjRxMCA1MyAtMzcuNSA5MC41CnQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNDcyIDgzMnEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTc5MiAzODRxMCAtMjYxIC0xNDEgLTQ4M3EtMTkgLTI5IC01NCAtMjloLTE0MDJxLTM1IDAgLTU0IDI5CnEtMTQxIDIyMSAtMTQxIDQ4M3EwIDE4MiA3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvbW1lbnRfYWx0IiB1bmljb2RlPSImI3hmMGU1OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNODk2IDExNTJxLTIwNCAwIC0zODEuNSAtNjkuNXQtMjgyIC0xODcuNXQtMTA0LjUgLTI1NXEwIC0xMTIgNzEuNSAtMjEzLjV0MjAxLjUgLTE3NS41bDg3IC01MGwtMjcgLTk2cS0yNCAtOTEgLTcwIC0xNzJxMTUyIDYzIDI3NSAxNzFsNDMgMzhsNTcgLTZxNjkgLTggMTMwIC04cTIwNCAwIDM4MS41IDY5LjV0MjgyIDE4Ny41dDEwNC41IDI1NXQtMTA0LjUgMjU1dC0yODIgMTg3LjV0LTM4MS41IDY5LjV6TTE3OTIgNjQwCnEwIC0xNzQgLTEyMCAtMzIxLjV0LTMyNiAtMjMzdC00NTAgLTg1LjVxLTcwIDAgLTE0NSA4cS0xOTggLTE3NSAtNDYwIC0yNDJxLTQ5IC0xNCAtMTE0IC0yMmgtNXEtMTUgMCAtMjcgMTAuNXQtMTYgMjcuNXYxcS0zIDQgLTAuNSAxMnQyIDEwdDQuNSA5LjVsNiA5dDcgOC41dDggOXE3IDggMzEgMzQuNXQzNC41IDM4dDMxIDM5LjV0MzIuNSA1MXQyNyA1OXQyNiA3NnEtMTU3IDg5IC0yNDcuNSAyMjB0LTkwLjUgMjgxcTAgMTc0IDEyMCAzMjEuNQp0MzI2IDIzM3Q0NTAgODUuNXQ0NTAgLTg1LjV0MzI2IC0yMzN0MTIwIC0zMjEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudHNfYWx0IiB1bmljb2RlPSImI3hmMGU2OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNzA0IDExNTJxLTE1MyAwIC0yODYgLTUydC0yMTEuNSAtMTQxdC03OC41IC0xOTFxMCAtODIgNTMgLTE1OHQxNDkgLTEzMmw5NyAtNTZsLTM1IC04NHEzNCAyMCA2MiAzOWw0NCAzMWw1MyAtMTBxNzggLTE0IDE1MyAtMTRxMTUzIDAgMjg2IDUydDIxMS41IDE0MXQ3OC41IDE5MXQtNzguNSAxOTF0LTIxMS41IDE0MXQtMjg2IDUyek03MDQgMTI4MHExOTEgMCAzNTMuNSAtNjguNXQyNTYuNSAtMTg2LjV0OTQgLTI1N3QtOTQgLTI1Nwp0LTI1Ni41IC0xODYuNXQtMzUzLjUgLTY4LjVxLTg2IDAgLTE3NiAxNnEtMTI0IC04OCAtMjc4IC0xMjhxLTM2IC05IC04NiAtMTZoLTNxLTExIDAgLTIwLjUgOHQtMTEuNSAyMXEtMSAzIC0xIDYuNXQwLjUgNi41dDIgNmwyLjUgNXQzLjUgNS41dDQgNXQ0LjUgNXQ0IDQuNXE1IDYgMjMgMjV0MjYgMjkuNXQyMi41IDI5dDI1IDM4LjV0MjAuNSA0NHEtMTI0IDcyIC0xOTUgMTc3dC03MSAyMjRxMCAxMzkgOTQgMjU3dDI1Ni41IDE4Ni41CnQzNTMuNSA2OC41ek0xNTI2IDExMXExMCAtMjQgMjAuNSAtNDR0MjUgLTM4LjV0MjIuNSAtMjl0MjYgLTI5LjV0MjMgLTI1cTEgLTEgNCAtNC41dDQuNSAtNXQ0IC01dDMuNSAtNS41bDIuNSAtNXQyIC02dDAuNSAtNi41dC0xIC02LjVxLTMgLTE0IC0xMyAtMjJ0LTIyIC03cS01MCA3IC04NiAxNnEtMTU0IDQwIC0yNzggMTI4cS05MCAtMTYgLTE3NiAtMTZxLTI3MSAwIC00NzIgMTMycTU4IC00IDg4IC00cTE2MSAwIDMwOSA0NXQyNjQgMTI5CnExMjUgOTIgMTkyIDIxMnQ2NyAyNTRxMCA3NyAtMjMgMTUycTEyOSAtNzEgMjA0IC0xNzh0NzUgLTIzMHEwIC0xMjAgLTcxIC0yMjQuNXQtMTk1IC0xNzYuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYm9sdCIgdW5pY29kZT0iJiN4ZjBlNzsiIGhvcml6LWFkdi14PSI4OTYiIApkPSJNODg1IDk3MHExOCAtMjAgNyAtNDRsLTU0MCAtMTE1N3EtMTMgLTI1IC00MiAtMjVxLTQgMCAtMTQgMnEtMTcgNSAtMjUuNSAxOXQtNC41IDMwbDE5NyA4MDhsLTQwNiAtMTAxcS00IC0xIC0xMiAtMXEtMTggMCAtMzEgMTFxLTE4IDE1IC0xMyAzOWwyMDEgODI1cTQgMTQgMTYgMjN0MjggOWgzMjhxMTkgMCAzMiAtMTIuNXQxMyAtMjkuNXEwIC04IC01IC0xOGwtMTcxIC00NjNsMzk2IDk4cTggMiAxMiAycTE5IDAgMzQgLTE1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzaXRlbWFwIiB1bmljb2RlPSImI3hmMGU4OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc5MiAyODh2LTMyMHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDk2djE5MmgtNTEydi0xOTJoOTZxNDAgMCA2OCAtMjh0MjggLTY4di0zMjBxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYzMjBxMCA0MCAyOCA2OHQ2OCAyOGg5NnYxOTJoLTUxMnYtMTkyaDk2cTQwIDAgNjggLTI4dDI4IC02OHYtMzIwCnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDk2djE5MnEwIDUyIDM4IDkwdDkwIDM4aDUxMnYxOTJoLTk2cS00MCAwIC02OCAyOHQtMjggNjh2MzIwcTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTZ2LTE5Mmg1MTJxNTIgMCA5MCAtMzh0MzggLTkwdi0xOTJoOTZxNDAgMCA2OCAtMjh0MjggLTY4CnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW1icmVsbGEiIHVuaWNvZGU9IiYjeGYwZTk7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik04OTYgNzA4di01ODBxMCAtMTA0IC03NiAtMTgwdC0xODAgLTc2dC0xODAgNzZ0LTc2IDE4MHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDVxMCAtNTAgMzkgLTg5dDg5IC0zOXQ4OSAzOXQzOSA4OXY1ODBxMzMgMTEgNjQgMTF0NjQgLTExek0xNjY0IDY4MXEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTExIDAgLTIzIDEwcS00OSA0NiAtOTMgNjl0LTEwMiAyM3EtNjggMCAtMTI4IC0zN3QtMTAzIC05NwpxLTcgLTEwIC0xNy41IC0yOHQtMTQuNSAtMjRxLTExIC0xNyAtMjggLTE3cS0xOCAwIC0yOSAxN3EtNCA2IC0xNC41IDI0dC0xNy41IDI4cS00MyA2MCAtMTAyLjUgOTd0LTEyNy41IDM3dC0xMjcuNSAtMzd0LTEwMi41IC05N3EtNyAtMTAgLTE3LjUgLTI4dC0xNC41IC0yNHEtMTEgLTE3IC0yOSAtMTdxLTE3IDAgLTI4IDE3cS00IDYgLTE0LjUgMjR0LTE3LjUgMjhxLTQzIDYwIC0xMDMgOTd0LTEyOCAzN3EtNTggMCAtMTAyIC0yM3QtOTMgLTY5CnEtMTIgLTEwIC0yMyAtMTBxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXEwIDUgMSA3cTQ1IDE4MyAxNzIuNSAzMTkuNXQyOTggMjA0LjV0MzYwLjUgNjhxMTQwIDAgMjc0LjUgLTQwdDI0Ni41IC0xMTMuNXQxOTQuNSAtMTg3dDExNS41IC0yNTEuNXExIC0yIDEgLTd6TTg5NiAxNDA4di05OHEtNDIgMiAtNjQgMnQtNjQgLTJ2OThxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwYXN0ZSIgdW5pY29kZT0iJiN4ZjBlYTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTc2OCAtMTI4aDg5NnY2NDBoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtMzg0di0xMTUyek0xMDI0IDEzMTJ2NjRxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC03MDRxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di02NHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDcwNHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMjgwIDY0MGgyOTlsLTI5OSAyOTl2LTI5OXpNMTc5MiA1MTJ2LTY3MnEwIC00MCAtMjggLTY4dC02OCAtMjgKaC05NjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjBoLTU0NHEtNDAgMCAtNjggMjh0LTI4IDY4djEzNDRxMCA0MCAyOCA2OHQ2OCAyOGgxMDg4cTQwIDAgNjggLTI4dDI4IC02OHYtMzI4cTIxIC0xMyAzNiAtMjhsNDA4IC00MDhxMjggLTI4IDQ4IC03NnQyMCAtODh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImxpZ2h0X2J1bGIiIHVuaWNvZGU9IiYjeGYwZWI7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik03MzYgOTYwcTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNXQtMjIuNSA5LjV0LTkuNSAyMi41cTAgNDYgLTU0IDcxdC0xMDYgMjVxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXQ5LjUgMjIuNXQyMi41IDkuNXE1MCAwIDk5LjUgLTE2dDg3IC01NHQzNy41IC05MHpNODk2IDk2MHEwIDcyIC0zNC41IDEzNHQtOTAgMTAxLjV0LTEyMyA2MnQtMTM2LjUgMjIuNXQtMTM2LjUgLTIyLjV0LTEyMyAtNjJ0LTkwIC0xMDEuNXQtMzQuNSAtMTM0CnEwIC0xMDEgNjggLTE4MHExMCAtMTEgMzAuNSAtMzN0MzAuNSAtMzNxMTI4IC0xNTMgMTQxIC0yOThoMjI4cTEzIDE0NSAxNDEgMjk4cTEwIDExIDMwLjUgMzN0MzAuNSAzM3E2OCA3OSA2OCAxODB6TTEwMjQgOTYwcTAgLTE1NSAtMTAzIC0yNjhxLTQ1IC00OSAtNzQuNSAtODd0LTU5LjUgLTk1LjV0LTM0IC0xMDcuNXE0NyAtMjggNDcgLTgycTAgLTM3IC0yNSAtNjRxMjUgLTI3IDI1IC02NHEwIC01MiAtNDUgLTgxcTEzIC0yMyAxMyAtNDcKcTAgLTQ2IC0zMS41IC03MXQtNzcuNSAtMjVxLTIwIC00NCAtNjAgLTcwdC04NyAtMjZ0LTg3IDI2dC02MCA3MHEtNDYgMCAtNzcuNSAyNXQtMzEuNSA3MXEwIDI0IDEzIDQ3cS00NSAyOSAtNDUgODFxMCAzNyAyNSA2NHEtMjUgMjcgLTI1IDY0cTAgNTQgNDcgODJxLTQgNTAgLTM0IDEwNy41dC01OS41IDk1LjV0LTc0LjUgODdxLTEwMyAxMTMgLTEwMyAyNjhxMCA5OSA0NC41IDE4NC41dDExNyAxNDJ0MTY0IDg5dDE4Ni41IDMyLjUKdDE4Ni41IC0zMi41dDE2NCAtODl0MTE3IC0xNDJ0NDQuNSAtMTg0LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImV4Y2hhbmdlIiB1bmljb2RlPSImI3hmMGVjOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc5MiAzNTJ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEzNzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTEyIDAgLTI0IDEwbC0zMTkgMzIwcS05IDkgLTkgMjJxMCAxNCA5IDIzbDMyMCAzMjBxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJoMTM3NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgODk2cTAgLTE0IC05IC0yM2wtMzIwIC0zMjBxLTkgLTkgLTIzIC05CnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MmgtMTM3NnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEzNzZ2MTkycTAgMTQgOSAyM3QyMyA5cTEyIDAgMjQgLTEwbDMxOSAtMzE5cTkgLTkgOSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNsb3VkX2Rvd25sb2FkIiB1bmljb2RlPSImI3hmMGVkOyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNMTI4MCA2MDhxMCAxNCAtOSAyM3QtMjMgOWgtMjI0djM1MnEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTE5MnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTM1MmgtMjI0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXEwIC0xNCA5IC0yM2wzNTIgLTM1MnE5IC05IDIzIC05dDIzIDlsMzUxIDM1MXExMCAxMiAxMCAyNHpNMTkyMCAzODRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtMTA4OApxLTE4NSAwIC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxMzAgNzAgMjQwdDE4OCAxNjVxLTIgMzAgLTIgNDNxMCAyMTIgMTUwIDM2MnQzNjIgMTUwcTE1NiAwIDI4NS41IC04N3QxODguNSAtMjMxcTcxIDYyIDE2NiA2MnExMDYgMCAxODEgLTc1dDc1IC0xODFxMCAtNzYgLTQxIC0xMzhxMTMwIC0zMSAyMTMuNSAtMTM1LjV0ODMuNSAtMjM4LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNsb3VkX3VwbG9hZCIgdW5pY29kZT0iJiN4ZjBlZTsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTEyODAgNjcycTAgMTQgLTkgMjNsLTM1MiAzNTJxLTkgOSAtMjMgOXQtMjMgLTlsLTM1MSAtMzUxcS0xMCAtMTIgLTEwIC0yNHEwIC0xNCA5IC0yM3QyMyAtOWgyMjR2LTM1MnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE5MnExMyAwIDIyLjUgOS41dDkuNSAyMi41djM1MmgyMjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTkyMCAzODRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtMTA4OApxLTE4NSAwIC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxMzAgNzAgMjQwdDE4OCAxNjVxLTIgMzAgLTIgNDNxMCAyMTIgMTUwIDM2MnQzNjIgMTUwcTE1NiAwIDI4NS41IC04N3QxODguNSAtMjMxcTcxIDYyIDE2NiA2MnExMDYgMCAxODEgLTc1dDc1IC0xODFxMCAtNzYgLTQxIC0xMzhxMTMwIC0zMSAyMTMuNSAtMTM1LjV0ODMuNSAtMjM4LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVzZXJfbWQiIHVuaWNvZGU9IiYjeGYwZjA7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik0zODQgMTkycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTE0MDggMTMxcTAgLTEyMSAtNzMgLTE5MHQtMTk0IC02OWgtODc0cS0xMjEgMCAtMTk0IDY5dC03MyAxOTBxMCA2OCA1LjUgMTMxdDI0IDEzOHQ0Ny41IDEzMi41dDgxIDEwM3QxMjAgNjAuNXEtMjIgLTUyIC0yMiAtMTIwdi0yMDNxLTU4IC0yMCAtOTMgLTcwdC0zNSAtMTExcTAgLTgwIDU2IC0xMzZ0MTM2IC01Ngp0MTM2IDU2dDU2IDEzNnEwIDYxIC0zNS41IDExMXQtOTIuNSA3MHYyMDNxMCA2MiAyNSA5M3ExMzIgLTEwNCAyOTUgLTEwNHQyOTUgMTA0cTI1IC0zMSAyNSAtOTN2LTY0cS0xMDYgMCAtMTgxIC03NXQtNzUgLTE4MXYtODlxLTMyIC0yOSAtMzIgLTcxcTAgLTQwIDI4IC02OHQ2OCAtMjh0NjggMjh0MjggNjhxMCA0MiAtMzIgNzF2ODlxMCA1MiAzOCA5MHQ5MCAzOHQ5MCAtMzh0MzggLTkwdi04OXEtMzIgLTI5IC0zMiAtNzFxMCAtNDAgMjggLTY4CnQ2OCAtMjh0NjggMjh0MjggNjhxMCA0MiAtMzIgNzF2ODlxMCA2OCAtMzQuNSAxMjcuNXQtOTMuNSA5My41cTAgMTAgMC41IDQyLjV0MCA0OHQtMi41IDQxLjV0LTcgNDd0LTEzIDQwcTY4IC0xNSAxMjAgLTYwLjV0ODEgLTEwM3Q0Ny41IC0xMzIuNXQyNCAtMTM4dDUuNSAtMTMxek0xMDg4IDEwMjRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXQtMjcxLjUgMTEyLjV0LTExMi41IDI3MS41dDExMi41IDI3MS41dDI3MS41IDExMi41CnQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGV0aG9zY29wZSIgdW5pY29kZT0iJiN4ZjBmMTsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTEyODAgODMycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA4MzJxMCAtNjIgLTM1LjUgLTExMXQtOTIuNSAtNzB2LTM5NXEwIC0xNTkgLTEzMS41IC0yNzEuNXQtMzE2LjUgLTExMi41dC0zMTYuNSAxMTIuNXQtMTMxLjUgMjcxLjV2MTMycS0xNjQgMjAgLTI3NCAxMjh0LTExMCAyNTJ2NTEycTAgMjYgMTkgNDV0NDUgMTlxNiAwIDE2IC0ycTE3IDMwIDQ3IDQ4CnQ2NSAxOHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXQtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXEtMzMgMCAtNjQgMTh2LTQwMnEwIC0xMDYgOTQgLTE4MXQyMjYgLTc1dDIyNiA3NXQ5NCAxODF2NDAycS0zMSAtMTggLTY0IC0xOHEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXEzNSAwIDY1IC0xOHQ0NyAtNDhxMTAgMiAxNiAycTI2IDAgNDUgLTE5dDE5IC00NXYtNTEycTAgLTE0NCAtMTEwIC0yNTIKdC0yNzQgLTEyOHYtMTMycTAgLTEwNiA5NCAtMTgxdDIyNiAtNzV0MjI2IDc1dDk0IDE4MXYzOTVxLTU3IDIxIC05Mi41IDcwdC0zNS41IDExMXEwIDgwIDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdWl0Y2FzZSIgdW5pY29kZT0iJiN4ZjBmMjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTY0MCAxMTUyaDUxMnYxMjhoLTUxMnYtMTI4ek0yODggMTE1MnYtMTI4MGgtNjRxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djgzMnEwIDkyIDY2IDE1OHQxNTggNjZoNjR6TTE0MDggMTE1MnYtMTI4MGgtMTAyNHYxMjgwaDEyOHYxNjBxMCA0MCAyOCA2OHQ2OCAyOGg1NzZxNDAgMCA2OCAtMjh0MjggLTY4di0xNjBoMTI4ek0xNzkyIDkyOHYtODMycTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC02NHYxMjgwaDY0cTkyIDAgMTU4IC02Ngp0NjYgLTE1OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmVsbF9hbHQiIHVuaWNvZGU9IiYjeGYwZjM7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik05MTIgLTE2MHEwIDE2IC0xNiAxNnEtNTkgMCAtMTAxLjUgNDIuNXQtNDIuNSAxMDEuNXEwIDE2IC0xNiAxNnQtMTYgLTE2cTAgLTczIDUxLjUgLTEyNC41dDEyNC41IC01MS41cTE2IDAgMTYgMTZ6TTE3MjggMTI4cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNDQ4cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTQ0OHEtNTIgMCAtOTAgMzh0LTM4IDkwcTUwIDQyIDkxIDg4dDg1IDExOS41dDc0LjUgMTU4LjUKdDUwIDIwNnQxOS41IDI2MHEwIDE1MiAxMTcgMjgyLjV0MzA3IDE1OC41cS04IDE5IC04IDM5cTAgNDAgMjggNjh0NjggMjh0NjggLTI4dDI4IC02OHEwIC0yMCAtOCAtMzlxMTkwIC0yOCAzMDcgLTE1OC41dDExNyAtMjgyLjVxMCAtMTM5IDE5LjUgLTI2MHQ1MCAtMjA2dDc0LjUgLTE1OC41dDg1IC0xMTkuNXQ5MSAtODh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvZmZlZSIgdW5pY29kZT0iJiN4ZjBmNDsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTE2NjQgODk2cTAgODAgLTU2IDEzNnQtMTM2IDU2aC02NHYtMzg0aDY0cTgwIDAgMTM2IDU2dDU2IDEzNnpNMCAxMjhoMTc5MnEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzVoLTEyODBxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXpNMTg1NiA4OTZxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtNjR2LTMycTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC03MDRxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djczNnEwIDI2IDE5IDQ1CnQ0NSAxOWgxMTUycTE1OSAwIDI3MS41IC0xMTIuNXQxMTIuNSAtMjcxLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZvb2QiIHVuaWNvZGU9IiYjeGYwZjU7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik02NDAgMTQ3MnYtNjQwcTAgLTYxIC0zNS41IC0xMTF0LTkyLjUgLTcwdi03NzlxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0xMjhxLTUyIDAgLTkwIDM4dC0zOCA5MHY3NzlxLTU3IDIwIC05Mi41IDcwdC0zNS41IDExMXY2NDBxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di00MTZxMCAtMjYgMTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXY0MTZxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di00MTZxMCAtMjYgMTkgLTQ1CnQ0NSAtMTl0NDUgMTl0MTkgNDV2NDE2cTAgMjYgMTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXpNMTQwOCAxNDcydi0xNjAwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTI4cS01MiAwIC05MCAzOHQtMzggOTB2NTEyaC0yMjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY4MDBxMCAxMzIgOTQgMjI2dDIyNiA5NGgyNTZxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmaWxlX3RleHRfYWx0IiB1bmljb2RlPSImI3hmMGY2OyIgCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgwegpNMzg0IDczNnEwIDE0IDkgMjN0MjMgOWg3MDRxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0cS0xNCAwIC0yMyA5dC05IDIzdjY0ek0xMTIwIDUxMnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC03MDRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNzA0ek0xMTIwIDI1NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC03MDQKcS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDcwNHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnVpbGRpbmciIHVuaWNvZGU9IiYjeGYwZjc7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik0zODQgMjI0di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTM4NCA0ODB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoKTTY0MCA0ODB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41egpNMTE1MiAyMjR2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNODk2IDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41egpNNjQwIDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgOTkydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck0xMTUyIDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek04OTYgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck02NDAgOTkydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTM4NCAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck0xMTUyIDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek04OTYgOTkydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck02NDAgMTI0OHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xMTUyIDk5MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41egpNODk2IDEyNDh2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTE1MiAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck04OTYgLTEyOGgzODR2MTUzNmgtMTE1MnYtMTUzNmgzODR2MjI0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzIwcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMjI0ek0xNDA4IDE0NzJ2LTE2NjRxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjgwcS0yNiAwIC00NSAxOXQtMTkgNDV2MTY2NHEwIDI2IDE5IDQ1dDQ1IDE5aDEyODBxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJob3NwaXRhbCIgdW5pY29kZT0iJiN4ZjBmODsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTM4NCAyMjR2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41egpNNjQwIDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck0xMTUyIDIyNHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek04OTYgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck02NDAgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck04OTYgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6Ck04OTYgLTEyOGgzODR2MTE1MmgtMjU2di0zMnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTQ0OHEtNDAgMCAtNjggMjh0LTI4IDY4djMyaC0yNTZ2LTExNTJoMzg0djIyNHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDMyMHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTIyNHpNODk2IDEwNTZ2MzIwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtNjRxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di05NmgtMTI4djk2cTAgMTMgLTkuNSAyMi41CnQtMjIuNSA5LjVoLTY0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtMzIwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXY5NmgxMjh2LTk2cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTQwOCAxMDg4di0xMjgwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyODBxMCAyNiAxOSA0NXQ0NSAxOWgzMjAKdjI4OHEwIDQwIDI4IDY4dDY4IDI4aDQ0OHE0MCAwIDY4IC0yOHQyOCAtNjh2LTI4OGgzMjBxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbWJ1bGFuY2UiIHVuaWNvZGU9IiYjeGYwZjk7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik02NDAgMTI4cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0yNTYgNjQwaDM4NHYyNTZoLTE1OHEtMTQgLTIgLTIyIC05bC0xOTUgLTE5NXEtNyAtMTIgLTkgLTIydi0zMHpNMTUzNiAxMjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41CnQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNjY0IDgwMHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMjI0djIyNHEwIDE0IC05IDIzdC0yMyA5aC0xOTJxLTE0IDAgLTIzIC05dC05IC0yM3YtMjI0aC0yMjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDIyNHYtMjI0cTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3YyMjRoMjI0cTE0IDAgMjMgOXQ5IDIzek0xOTIwIDEzNDR2LTExNTIKcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTkycTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTM4NHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxaC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXY0MTZxMCAyNiAxMyA1OHQzMiA1MWwxOTggMTk4cTE5IDE5IDUxIDMydDU4IDEzaDE2MHYzMjBxMCAyNiAxOSA0NXQ0NSAxOWgxMTUycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWVka2l0IiB1bmljb2RlPSImI3hmMGZhOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTI4MCA0MTZ2MTkycTAgMTQgLTkgMjN0LTIzIDloLTIyNHYyMjRxMCAxNCAtOSAyM3QtMjMgOWgtMTkycS0xNCAwIC0yMyAtOXQtOSAtMjN2LTIyNGgtMjI0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgyMjR2LTIyNHEwIC0xNCA5IC0yM3QyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN2MjI0aDIyNHExNCAwIDIzIDl0OSAyM3pNNjQwIDExNTJoNTEydjEyOGgtNTEydi0xMjh6TTI1NiAxMTUydi0xMjgwaC0zMgpxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djgzMnEwIDkyIDY2IDE1OHQxNTggNjZoMzJ6TTE0NDAgMTE1MnYtMTI4MGgtMTA4OHYxMjgwaDE2MHYxNjBxMCA0MCAyOCA2OHQ2OCAyOGg1NzZxNDAgMCA2OCAtMjh0MjggLTY4di0xNjBoMTYwek0xNzkyIDkyOHYtODMycTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC0zMnYxMjgwaDMycTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmaWdodGVyX2pldCIgdW5pY29kZT0iJiN4ZjBmYjsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTE5MjAgNTc2cS0xIC0zMiAtMjg4IC05NmwtMzUyIC0zMmwtMjI0IC02NGgtNjRsLTI5MyAtMzUyaDY5cTI2IDAgNDUgLTQuNXQxOSAtMTEuNXQtMTkgLTExLjV0LTQ1IC00LjVoLTk2aC0xNjBoLTY0djMyaDY0djQxNmgtMTYwbC0xOTIgLTIyNGgtOTZsLTMyIDMydjE5MmgzMnYzMmgxMjh2OGwtMTkyIDI0djEyOGwxOTIgMjR2OGgtMTI4djMyaC0zMnYxOTJsMzIgMzJoOTZsMTkyIC0yMjRoMTYwdjQxNmgtNjR2MzJoNjRoMTYwaDk2CnEyNiAwIDQ1IC00LjV0MTkgLTExLjV0LTE5IC0xMS41dC00NSAtNC41aC02OWwyOTMgLTM1Mmg2NGwyMjQgLTY0bDM1MiAtMzJxMTI4IC0yOCAyMDAgLTUydDgwIC0zNHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmVlciIgdW5pY29kZT0iJiN4ZjBmYzsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTY0MCA2NDB2Mzg0aC0yNTZ2LTI1NnEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjVoMTI4ek0xNjY0IDE5MnYtMTkyaC0xMTUydjE5MmwxMjggMTkyaC0xMjhxLTE1OSAwIC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV2MzIwbC02NCA2NGwzMiAxMjhoNDgwbDMyIDEyOGg5NjBsMzIgLTE5MmwtNjQgLTMydi04MDB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Imhfc2lnbiIgdW5pY29kZT0iJiN4ZjBmZDsiIApkPSJNMTI4MCAxOTJ2ODk2cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMzIwaC01MTJ2MzIwcTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtODk2cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV2MzIwaDUxMnYtMzIwcTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjBmZSIgdW5pY29kZT0iJiN4ZjBmZTsiIApkPSJNMTI4MCA1NzZ2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMzIwdjMyMHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTMyMGgtMzIwcS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMzIwdi0zMjBxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXYzMjBoMzIwcTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZG91YmxlX2FuZ2xlX2xlZnQiIHVuaWNvZGU9IiYjeGYxMDA7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik02MjcgMTYwcTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMzkzIC0zOTNsMzkzIC0zOTNxMTAgLTEwIDEwIC0yM3pNMTAxMSAxNjBxMCAtMTMgLTEwIC0yM2wtNTAgLTUwcS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTQ2NiA0NjZxLTEwIDEwIC0xMCAyMwp0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMzkzIC0zOTNsMzkzIC0zOTNxMTAgLTEwIDEwIC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZG91YmxlX2FuZ2xlX3JpZ2h0IiB1bmljb2RlPSImI3hmMTAxOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNNTk1IDU3NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDM5MyAzOTNsLTM5MyAzOTNxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3pNOTc5IDU3NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzCmwzOTMgMzkzbC0zOTMgMzkzcS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImRvdWJsZV9hbmdsZV91cCIgdW5pY29kZT0iJiN4ZjEwMjsiIGhvcml6LWFkdi14PSIxMTUyIiAKZD0iTTEwNzUgMjI0cTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0zOTMgMzkzbC0zOTMgLTM5M3EtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDQ2NiA0NjZxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN6TTEwNzUgNjA4cTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0zOTMgMzkzbC0zOTMgLTM5MwpxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNTAgNTBxLTEwIDEwIC0xMCAyM3QxMCAyM2w0NjYgNDY2cTEwIDEwIDIzIDEwdDIzIC0xMGw0NjYgLTQ2NnExMCAtMTAgMTAgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3VibGVfYW5nbGVfZG93biIgdW5pY29kZT0iJiN4ZjEwMzsiIGhvcml6LWFkdi14PSIxMTUyIiAKZD0iTTEwNzUgNjcycTAgLTEzIC0xMCAtMjNsLTQ2NiAtNDY2cS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTQ2NiA0NjZxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsMzkzIC0zOTNsMzkzIDM5M3ExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6TTEwNzUgMTA1NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjMKdDEwIDIzbDUwIDUwcTEwIDEwIDIzIDEwdDIzIC0xMGwzOTMgLTM5M2wzOTMgMzkzcTEwIDEwIDIzIDEwdDIzIC0xMGw1MCAtNTBxMTAgLTEwIDEwIC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYW5nbGVfbGVmdCIgdW5pY29kZT0iJiN4ZjEwNDsiIGhvcml6LWFkdi14PSI2NDAiIApkPSJNNjI3IDk5MnEwIC0xMyAtMTAgLTIzbC0zOTMgLTM5M2wzOTMgLTM5M3ExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFuZ2xlX3JpZ2h0IiB1bmljb2RlPSImI3hmMTA1OyIgaG9yaXotYWR2LXg9IjY0MCIgCmQ9Ik01OTUgNTc2cTAgLTEzIC0xMCAtMjNsLTQ2NiAtNDY2cS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTUwIDUwcS0xMCAxMCAtMTAgMjN0MTAgMjNsMzkzIDM5M2wtMzkzIDM5M3EtMTAgMTAgLTEwIDIzdDEwIDIzbDUwIDUwcTEwIDEwIDIzIDEwdDIzIC0xMGw0NjYgLTQ2NnExMCAtMTAgMTAgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmdsZV91cCIgdW5pY29kZT0iJiN4ZjEwNjsiIGhvcml6LWFkdi14PSIxMTUyIiAKZD0iTTEwNzUgMzUycTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0zOTMgMzkzbC0zOTMgLTM5M3EtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDQ2NiA0NjZxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFuZ2xlX2Rvd24iIHVuaWNvZGU9IiYjeGYxMDc7IiBob3Jpei1hZHYteD0iMTE1MiIgCmQ9Ik0xMDc1IDgwMHEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDM5MyAtMzkzbDM5MyAzOTNxMTAgMTAgMjMgMTB0MjMgLTEwbDUwIC01MHExMCAtMTAgMTAgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkZXNrdG9wIiB1bmljb2RlPSImI3hmMTA4OyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNMTc5MiA1NDR2ODMycTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTYwMHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTgzMnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE2MDBxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTkyMCAxMzc2di0xMDg4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC01NDRxMCAtMzcgMTYgLTc3LjV0MzIgLTcxdDE2IC00My41cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNTEycS0yNiAwIC00NSAxOQp0LTE5IDQ1cTAgMTQgMTYgNDR0MzIgNzB0MTYgNzhoLTU0NHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTYwMHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGFwdG9wIiB1bmljb2RlPSImI3hmMTA5OyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNNDE2IDI1NnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2NzA0cTAgNjYgNDcgMTEzdDExMyA0N2gxMDg4cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi03MDRxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTEwODh6TTM4NCAxMTIwdi03MDRxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxMDg4cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV2NzA0cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTA4OHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV6Ck0xNzYwIDE5MmgxNjB2LTk2cTAgLTQwIC00NyAtNjh0LTExMyAtMjhoLTE2MDBxLTY2IDAgLTExMyAyOHQtNDcgNjh2OTZoMTYwaDE2MDB6TTEwNDAgOTZxMTYgMCAxNiAxNnQtMTYgMTZoLTE2MHEtMTYgMCAtMTYgLTE2dDE2IC0xNmgxNjB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InRhYmxldCIgdW5pY29kZT0iJiN4ZjEwYTsiIGhvcml6LWFkdi14PSIxMTUyIiAKZD0iTTY0MCAxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xMDI0IDI4OHY5NjBxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC04MzJxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di05NjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg4MzJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTE1MiAxMjQ4di0xMDg4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC04MzIKcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2g4MzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im1vYmlsZV9waG9uZSIgdW5pY29kZT0iJiN4ZjEwYjsiIGhvcml6LWFkdi14PSI3NjgiIApkPSJNNDY0IDEyOHEwIDMzIC0yMy41IDU2LjV0LTU2LjUgMjMuNXQtNTYuNSAtMjMuNXQtMjMuNSAtNTYuNXQyMy41IC01Ni41dDU2LjUgLTIzLjV0NTYuNSAyMy41dDIzLjUgNTYuNXpNNjcyIDI4OHY3MDRxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC01MTJxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di03MDRxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg1MTJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNNDgwIDExMzYKcTAgMTYgLTE2IDE2aC0xNjBxLTE2IDAgLTE2IC0xNnQxNiAtMTZoMTYwcTE2IDAgMTYgMTZ6TTc2OCAxMTUydi0xMDI0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2MTAyNHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9ibGFuayIgdW5pY29kZT0iJiN4ZjEwYzsiIApkPSJNNzY4IDExODRxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczdC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDMKdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxdW90ZV9sZWZ0IiB1bmljb2RlPSImI3hmMTBkOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNNzY4IDU3NnYtMzg0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2aC0zODRxLTgwIDAgLTEzNiA1NnQtNTYgMTM2djcwNHEwIDEwNCA0MC41IDE5OC41dDEwOS41IDE2My41dDE2My41IDEwOS41dDE5OC41IDQwLjVoNjRxMjYgMCA0NSAtMTl0MTkgLTQ1di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NHEtMTA2IDAgLTE4MSAtNzV0LTc1IC0xODF2LTMycTAgLTQwIDI4IC02OHQ2OCAtMjhoMjI0cTgwIDAgMTM2IC01NnQ1NiAtMTM2egpNMTY2NCA1NzZ2LTM4NHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NmgtMzg0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnY3MDRxMCAxMDQgNDAuNSAxOTguNXQxMDkuNSAxNjMuNXQxNjMuNSAxMDkuNXQxOTguNSA0MC41aDY0cTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNjRxLTEwNiAwIC0xODEgLTc1dC03NSAtMTgxdi0zMnEwIC00MCAyOCAtNjh0NjggLTI4aDIyNHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icXVvdGVfcmlnaHQiIHVuaWNvZGU9IiYjeGYxMGU7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik03NjggMTIxNnYtNzA0cTAgLTEwNCAtNDAuNSAtMTk4LjV0LTEwOS41IC0xNjMuNXQtMTYzLjUgLTEwOS41dC0xOTguNSAtNDAuNWgtNjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg2NHExMDYgMCAxODEgNzV0NzUgMTgxdjMycTAgNDAgLTI4IDY4dC02OCAyOGgtMjI0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnYzODRxMCA4MCA1NiAxMzZ0MTM2IDU2aDM4NHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnpNMTY2NCAxMjE2CnYtNzA0cTAgLTEwNCAtNDAuNSAtMTk4LjV0LTEwOS41IC0xNjMuNXQtMTYzLjUgLTEwOS41dC0xOTguNSAtNDAuNWgtNjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg2NHExMDYgMCAxODEgNzV0NzUgMTgxdjMycTAgNDAgLTI4IDY4dC02OCAyOGgtMjI0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnYzODRxMCA4MCA1NiAxMzZ0MTM2IDU2aDM4NHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3Bpbm5lciIgdW5pY29kZT0iJiN4ZjExMDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTUyNiAxNDJxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjVxLTUyIDAgLTkwIDM4dC0zOCA5MHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xMDI0IC02NHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTMyMCA2NDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjUKdC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTUyMiAxNDJxMCAtNTIgLTM4IC05MHQtOTAgLTM4cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNNTU4IDExMzhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDd0LTExMyA0N3QtNDcgMTEzdDQ3IDExM3QxMTMgNDd0MTEzIC00N3Q0NyAtMTEzegpNMTcyOCA2NDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xMDg4IDEzNDRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjE4IDExMzhxMCAtOTMgLTY2IC0xNTguNXQtMTU4IC02NS41cS05MyAwIC0xNTguNSA2NS41dC02NS41IDE1OC41CnEwIDkyIDY1LjUgMTU4dDE1OC41IDY2cTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGUiIHVuaWNvZGU9IiYjeGYxMTE7IiAKZD0iTTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXBseSIgdW5pY29kZT0iJiN4ZjExMjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgNDE2cTAgLTE2NiAtMTI3IC00NTFxLTMgLTcgLTEwLjUgLTI0dC0xMy41IC0zMHQtMTMgLTIycS0xMiAtMTcgLTI4IC0xN3EtMTUgMCAtMjMuNSAxMHQtOC41IDI1cTAgOSAyLjUgMjYuNXQyLjUgMjMuNXE1IDY4IDUgMTIzcTAgMTAxIC0xNy41IDE4MXQtNDguNSAxMzguNXQtODAgMTAxdC0xMDUuNSA2OS41dC0xMzMgNDIuNXQtMTU0IDIxLjV0LTE3NS41IDZoLTIyNHYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTkKbC01MTIgNTEycS0xOSAxOSAtMTkgNDV0MTkgNDVsNTEyIDUxMnExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1di0yNTZoMjI0cTcxMyAwIDg3NSAtNDAzcTUzIC0xMzQgNTMgLTMzM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2l0aHViX2FsdCIgdW5pY29kZT0iJiN4ZjExMzsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTY0MCAzMjBxMCAtNDAgLTEyLjUgLTgydC00MyAtNzZ0LTcyLjUgLTM0dC03Mi41IDM0dC00MyA3NnQtMTIuNSA4MnQxMi41IDgydDQzIDc2dDcyLjUgMzR0NzIuNSAtMzR0NDMgLTc2dDEyLjUgLTgyek0xMjgwIDMyMHEwIC00MCAtMTIuNSAtODJ0LTQzIC03NnQtNzIuNSAtMzR0LTcyLjUgMzR0LTQzIDc2dC0xMi41IDgydDEyLjUgODJ0NDMgNzZ0NzIuNSAzNHQ3Mi41IC0zNHQ0MyAtNzZ0MTIuNSAtODJ6TTE0NDAgMzIwCnEwIDEyMCAtNjkgMjA0dC0xODcgODRxLTQxIDAgLTE5NSAtMjFxLTcxIC0xMSAtMTU3IC0xMXQtMTU3IDExcS0xNTIgMjEgLTE5NSAyMXEtMTE4IDAgLTE4NyAtODR0LTY5IC0yMDRxMCAtODggMzIgLTE1My41dDgxIC0xMDN0MTIyIC02MHQxNDAgLTI5LjV0MTQ5IC03aDE2OHE4MiAwIDE0OSA3dDE0MCAyOS41dDEyMiA2MHQ4MSAxMDN0MzIgMTUzLjV6TTE2NjQgNDk2cTAgLTIwNyAtNjEgLTMzMXEtMzggLTc3IC0xMDUuNSAtMTMzdC0xNDEgLTg2CnQtMTcwIC00Ny41dC0xNzEuNSAtMjJ0LTE2NyAtNC41cS03OCAwIC0xNDIgM3QtMTQ3LjUgMTIuNXQtMTUyLjUgMzB0LTEzNyA1MS41dC0xMjEgODF0LTg2IDExNXEtNjIgMTIzIC02MiAzMzFxMCAyMzcgMTM2IDM5NnEtMjcgODIgLTI3IDE3MHEwIDExNiA1MSAyMThxMTA4IDAgMTkwIC0zOS41dDE4OSAtMTIzLjVxMTQ3IDM1IDMwOSAzNXExNDggMCAyODAgLTMycTEwNSA4MiAxODcgMTIxdDE4OSAzOXE1MSAtMTAyIDUxIC0yMTgKcTAgLTg3IC0yNyAtMTY4cTEzNiAtMTYwIDEzNiAtMzk4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmb2xkZXJfY2xvc2VfYWx0IiB1bmljb2RlPSImI3hmMTE0OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTUzNiAyMjR2NzA0cTAgNDAgLTI4IDY4dC02OCAyOGgtNzA0cS00MCAwIC02OCAyOHQtMjggNjh2NjRxMCA0MCAtMjggNjh0LTY4IDI4aC0zMjBxLTQwIDAgLTY4IC0yOHQtMjggLTY4di05NjBxMCAtNDAgMjggLTY4dDY4IC0yOGgxMjE2cTQwIDAgNjggMjh0MjggNjh6TTE2NjQgOTI4di03MDRxMCAtOTIgLTY2IC0xNTh0LTE1OCAtNjZoLTEyMTZxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djk2MHEwIDkyIDY2IDE1OHQxNTggNjZoMzIwCnE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNjcycTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmb2xkZXJfb3Blbl9hbHQiIHVuaWNvZGU9IiYjeGYxMTU7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik0xNzgxIDYwNXEwIDM1IC01MyAzNWgtMTA4OHEtNDAgMCAtODUuNSAtMjEuNXQtNzEuNSAtNTIuNWwtMjk0IC0zNjNxLTE4IC0yNCAtMTggLTQwcTAgLTM1IDUzIC0zNWgxMDg4cTQwIDAgODYgMjJ0NzEgNTNsMjk0IDM2M3ExOCAyMiAxOCAzOXpNNjQwIDc2OGg3Njh2MTYwcTAgNDAgLTI4IDY4dC02OCAyOGgtNTc2cS00MCAwIC02OCAyOHQtMjggNjh2NjRxMCA0MCAtMjggNjh0LTY4IDI4aC0zMjBxLTQwIDAgLTY4IC0yOHQtMjggLTY4CnYtODUzbDI1NiAzMTVxNDQgNTMgMTE2IDg3LjV0MTQwIDM0LjV6TTE5MDkgNjA1cTAgLTYyIC00NiAtMTIwbC0yOTUgLTM2M3EtNDMgLTUzIC0xMTYgLTg3LjV0LTE0MCAtMzQuNWgtMTA4OHEtOTIgMCAtMTU4IDY2dC02NiAxNTh2OTYwcTAgOTIgNjYgMTU4dDE1OCA2NmgzMjBxOTIgMCAxNTggLTY2dDY2IC0xNTh2LTMyaDU0NHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMTYwaDE5MnE1NCAwIDk5IC0yNC41dDY3IC03MC41cTE1IC0zMiAxNSAtNjh6CiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJleHBhbmRfYWx0IiB1bmljb2RlPSImI3hmMTE2OyIgaG9yaXotYWR2LXg9IjE3OTIiIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2xsYXBzZV9hbHQiIHVuaWNvZGU9IiYjeGYxMTc7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNtaWxlIiB1bmljb2RlPSImI3hmMTE4OyIgCmQ9Ik0xMTM0IDQ2MXEtMzcgLTEyMSAtMTM4IC0xOTV0LTIyOCAtNzR0LTIyOCA3NHQtMTM4IDE5NXEtOCAyNSA0IDQ4LjV0MzggMzEuNXEyNSA4IDQ4LjUgLTR0MzEuNSAtMzhxMjUgLTgwIDkyLjUgLTEyOS41dDE1MS41IC00OS41dDE1MS41IDQ5LjV0OTIuNSAxMjkuNXE4IDI2IDMyIDM4dDQ5IDR0MzcgLTMxLjV0NCAtNDguNXpNNjQwIDg5NnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjUKdDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xMTUyIDg5NnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE0MDggNjQwcTAgMTMwIC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxdC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDR0LTUxIC0yNDguNQp0NTEgLTI0OC41dDEzNi41IC0yMDR0MjA0IC0xMzYuNXQyNDguNSAtNTF0MjQ4LjUgNTF0MjA0IDEzNi41dDEzNi41IDIwNHQ1MSAyNDguNXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZyb3duIiB1bmljb2RlPSImI3hmMTE5OyIgCmQ9Ik0xMTM0IDMwN3E4IC0yNSAtNCAtNDguNXQtMzcgLTMxLjV0LTQ5IDR0LTMyIDM4cS0yNSA4MCAtOTIuNSAxMjkuNXQtMTUxLjUgNDkuNXQtMTUxLjUgLTQ5LjV0LTkyLjUgLTEyOS41cS04IC0yNiAtMzEuNSAtMzh0LTQ4LjUgLTRxLTI2IDggLTM4IDMxLjV0LTQgNDguNXEzNyAxMjEgMTM4IDE5NXQyMjggNzR0MjI4IC03NHQxMzggLTE5NXpNNjQwIDg5NnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41CnQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xMTUyIDg5NnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE0MDggNjQwcTAgMTMwIC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxdC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDQKdC01MSAtMjQ4LjV0NTEgLTI0OC41dDEzNi41IC0yMDR0MjA0IC0xMzYuNXQyNDguNSAtNTF0MjQ4LjUgNTF0MjA0IDEzNi41dDEzNi41IDIwNHQ1MSAyNDguNXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im1laCIgdW5pY29kZT0iJiN4ZjExYTsiIApkPSJNMTE1MiA0NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NDBxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWg2NDBxMjYgMCA0NSAtMTl0MTkgLTQ1ek02NDAgODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTE1MiA4OTZxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNQp0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTQwOCA2NDBxMCAxMzAgLTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF0LTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV6TTE1MzYgNjQwCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2FtZXBhZCIgdW5pY29kZT0iJiN4ZjExYjsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTgzMiA0NDh2MTI4cTAgMTQgLTkgMjN0LTIzIDloLTE5MnYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MmgtMTkycS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxOTJ2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN2MTkyaDE5MnExNCAwIDIzIDl0OSAyM3pNMTQwOCAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjUKdC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNjY0IDY0MHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTkyMCA1MTJxMCAtMjEyIC0xNTAgLTM2MnQtMzYyIC0xNTBxLTE5MiAwIC0zMzggMTI4aC0yMjBxLTE0NiAtMTI4IC0zMzggLTEyOHEtMjEyIDAgLTM2MiAxNTAKdC0xNTAgMzYydDE1MCAzNjJ0MzYyIDE1MGg4OTZxMjEyIDAgMzYyIC0xNTB0MTUwIC0zNjJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImtleWJvYXJkIiB1bmljb2RlPSImI3hmMTFjOyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNMzg0IDM2OHYtOTZxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTUxMiA2MjR2LTk2cTAgLTE2IC0xNiAtMTZoLTIyNHEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmgyMjRxMTYgMCAxNiAtMTZ6TTM4NCA4ODB2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek0xNDA4IDM2OHYtOTZxMCAtMTYgLTE2IC0xNgpoLTg2NHEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg4NjRxMTYgMCAxNiAtMTZ6TTc2OCA2MjR2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek02NDAgODgwdi05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTAyNCA2MjR2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2Cmg5NnExNiAwIDE2IC0xNnpNODk2IDg4MHYtOTZxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTEyODAgNjI0di05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTY2NCAzNjh2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek0xMTUyIDg4MHYtOTYKcTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek0xNDA4IDg4MHYtOTZxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTE2NjQgODgwdi0zNTJxMCAtMTYgLTE2IC0xNmgtMjI0cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDExMnYyNDBxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTc5MiAxMjh2ODk2aC0xNjY0di04OTYKaDE2NjR6TTE5MjAgMTAyNHYtODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC0xNjY0cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXY4OTZxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDE2NjRxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZsYWdfYWx0IiB1bmljb2RlPSImI3hmMTFkOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTY2NCA0OTF2NjE2cS0xNjkgLTkxIC0zMDYgLTkxcS04MiAwIC0xNDUgMzJxLTEwMCA0OSAtMTg0IDc2LjV0LTE3OCAyNy41cS0xNzMgMCAtNDAzIC0xMjd2LTU5OXEyNDUgMTEzIDQzMyAxMTNxNTUgMCAxMDMuNSAtNy41dDk4IC0yNnQ3NyAtMzF0ODIuNSAtMzkuNWwyOCAtMTRxNDQgLTIyIDEwMSAtMjJxMTIwIDAgMjkzIDkyek0zMjAgMTI4MHEwIC0zNSAtMTcuNSAtNjR0LTQ2LjUgLTQ2di0xMjY2cTAgLTE0IC05IC0yM3QtMjMgLTkKaC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMjY2cS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xNzkyIDEyMTZ2LTc2M3EwIC0zOSAtMzUgLTU3cS0xMCAtNSAtMTcgLTlxLTIxOCAtMTE2IC0zNjkgLTExNnEtODggMCAtMTU4IDM1bC0yOCAxNHEtNjQgMzMgLTk5IDQ4dC05MSAyOXQtMTE0IDE0cS0xMDIgMCAtMjM1LjUgLTQ0dC0yMjguNSAtMTAyCnEtMTUgLTkgLTMzIC05cS0xNiAwIC0zMiA4cS0zMiAxOSAtMzIgNTZ2NzQycTAgMzUgMzEgNTVxMzUgMjEgNzguNSA0Mi41dDExNCA1MnQxNTIuNSA0OS41dDE1NSAxOXExMTIgMCAyMDkgLTMxdDIwOSAtODZxMzggLTE5IDg5IC0xOXExMjIgMCAzMTAgMTEycTIyIDEyIDMxIDE3cTMxIDE2IDYyIC0ycTMxIC0yMCAzMSAtNTV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZsYWdfY2hlY2tlcmVkIiB1bmljb2RlPSImI3hmMTFlOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNODMyIDUzNnYxOTJxLTE4MSAtMTYgLTM4NCAtMTE3di0xODVxMjA1IDk2IDM4NCAxMTB6TTgzMiA5NTR2MTk3cS0xNzIgLTggLTM4NCAtMTI2di0xODlxMjE1IDExMSAzODQgMTE4ek0xNjY0IDQ5MXYxODRxLTIzNSAtMTE2IC0zODQgLTcxdjIyNHEtMjAgNiAtMzkgMTVxLTUgMyAtMzMgMTd0LTM0LjUgMTd0LTMxLjUgMTV0LTM0LjUgMTUuNXQtMzIuNSAxM3QtMzYgMTIuNXQtMzUgOC41dC0zOS41IDcuNXQtMzkuNSA0dC00NCAyCnEtMjMgMCAtNDkgLTN2LTIyMmgxOXExMDIgMCAxOTIuNSAtMjl0MTk3LjUgLTgycTE5IC05IDM5IC0xNXYtMTg4cTQyIC0xNyA5MSAtMTdxMTIwIDAgMjkzIDkyek0xNjY0IDkxOHYxODlxLTE2OSAtOTEgLTMwNiAtOTFxLTQ1IDAgLTc4IDh2LTE5NnExNDggLTQyIDM4NCA5MHpNMzIwIDEyODBxMCAtMzUgLTE3LjUgLTY0dC00Ni41IC00NnYtMTI2NnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMjY2CnEtMjkgMTcgLTQ2LjUgNDZ0LTE3LjUgNjRxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTc5MiAxMjE2di03NjNxMCAtMzkgLTM1IC01N3EtMTAgLTUgLTE3IC05cS0yMTggLTExNiAtMzY5IC0xMTZxLTg4IDAgLTE1OCAzNWwtMjggMTRxLTY0IDMzIC05OSA0OHQtOTEgMjl0LTExNCAxNHEtMTAyIDAgLTIzNS41IC00NHQtMjI4LjUgLTEwMnEtMTUgLTkgLTMzIC05cS0xNiAwIC0zMiA4CnEtMzIgMTkgLTMyIDU2djc0MnEwIDM1IDMxIDU1cTM1IDIxIDc4LjUgNDIuNXQxMTQgNTJ0MTUyLjUgNDkuNXQxNTUgMTlxMTEyIDAgMjA5IC0zMXQyMDkgLTg2cTM4IC0xOSA4OSAtMTlxMTIyIDAgMzEwIDExMnEyMiAxMiAzMSAxN3EzMSAxNiA2MiAtMnEzMSAtMjAgMzEgLTU1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0ZXJtaW5hbCIgdW5pY29kZT0iJiN4ZjEyMDsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTU4NSA1NTNsLTQ2NiAtNDY2cS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTUwIDUwcS0xMCAxMCAtMTAgMjN0MTAgMjNsMzkzIDM5M2wtMzkzIDM5M3EtMTAgMTAgLTEwIDIzdDEwIDIzbDUwIDUwcTEwIDEwIDIzIDEwdDIzIC0xMGw0NjYgLTQ2NnExMCAtMTAgMTAgLTIzdC0xMCAtMjN6TTE2NjQgOTZ2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTk2MHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NjBxMTQgMCAyMyAtOQp0OSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvZGUiIHVuaWNvZGU9IiYjeGYxMjE7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik02MTcgMTM3bC01MCAtNTBxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNDY2IDQ2NnEtMTAgMTAgLTEwIDIzdDEwIDIzbDQ2NiA0NjZxMTAgMTAgMjMgMTB0MjMgLTEwbDUwIC01MHExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTM5MyAtMzkzbDM5MyAtMzkzcTEwIC0xMCAxMCAtMjN0LTEwIC0yM3pNMTIwOCAxMjA0bC0zNzMgLTEyOTFxLTQgLTEzIC0xNS41IC0xOS41dC0yMy41IC0yLjVsLTYyIDE3cS0xMyA0IC0xOS41IDE1LjV0LTIuNSAyNC41CmwzNzMgMTI5MXE0IDEzIDE1LjUgMTkuNXQyMy41IDIuNWw2MiAtMTdxMTMgLTQgMTkuNSAtMTUuNXQyLjUgLTI0LjV6TTE4NjUgNTUzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDM5MyAzOTNsLTM5MyAzOTNxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3QtMTAgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXBseV9hbGwiIHVuaWNvZGU9IiYjeGYxMjI7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik02NDAgNDU0di03MHEwIC00MiAtMzkgLTU5cS0xMyAtNSAtMjUgLTVxLTI3IDAgLTQ1IDE5bC01MTIgNTEycS0xOSAxOSAtMTkgNDV0MTkgNDVsNTEyIDUxMnEyOSAzMSA3MCAxNHEzOSAtMTcgMzkgLTU5di02OWwtMzk3IC0zOThxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NXpNMTc5MiA0MTZxMCAtNTggLTE3IC0xMzMuNXQtMzguNSAtMTM4dC00OCAtMTI1dC00MC41IC05MC41bC0yMCAtNDBxLTggLTE3IC0yOCAtMTdxLTYgMCAtOSAxCnEtMjUgOCAtMjMgMzRxNDMgNDAwIC0xMDYgNTY1cS02NCA3MSAtMTcwLjUgMTEwLjV0LTI2Ny41IDUyLjV2LTI1MXEwIC00MiAtMzkgLTU5cS0xMyAtNSAtMjUgLTVxLTI3IDAgLTQ1IDE5bC01MTIgNTEycS0xOSAxOSAtMTkgNDV0MTkgNDVsNTEyIDUxMnEyOSAzMSA3MCAxNHEzOSAtMTcgMzkgLTU5di0yNjJxNDExIC0yOCA1OTkgLTIyMXExNjkgLTE3MyAxNjkgLTUwOXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3Rhcl9oYWxmX2VtcHR5IiB1bmljb2RlPSImI3hmMTIzOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTE4NiA1NzlsMjU3IDI1MGwtMzU2IDUybC02NiAxMGwtMzAgNjBsLTE1OSAzMjJ2LTk2M2w1OSAtMzFsMzE4IC0xNjhsLTYwIDM1NWwtMTIgNjZ6TTE2MzggODQxbC0zNjMgLTM1NGw4NiAtNTAwcTUgLTMzIC02IC01MS41dC0zNCAtMTguNXEtMTcgMCAtNDAgMTJsLTQ0OSAyMzZsLTQ0OSAtMjM2cS0yMyAtMTIgLTQwIC0xMnEtMjMgMCAtMzQgMTguNXQtNiA1MS41bDg2IDUwMGwtMzY0IDM1NHEtMzIgMzIgLTIzIDU5LjV0NTQgMzQuNQpsNTAyIDczbDIyNSA0NTVxMjAgNDEgNDkgNDFxMjggMCA0OSAtNDFsMjI1IC00NTVsNTAyIC03M3E0NSAtNyA1NCAtMzQuNXQtMjQgLTU5LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImxvY2F0aW9uX2Fycm93IiB1bmljb2RlPSImI3hmMTI0OyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTQwMSAxMTg3bC02NDAgLTEyODBxLTE3IC0zNSAtNTcgLTM1cS01IDAgLTE1IDJxLTIyIDUgLTM1LjUgMjIuNXQtMTMuNSAzOS41djU3NmgtNTc2cS0yMiAwIC0zOS41IDEzLjV0LTIyLjUgMzUuNXQ0IDQydDI5IDMwbDEyODAgNjQwcTEzIDcgMjkgN3EyNyAwIDQ1IC0xOXExNSAtMTQgMTguNSAtMzQuNXQtNi41IC0zOS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjcm9wIiB1bmljb2RlPSImI3hmMTI1OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNNTU3IDI1Nmg1OTV2NTk1ek01MTIgMzAxbDU5NSA1OTVoLTU5NXYtNTk1ek0xNjY0IDIyNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTIyNHYtMjI0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YyMjRoLTg2NHEtMTQgMCAtMjMgOXQtOSAyM3Y4NjRoLTIyNHEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMjI0djIyNHEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yMwp2LTIyNGg4NTFsMjQ2IDI0N3ExMCA5IDIzIDl0MjMgLTlxOSAtMTAgOSAtMjN0LTkgLTIzbC0yNDcgLTI0NnYtODUxaDIyNHExNCAwIDIzIC05dDkgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2RlX2ZvcmsiIHVuaWNvZGU9IiYjeGYxMjY7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik0yODggNjRxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek0yODggMTIxNnEwIDQwIC0yOCA2OHQtNjggMjh0LTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh0NjggMjh0MjggNjh6TTkyOCAxMDg4cTAgNDAgLTI4IDY4dC02OCAyOHQtNjggLTI4dC0yOCAtNjh0MjggLTY4dDY4IC0yOHQ2OCAyOHQyOCA2OHpNMTAyNCAxMDg4cTAgLTUyIC0yNiAtOTYuNXQtNzAgLTY5LjUKcS0yIC0yODcgLTIyNiAtNDE0cS02NyAtMzggLTIwMyAtODFxLTEyOCAtNDAgLTE2OS41IC03MXQtNDEuNSAtMTAwdi0yNnE0NCAtMjUgNzAgLTY5LjV0MjYgLTk2LjVxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2cTAgNTIgMjYgOTYuNXQ3MCA2OS41djgyMHEtNDQgMjUgLTcwIDY5LjV0LTI2IDk2LjVxMCA4MCA1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnEwIC01MiAtMjYgLTk2LjV0LTcwIC02OS41di00OTcKcTU0IDI2IDE1NCA1N3E1NSAxNyA4Ny41IDI5LjV0NzAuNSAzMXQ1OSAzOS41dDQwLjUgNTF0MjggNjkuNXQ4LjUgOTEuNXEtNDQgMjUgLTcwIDY5LjV0LTI2IDk2LjVxMCA4MCA1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5saW5rIiB1bmljb2RlPSImI3hmMTI3OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNNDM5IDI2NWwtMjU2IC0yNTZxLTExIC05IC0yMyAtOXQtMjMgOXEtOSAxMCAtOSAyM3Q5IDIzbDI1NiAyNTZxMTAgOSAyMyA5dDIzIC05cTkgLTEwIDkgLTIzdC05IC0yM3pNNjA4IDIyNHYtMzIwcTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN2MzIwcTAgMTQgOSAyM3QyMyA5dDIzIC05dDkgLTIzek0zODQgNDQ4cTAgLTE0IC05IC0yM3QtMjMgLTloLTMyMHEtMTQgMCAtMjMgOXQtOSAyM3Q5IDIzdDIzIDloMzIwCnExNCAwIDIzIC05dDkgLTIzek0xNjQ4IDMyMHEwIC0xMjAgLTg1IC0yMDNsLTE0NyAtMTQ2cS04MyAtODMgLTIwMyAtODNxLTEyMSAwIC0yMDQgODVsLTMzNCAzMzVxLTIxIDIxIC00MiA1NmwyMzkgMThsMjczIC0yNzRxMjcgLTI3IDY4IC0yNy41dDY4IDI2LjVsMTQ3IDE0NnEyOCAyOCAyOCA2N3EwIDQwIC0yOCA2OGwtMjc0IDI3NWwxOCAyMzlxMzUgLTIxIDU2IC00MmwzMzYgLTMzNnE4NCAtODYgODQgLTIwNHpNMTAzMSAxMDQ0bC0yMzkgLTE4CmwtMjczIDI3NHEtMjggMjggLTY4IDI4cS0zOSAwIC02OCAtMjdsLTE0NyAtMTQ2cS0yOCAtMjggLTI4IC02N3EwIC00MCAyOCAtNjhsMjc0IC0yNzRsLTE4IC0yNDBxLTM1IDIxIC01NiA0MmwtMzM2IDMzNnEtODQgODYgLTg0IDIwNHEwIDEyMCA4NSAyMDNsMTQ3IDE0NnE4MyA4MyAyMDMgODNxMTIxIDAgMjA0IC04NWwzMzQgLTMzNXEyMSAtMjEgNDIgLTU2ek0xNjY0IDk2MHEwIC0xNCAtOSAtMjN0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDkKdC05IDIzdDkgMjN0MjMgOWgzMjBxMTQgMCAyMyAtOXQ5IC0yM3pNMTEyMCAxNTA0di0zMjBxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3YzMjBxMCAxNCA5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTE1MjcgMTM1M2wtMjU2IC0yNTZxLTExIC05IC0yMyAtOXQtMjMgOXEtOSAxMCAtOSAyM3Q5IDIzbDI1NiAyNTZxMTAgOSAyMyA5dDIzIC05cTkgLTEwIDkgLTIzdC05IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icXVlc3Rpb24iIHVuaWNvZGU9IiYjeGYxMjg7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik03MDQgMjgwdi0yNDBxMCAtMTYgLTEyIC0yOHQtMjggLTEyaC0yNDBxLTE2IDAgLTI4IDEydC0xMiAyOHYyNDBxMCAxNiAxMiAyOHQyOCAxMmgyNDBxMTYgMCAyOCAtMTJ0MTIgLTI4ek0xMDIwIDg4MHEwIC01NCAtMTUuNSAtMTAxdC0zNSAtNzYuNXQtNTUgLTU5LjV0LTU3LjUgLTQzLjV0LTYxIC0zNS41cS00MSAtMjMgLTY4LjUgLTY1dC0yNy41IC02N3EwIC0xNyAtMTIgLTMyLjV0LTI4IC0xNS41aC0yNDBxLTE1IDAgLTI1LjUgMTguNQp0LTEwLjUgMzcuNXY0NXEwIDgzIDY1IDE1Ni41dDE0MyAxMDguNXE1OSAyNyA4NCA1NnQyNSA3NnEwIDQyIC00Ni41IDc0dC0xMDcuNSAzMnEtNjUgMCAtMTA4IC0yOXEtMzUgLTI1IC0xMDcgLTExNXEtMTMgLTE2IC0zMSAtMTZxLTEyIDAgLTI1IDhsLTE2NCAxMjVxLTEzIDEwIC0xNS41IDI1dDUuNSAyOHExNjAgMjY2IDQ2NCAyNjZxODAgMCAxNjEgLTMxdDE0NiAtODN0MTA2IC0xMjcuNXQ0MSAtMTU4LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8yNzkiIHVuaWNvZGU9IiYjeGYxMjk7IiBob3Jpei1hZHYteD0iNjQwIiAKZD0iTTY0MCAxOTJ2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDY0djM4NGgtNjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgzODRxMjYgMCA0NSAtMTl0MTkgLTQ1di01NzZoNjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek01MTIgMTM0NHYtMTkycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2MTkyCnEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImV4Y2xhbWF0aW9uIiB1bmljb2RlPSImI3hmMTJhOyIgaG9yaXotYWR2LXg9IjY0MCIgCmQ9Ik01MTIgMjg4di0yMjRxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0yNTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXYyMjRxMCAyNiAxOSA0NXQ0NSAxOWgyNTZxMjYgMCA0NSAtMTl0MTkgLTQ1ek01NDIgMTM0NGwtMjggLTc2OHEtMSAtMjYgLTIwLjUgLTQ1dC00NS41IC0xOWgtMjU2cS0yNiAwIC00NS41IDE5dC0yMC41IDQ1bC0yOCA3NjhxLTEgMjYgMTcuNSA0NXQ0NC41IDE5aDMyMHEyNiAwIDQ0LjUgLTE5dDE3LjUgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdXBlcnNjcmlwdCIgdW5pY29kZT0iJiN4ZjEyYjsiIApkPSJNODk3IDE2N3YtMTY3aC0yNDhsLTE1OSAyNTJsLTI0IDQycS04IDkgLTExIDIxaC0zcS0xIC0zIC0yLjUgLTYuNXQtMy41IC04dC0zIC02LjVxLTEwIC0yMCAtMjUgLTQ0bC0xNTUgLTI1MGgtMjU4djE2N2gxMjhsMTk3IDI5MWwtMTg1IDI3MmgtMTM3djE2OGgyNzZsMTM5IC0yMjhxMiAtNCAyMyAtNDJxOCAtOSAxMSAtMjFoM3EzIDkgMTEgMjFsMjUgNDJsMTQwIDIyOGgyNTd2LTE2OGgtMTI1bC0xODQgLTI2N2wyMDQgLTI5NmgxMDl6Ck0xNTM0IDg0NnYtMjA2aC01MTRsLTMgMjdxLTQgMjggLTQgNDZxMCA2NCAyNiAxMTd0NjUgODYuNXQ4NCA2NXQ4NCA1NC41dDY1IDU0dDI2IDY0cTAgMzggLTI5LjUgNjIuNXQtNzAuNSAyNC41cS01MSAwIC05NyAtMzlxLTE0IC0xMSAtMzYgLTM4bC0xMDUgOTJxMjYgMzcgNjMgNjZxODMgNjUgMTg4IDY1cTExMCAwIDE3OCAtNTkuNXQ2OCAtMTU4LjVxMCAtNTYgLTI0LjUgLTEwM3QtNjIgLTc2LjV0LTgxLjUgLTU4LjV0LTgyIC01MC41CnQtNjUuNSAtNTEuNXQtMzAuNSAtNjNoMjMydjgwaDEyNnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3Vic2NyaXB0IiB1bmljb2RlPSImI3hmMTJjOyIgCmQ9Ik04OTcgMTY3di0xNjdoLTI0OGwtMTU5IDI1MmwtMjQgNDJxLTggOSAtMTEgMjFoLTNxLTEgLTMgLTIuNSAtNi41dC0zLjUgLTh0LTMgLTYuNXEtMTAgLTIwIC0yNSAtNDRsLTE1NSAtMjUwaC0yNTh2MTY3aDEyOGwxOTcgMjkxbC0xODUgMjcyaC0xMzd2MTY4aDI3NmwxMzkgLTIyOHEyIC00IDIzIC00MnE4IC05IDExIC0yMWgzcTMgOSAxMSAyMWwyNSA0MmwxNDAgMjI4aDI1N3YtMTY4aC0xMjVsLTE4NCAtMjY3bDIwNCAtMjk2aDEwOXoKTTE1MzYgLTUwdi0yMDZoLTUxNGwtNCAyN3EtMyA0NSAtMyA0NnEwIDY0IDI2IDExN3Q2NSA4Ni41dDg0IDY1dDg0IDU0LjV0NjUgNTR0MjYgNjRxMCAzOCAtMjkuNSA2Mi41dC03MC41IDI0LjVxLTUxIDAgLTk3IC0zOXEtMTQgLTExIC0zNiAtMzhsLTEwNSA5MnEyNiAzNyA2MyA2NnE4MCA2NSAxODggNjVxMTEwIDAgMTc4IC01OS41dDY4IC0xNTguNXEwIC02NiAtMzQuNSAtMTE4LjV0LTg0IC04NnQtOTkuNSAtNjIuNXQtODcgLTYzdC00MSAtNzMKaDIzMnY4MGgxMjZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8yODMiIHVuaWNvZGU9IiYjeGYxMmQ7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik04OTYgMTI4bDMzNiAzODRoLTc2OGwtMzM2IC0zODRoNzY4ek0xOTA5IDEyMDVxMTUgLTM0IDkuNSAtNzEuNXQtMzAuNSAtNjUuNWwtODk2IC0xMDI0cS0zOCAtNDQgLTk2IC00NGgtNzY4cS0zOCAwIC02OS41IDIwLjV0LTQ3LjUgNTQuNXEtMTUgMzQgLTkuNSA3MS41dDMwLjUgNjUuNWw4OTYgMTAyNHEzOCA0NCA5NiA0NGg3NjhxMzggMCA2OS41IC0yMC41dDQ3LjUgLTU0LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InB1enpsZV9waWVjZSIgdW5pY29kZT0iJiN4ZjEyZTsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTE2NjQgNDM4cTAgLTgxIC00NC41IC0xMzV0LTEyMy41IC01NHEtNDEgMCAtNzcuNSAxNy41dC01OSAzOHQtNTYuNSAzOHQtNzEgMTcuNXEtMTEwIDAgLTExMCAtMTI0cTAgLTM5IDE2IC0xMTV0MTUgLTExNXYtNXEtMjIgMCAtMzMgLTFxLTM0IC0zIC05Ny41IC0xMS41dC0xMTUuNSAtMTMuNXQtOTggLTVxLTYxIDAgLTEwMyAyNi41dC00MiA4My41cTAgMzcgMTcuNSA3MXQzOCA1Ni41dDM4IDU5dDE3LjUgNzcuNXEwIDc5IC01NCAxMjMuNQp0LTEzNSA0NC41cS04NCAwIC0xNDMgLTQ1LjV0LTU5IC0xMjcuNXEwIC00MyAxNSAtODN0MzMuNSAtNjQuNXQzMy41IC01M3QxNSAtNTAuNXEwIC00NSAtNDYgLTg5cS0zNyAtMzUgLTExNyAtMzVxLTk1IDAgLTI0NSAyNHEtOSAyIC0yNy41IDR0LTI3LjUgNGwtMTMgMnEtMSAwIC0zIDFxLTIgMCAtMiAxdjEwMjRxMiAtMSAxNy41IC0zLjV0MzQgLTV0MjEuNSAtMy41cTE1MCAtMjQgMjQ1IC0yNHE4MCAwIDExNyAzNXE0NiA0NCA0NiA4OQpxMCAyMiAtMTUgNTAuNXQtMzMuNSA1M3QtMzMuNSA2NC41dC0xNSA4M3EwIDgyIDU5IDEyNy41dDE0NCA0NS41cTgwIDAgMTM0IC00NC41dDU0IC0xMjMuNXEwIC00MSAtMTcuNSAtNzcuNXQtMzggLTU5dC0zOCAtNTYuNXQtMTcuNSAtNzFxMCAtNTcgNDIgLTgzLjV0MTAzIC0yNi41cTY0IDAgMTgwIDE1dDE2MyAxN3YtMnEtMSAtMiAtMy41IC0xNy41dC01IC0zNHQtMy41IC0yMS41cS0yNCAtMTUwIC0yNCAtMjQ1cTAgLTgwIDM1IC0xMTcKcTQ0IC00NiA4OSAtNDZxMjIgMCA1MC41IDE1dDUzIDMzLjV0NjQuNSAzMy41dDgzIDE1cTgyIDAgMTI3LjUgLTU5dDQ1LjUgLTE0M3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWljcm9waG9uZSIgdW5pY29kZT0iJiN4ZjEzMDsiIGhvcml6LWFkdi14PSIxMTUyIiAKZD0iTTExNTIgODMydi0xMjhxMCAtMjIxIC0xNDcuNSAtMzg0LjV0LTM2NC41IC0xODcuNXYtMTMyaDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC02NDBxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZ2MTMycS0yMTcgMjQgLTM2NC41IDE4Ny41dC0xNDcuNSAzODQuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjhxMCAtMTg1IDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjUKdDMxNi41IDEzMS41dDEzMS41IDMxNi41djEyOHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTg5NiAxMjE2di01MTJxMCAtMTMyIC05NCAtMjI2dC0yMjYgLTk0dC0yMjYgOTR0LTk0IDIyNnY1MTJxMCAxMzIgOTQgMjI2dDIyNiA5NHQyMjYgLTk0dDk0IC0yMjZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im1pY3JvcGhvbmVfb2ZmIiB1bmljb2RlPSImI3hmMTMxOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMjcxIDU5MWwtMTAxIC0xMDFxLTQyIDEwMyAtNDIgMjE0djEyOHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC01MyAxNSAtMTEzek0xMzg1IDExOTNsLTM2MSAtMzYxdi0xMjhxMCAtMTMyIC05NCAtMjI2dC0yMjYgLTk0cS01NSAwIC0xMDkgMTlsLTk2IC05NnE5NyAtNTEgMjA1IC01MXExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjgKcTAgLTIyMSAtMTQ3LjUgLTM4NC41dC0zNjQuNSAtMTg3LjV2LTEzMmgyNTZxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOWgtNjQwcS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMjU2djEzMnEtMTI1IDEzIC0yMzUgODFsLTI1NCAtMjU0cS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTgyIDgycS0xMCAxMCAtMTAgMjN0MTAgMjNsMTIzNCAxMjM0cTEwIDEwIDIzIDEwdDIzIC0xMGw4MiAtODJxMTAgLTEwIDEwIC0yMwp0LTEwIC0yM3pNMTAwNSAxMzI1bC02MjEgLTYyMXY1MTJxMCAxMzIgOTQgMjI2dDIyNiA5NHExMDIgMCAxODQuNSAtNTl0MTE2LjUgLTE1MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hpZWxkIiB1bmljb2RlPSImI3hmMTMyOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMTA4OCA1NzZ2NjQwaC00NDh2LTExMzdxMTE5IDYzIDIxMyAxMzdxMjM1IDE4NCAyMzUgMzYwek0xMjgwIDEzNDR2LTc2OHEwIC04NiAtMzMuNSAtMTcwLjV0LTgzIC0xNTB0LTExOCAtMTI3LjV0LTEyNi41IC0xMDN0LTEyMSAtNzcuNXQtODkuNSAtNDkuNXQtNDIuNSAtMjBxLTEyIC02IC0yNiAtNnQtMjYgNnEtMTYgNyAtNDIuNSAyMHQtODkuNSA0OS41dC0xMjEgNzcuNXQtMTI2LjUgMTAzdC0xMTggMTI3LjV0LTgzIDE1MAp0LTMzLjUgMTcwLjV2NzY4cTAgMjYgMTkgNDV0NDUgMTloMTE1MnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhbGVuZGFyX2VtcHR5IiB1bmljb2RlPSImI3hmMTMzOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTI4IC0xMjhoMTQwOHYxMDI0aC0xNDA4di0xMDI0ek01MTIgMTA4OHYyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMjg4cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0xMjgwIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTY2NCAxMTUydi0xMjgwCnEwIC01MiAtMzggLTkwdC05MCAtMzhoLTE0MDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxMjgwcTAgNTIgMzggOTB0OTAgMzhoMTI4djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDd0NDcgLTExM3YtOTZoMzg0djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDd0NDcgLTExM3YtOTZoMTI4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlyZV9leHRpbmd1aXNoZXIiIHVuaWNvZGU9IiYjeGYxMzQ7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik01MTIgMTM0NHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE0MDggMTM3NnYtMzIwcTAgLTE2IC0xMiAtMjVxLTggLTcgLTIwIC03cS00IDAgLTcgMWwtNDQ4IDk2cS0xMSAyIC0xOCAxMXQtNyAyMGgtMjU2di0xMDJxMTExIC0yMyAxODMuNSAtMTExdDcyLjUgLTIwM3YtODAwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNTEycS0yNiAwIC00NSAxOXQtMTkgNDV2ODAwCnEwIDEwNiA2Mi41IDE5MC41dDE2MS41IDExNC41djExMWgtMzJxLTU5IDAgLTExNSAtMjMuNXQtOTEuNSAtNTN0LTY2IC02Ni41dC00MC41IC01My41dC0xNCAtMjQuNXEtMTcgLTM1IC01NyAtMzVxLTE2IDAgLTI5IDdxLTIzIDEyIC0zMS41IDM3dDMuNSA0OXE1IDEwIDE0LjUgMjZ0MzcuNSA1My41dDYwLjUgNzB0ODUgNjd0MTA4LjUgNTIuNXEtMjUgNDIgLTI1IDg2cTAgNjYgNDcgMTEzdDExMyA0N3QxMTMgLTQ3dDQ3IC0xMTMKcTAgLTMzIC0xNCAtNjRoMzAycTAgMTEgNyAyMHQxOCAxMWw0NDggOTZxMyAxIDcgMXExMiAwIDIwIC03cTEyIC05IDEyIC0yNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icm9ja2V0IiB1bmljb2RlPSImI3hmMTM1OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTQ0MCAxMDg4cTAgNDAgLTI4IDY4dC02OCAyOHQtNjggLTI4dC0yOCAtNjh0MjggLTY4dDY4IC0yOHQ2OCAyOHQyOCA2OHpNMTY2NCAxMzc2cTAgLTI0OSAtNzUuNSAtNDMwLjV0LTI1My41IC0zNjAuNXEtODEgLTgwIC0xOTUgLTE3NmwtMjAgLTM3OXEtMiAtMTYgLTE2IC0yNmwtMzg0IC0yMjRxLTcgLTQgLTE2IC00cS0xMiAwIC0yMyA5bC02NCA2NHEtMTMgMTQgLTggMzJsODUgMjc2bC0yODEgMjgxbC0yNzYgLTg1cS0zIC0xIC05IC0xCnEtMTQgMCAtMjMgOWwtNjQgNjRxLTE3IDE5IC01IDM5bDIyNCAzODRxMTAgMTQgMjYgMTZsMzc5IDIwcTk2IDExNCAxNzYgMTk1cTE4OCAxODcgMzU4IDI1OHQ0MzEgNzFxMTQgMCAyNCAtOS41dDEwIC0yMi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtYXhjZG4iIHVuaWNvZGU9IiYjeGYxMzY7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzQ1IDc2M2wtMTY0IC03NjNoLTMzNGwxNzggODMycTEzIDU2IC0xNSA4OHEtMjcgMzMgLTgzIDMzaC0xNjlsLTIwNCAtOTUzaC0zMzRsMjA0IDk1M2gtMjg2bC0yMDQgLTk1M2gtMzM0bDIwNCA5NTNsLTE1MyAzMjdoMTI3NnExMDEgMCAxODkuNSAtNDAuNXQxNDcuNSAtMTEzLjVxNjAgLTczIDgxIC0xNjguNXQwIC0xOTQuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9zaWduX2xlZnQiIHVuaWNvZGU9IiYjeGYxMzc7IiAKZD0iTTkwOSAxNDFsMTAyIDEwMnExOSAxOSAxOSA0NXQtMTkgNDVsLTMwNyAzMDdsMzA3IDMwN3ExOSAxOSAxOSA0NXQtMTkgNDVsLTEwMiAxMDJxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC00NTQgLTQ1NHEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1bDQ1NCAtNDU0cTE5IC0xOSA0NSAtMTl0NDUgMTl6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41CnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9zaWduX3JpZ2h0IiB1bmljb2RlPSImI3hmMTM4OyIgCmQ9Ik03MTcgMTQxbDQ1NCA0NTRxMTkgMTkgMTkgNDV0LTE5IDQ1bC00NTQgNDU0cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtMTAyIC0xMDJxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWwzMDcgLTMwN2wtMzA3IC0zMDdxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWwxMDIgLTEwMnExOSAtMTkgNDUgLTE5dDQ1IDE5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNQp0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fc2lnbl91cCIgdW5pY29kZT0iJiN4ZjEzOTsiIApkPSJNMTE2NSAzOTdsMTAyIDEwMnExOSAxOSAxOSA0NXQtMTkgNDVsLTQ1NCA0NTRxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC00NTQgLTQ1NHEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1bDEwMiAtMTAycTE5IC0xOSA0NSAtMTl0NDUgMTlsMzA3IDMwN2wzMDcgLTMwN3ExOSAtMTkgNDUgLTE5dDQ1IDE5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNQp0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fc2lnbl9kb3duIiB1bmljb2RlPSImI3hmMTNhOyIgCmQ9Ik04MTMgMjM3bDQ1NCA0NTRxMTkgMTkgMTkgNDV0LTE5IDQ1bC0xMDIgMTAycS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtMzA3IC0zMDdsLTMwNyAzMDdxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC0xMDIgLTEwMnEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1bDQ1NCAtNDU0cTE5IC0xOSA0NSAtMTl0NDUgMTl6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41CnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaHRtbDUiIHVuaWNvZGU9IiYjeGYxM2I7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik0xMTMwIDkzOWwxNiAxNzVoLTg4NGw0NyAtNTM0aDYxMmwtMjIgLTIyOGwtMTk3IC01M2wtMTk2IDUzbC0xMyAxNDBoLTE3NWwyMiAtMjc4bDM2MiAtMTAwaDR2MWwzNTkgOTlsNTAgNTQ0aC02NDRsLTE1IDE4MWg2NzR6TTAgMTQwOGgxNDA4bC0xMjggLTE0MzhsLTU3OCAtMTYybC01NzQgMTYyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjc3MzIiB1bmljb2RlPSImI3hmMTNjOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMjc1IDE0MDhoMTUwNWwtMjY2IC0xMzMzbC04MDQgLTI2N2wtNjk4IDI2N2w3MSAzNTZoMjk3bC0yOSAtMTQ3bDQyMiAtMTYxbDQ4NiAxNjFsNjggMzM5aC0xMjA4bDU4IDI5N2gxMjA5bDM4IDE5MWgtMTIwOHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYW5jaG9yIiB1bmljb2RlPSImI3hmMTNkOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNOTYwIDEyODBxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNzkyIDM1MnYtMzUycTAgLTIyIC0yMCAtMzBxLTggLTIgLTEyIC0ycS0xMiAwIC0yMyA5bC05MyA5M3EtMTE5IC0xNDMgLTMxOC41IC0yMjYuNXQtNDI5LjUgLTgzLjV0LTQyOS41IDgzLjV0LTMxOC41IDIyNi41bC05MyAtOTNxLTkgLTkgLTIzIC05cS00IDAgLTEyIDJxLTIwIDggLTIwIDMwdjM1MgpxMCAxNCA5IDIzdDIzIDloMzUycTIyIDAgMzAgLTIwcTggLTE5IC03IC0zNWwtMTAwIC0xMDBxNjcgLTkxIDE4OS41IC0xNTMuNXQyNzEuNSAtODIuNXY2NDdoLTE5MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE5MnYxNjNxLTU4IDM0IC05MyA5Mi41dC0zNSAxMjguNXEwIDEwNiA3NSAxODF0MTgxIDc1dDE4MSAtNzV0NzUgLTE4MXEwIC03MCAtMzUgLTEyOC41dC05MyAtOTIuNXYtMTYzaDE5MnEyNiAwIDQ1IC0xOQp0MTkgLTQ1di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xOTJ2LTY0N3ExNDkgMjAgMjcxLjUgODIuNXQxODkuNSAxNTMuNWwtMTAwIDEwMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgzNTJxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5sb2NrX2FsdCIgdW5pY29kZT0iJiN4ZjEzZTsiIGhvcml6LWFkdi14PSIxMTUyIiAKZD0iTTEwNTYgNzY4cTQwIDAgNjggLTI4dDI4IC02OHYtNTc2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTYwcS00MCAwIC02OCAyOHQtMjggNjh2NTc2cTAgNDAgMjggNjh0NjggMjhoMzJ2MzIwcTAgMTg1IDEzMS41IDMxNi41dDMxNi41IDEzMS41dDMxNi41IC0xMzEuNXQxMzEuNSAtMzE2LjVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MQp2LTMyMGg3MzZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImJ1bGxzZXllIiB1bmljb2RlPSImI3hmMTQwOyIgCmQ9Ik0xMDI0IDY0MHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxdDc1IDE4MXQxODEgNzV0MTgxIC03NXQ3NSAtMTgxek0xMTUyIDY0MHEwIDE1OSAtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41ek0xMjgwIDY0MHEwIC0yMTIgLTE1MCAtMzYydC0zNjIgLTE1MHQtMzYyIDE1MAp0LTE1MCAzNjJ0MTUwIDM2MnQzNjIgMTUwdDM2MiAtMTUwdDE1MCAtMzYyek0xNDA4IDY0MHEwIDEzMCAtNTEgMjQ4LjV0LTEzNi41IDIwNHQtMjA0IDEzNi41dC0yNDguNSA1MXQtMjQ4LjUgLTUxdC0yMDQgLTEzNi41dC0xMzYuNSAtMjA0dC01MSAtMjQ4LjV0NTEgLTI0OC41dDEzNi41IC0yMDR0MjA0IC0xMzYuNXQyNDguNSAtNTF0MjQ4LjUgNTF0MjA0IDEzNi41dDEzNi41IDIwNHQ1MSAyNDguNXpNMTUzNiA2NDAKcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbGxpcHNpc19ob3Jpem9udGFsIiB1bmljb2RlPSImI3hmMTQxOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMzg0IDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTkycS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMTkycTQwIDAgNjggLTI4dDI4IC02OHpNODk2IDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTkycS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMTkycTQwIDAgNjggLTI4dDI4IC02OHpNMTQwOCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MgpxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgxOTJxNDAgMCA2OCAtMjh0MjggLTY4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbGxpcHNpc192ZXJ0aWNhbCIgdW5pY29kZT0iJiN4ZjE0MjsiIGhvcml6LWFkdi14PSIzODQiIApkPSJNMzg0IDI4OHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTkycS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMTkycTQwIDAgNjggLTI4dDI4IC02OHpNMzg0IDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTkycS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMTkycTQwIDAgNjggLTI4dDI4IC02OHpNMzg0IDEzMTJ2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MgpxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgxOTJxNDAgMCA2OCAtMjh0MjggLTY4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzAzIiB1bmljb2RlPSImI3hmMTQzOyIgCmQ9Ik01MTIgMjU2cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek04NjMgMTYycS0xMyAyMzMgLTE3Ni41IDM5Ni41dC0zOTYuNSAxNzYuNXEtMTQgMSAtMjQgLTl0LTEwIC0yM3YtMTI4cTAgLTEzIDguNSAtMjJ0MjEuNSAtMTBxMTU0IC0xMSAyNjQgLTEyMXQxMjEgLTI2NHExIC0xMyAxMCAtMjEuNXQyMiAtOC41aDEyOApxMTMgMCAyMyAxMHQ5IDI0ek0xMjQ3IDE2MXEtNSAxNTQgLTU2IDI5Ny41dC0xMzkuNSAyNjB0LTIwNSAyMDV0LTI2MCAxMzkuNXQtMjk3LjUgNTZxLTE0IDEgLTIzIC05cS0xMCAtMTAgLTEwIC0yM3YtMTI4cTAgLTEzIDkgLTIydDIyIC0xMHEyMDQgLTcgMzc4IC0xMTEuNXQyNzguNSAtMjc4LjV0MTExLjUgLTM3OHExIC0xMyAxMCAtMjJ0MjIgLTloMTI4cTEzIDAgMjMgMTBxMTEgOSA5IDIzek0xNTM2IDExMjB2LTk2MApxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InBsYXlfc2lnbiIgdW5pY29kZT0iJiN4ZjE0NDsiIApkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNMTE1MiA1ODVxMzIgMTggMzIgNTV0LTMyIDU1bC01NDQgMzIwcS0zMSAxOSAtNjQgMXEtMzIgLTE5IC0zMiAtNTZ2LTY0MHEwIC0zNyAzMiAtNTYKcTE2IC04IDMyIC04cTE3IDAgMzIgOXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGlja2V0IiB1bmljb2RlPSImI3hmMTQ1OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTAyNCAxMDg0bDMxNiAtMzE2bC01NzIgLTU3MmwtMzE2IDMxNnpNODEzIDEwNWw2MTggNjE4cTE5IDE5IDE5IDQ1dC0xOSA0NWwtMzYyIDM2MnEtMTggMTggLTQ1IDE4dC00NSAtMThsLTYxOCAtNjE4cS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMzYyIC0zNjJxMTggLTE4IDQ1IC0xOHQ0NSAxOHpNMTcwMiA3NDJsLTkwNyAtOTA4cS0zNyAtMzcgLTkwLjUgLTM3dC05MC41IDM3bC0xMjYgMTI2cTU2IDU2IDU2IDEzNnQtNTYgMTM2CnQtMTM2IDU2dC0xMzYgLTU2bC0xMjUgMTI2cS0zNyAzNyAtMzcgOTAuNXQzNyA5MC41bDkwNyA5MDZxMzcgMzcgOTAuNSAzN3Q5MC41IC0zN2wxMjUgLTEyNXEtNTYgLTU2IC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnQxMzYgNTZsMTI2IC0xMjVxMzcgLTM3IDM3IC05MC41dC0zNyAtOTAuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWludXNfc2lnbl9hbHQiIHVuaWNvZGU9IiYjeGYxNDY7IiAKZD0iTTEyODAgNTc2djEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTg5NnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDg5NnEyNiAwIDQ1IDE5dDE5IDQ1ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNQp0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZWNrX21pbnVzIiB1bmljb2RlPSImI3hmMTQ3OyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTE1MiA3MzZ2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTgzMnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg4MzJxMTQgMCAyMyAtOXQ5IC0yM3pNMTI4MCAyODh2ODMycTAgNjYgLTQ3IDExM3QtMTEzIDQ3aC04MzJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMnEwIC02NiA0NyAtMTEzdDExMyAtNDdoODMycTY2IDAgMTEzIDQ3dDQ3IDExM3pNMTQwOCAxMTIwdi04MzJxMCAtMTE5IC04NC41IC0yMDMuNQp0LTIwMy41IC04NC41aC04MzJxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djgzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoODMycTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsZXZlbF91cCIgdW5pY29kZT0iJiN4ZjE0ODsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTEwMTggOTMzcS0xOCAtMzcgLTU4IC0zN2gtMTkydi04NjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0cS0yMSAwIC0yOSAxOHEtOCAyMCA0IDM1bDE2MCAxOTJxOSAxMSAyNSAxMWgzMjB2NjQwaC0xOTJxLTQwIDAgLTU4IDM3cS0xNyAzNyA5IDY4bDMyMCAzODRxMTggMjIgNDkgMjJ0NDkgLTIybDMyMCAtMzg0cTI3IC0zMiA5IC02OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGV2ZWxfZG93biIgdW5pY29kZT0iJiN4ZjE0OTsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTMyIDEyODBoNzA0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjMuNXYtODYzaDE5MnE0MCAwIDU4IC0zN3QtOSAtNjlsLTMyMCAtMzg0cS0xOCAtMjIgLTQ5IC0yMnQtNDkgMjJsLTMyMCAzODRxLTI2IDMxIC05IDY5cTE4IDM3IDU4IDM3aDE5MnY2NDBoLTMyMHEtMTQgMCAtMjUgMTFsLTE2MCAxOTJxLTEzIDE0IC00IDM0cTkgMTkgMjkgMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZWNrX3NpZ24iIHVuaWNvZGU9IiYjeGYxNGE7IiAKZD0iTTY4NSAyMzdsNjE0IDYxNHExOSAxOSAxOSA0NXQtMTkgNDVsLTEwMiAxMDJxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC00NjcgLTQ2N2wtMjExIDIxMXEtMTkgMTkgLTQ1IDE5dC00NSAtMTlsLTEwMiAtMTAycS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMzU4IC0zNThxMTkgLTE5IDQ1IC0xOXQ0NSAxOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjUKdC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlZGl0X3NpZ24iIHVuaWNvZGU9IiYjeGYxNGI7IiAKZD0iTTQwNCA0MjhsMTUyIC0xNTJsLTUyIC01MmgtNTZ2OTZoLTk2djU2ek04MTggODE4cTE0IC0xMyAtMyAtMzBsLTI5MSAtMjkxcS0xNyAtMTcgLTMwIC0zcS0xNCAxMyAzIDMwbDI5MSAyOTFxMTcgMTcgMzAgM3pNNTQ0IDEyOGw1NDQgNTQ0bC0yODggMjg4bC01NDQgLTU0NHYtMjg4aDI4OHpNMTE1MiA3MzZsOTIgOTJxMjggMjggMjggNjh0LTI4IDY4bC0xNTIgMTUycS0yOCAyOCAtNjggMjh0LTY4IC0yOGwtOTIgLTkyek0xNTM2IDExMjAKdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zMTIiIHVuaWNvZGU9IiYjeGYxNGM7IiAKZD0iTTEyODAgNjA4djQ4MHEwIDI2IC0xOSA0NXQtNDUgMTloLTQ4MHEtNDIgMCAtNTkgLTM5cS0xNyAtNDEgMTQgLTcwbDE0NCAtMTQ0bC01MzQgLTUzNHEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1bDEwMiAtMTAycTE5IC0xOSA0NSAtMTl0NDUgMTlsNTM0IDUzNGwxNDQgLTE0NHExOCAtMTkgNDUgLTE5cTEyIDAgMjUgNXEzOSAxNyAzOSA1OXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MApxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzaGFyZV9zaWduIiB1bmljb2RlPSImI3hmMTRkOyIgCmQ9Ik0xMDA1IDQzNWwzNTIgMzUycTE5IDE5IDE5IDQ1dC0xOSA0NWwtMzUyIDM1MnEtMzAgMzEgLTY5IDE0cS00MCAtMTcgLTQwIC01OXYtMTYwcS0xMTkgMCAtMjE2IC0xOS41dC0xNjIuNSAtNTF0LTExNCAtNzl0LTc2LjUgLTk1LjV0LTQ0LjUgLTEwOXQtMjEuNSAtMTExLjV0LTUgLTExMC41cTAgLTE4MSAxNjcgLTQwNHExMSAtMTIgMjUgLTEycTcgMCAxMyAzcTIyIDkgMTkgMzNxLTQ0IDM1NCA2MiA0NzNxNDYgNTIgMTMwIDc1LjUKdDIyNCAyMy41di0xNjBxMCAtNDIgNDAgLTU5cTEyIC01IDI0IC01cTI2IDAgNDUgMTl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb21wYXNzIiB1bmljb2RlPSImI3hmMTRlOyIgCmQ9Ik02NDAgNDQ4bDI1NiAxMjhsLTI1NiAxMjh2LTI1NnpNMTAyNCAxMDM5di01NDJsLTUxMiAtMjU2djU0MnpNMTMxMiA2NDBxMCAxNDggLTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzCnQtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvbGxhcHNlIiB1bmljb2RlPSImI3hmMTUwOyIgCmQ9Ik0xMTQ1IDg2MXExOCAtMzUgLTUgLTY2bC0zMjAgLTQ0OHEtMTkgLTI3IC01MiAtMjd0LTUyIDI3bC0zMjAgNDQ4cS0yMyAzMSAtNSA2NnExNyAzNSA1NyAzNWg2NDBxNDAgMCA1NyAtMzV6TTEyODAgMTYwdjk2MHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTk2MHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2MHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDk2MHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNTM2IDExMjAKdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvbGxhcHNlX3RvcCIgdW5pY29kZT0iJiN4ZjE1MTsiIApkPSJNMTE0NSA0MTlxLTE3IC0zNSAtNTcgLTM1aC02NDBxLTQwIDAgLTU3IDM1cS0xOCAzNSA1IDY2bDMyMCA0NDhxMTkgMjcgNTIgMjd0NTIgLTI3bDMyMCAtNDQ4cTIzIC0zMSA1IC02NnpNMTI4MCAxNjB2OTYwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtOTYwcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtOTYwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoOTYwcTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTE1MzYgMTEyMHYtOTYwCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzMxNyIgdW5pY29kZT0iJiN4ZjE1MjsiIApkPSJNMTA4OCA2NDBxMCAtMzMgLTI3IC01MmwtNDQ4IC0zMjBxLTMxIC0yMyAtNjYgLTVxLTM1IDE3IC0zNSA1N3Y2NDBxMCA0MCAzNSA1N3EzNSAxOCA2NiAtNWw0NDggLTMyMHEyNyAtMTkgMjcgLTUyek0xMjgwIDE2MHY5NjBxMCAxNCAtOSAyM3QtMjMgOWgtOTYwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2MHEwIC0xNCA5IC0yM3QyMyAtOWg5NjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjUKdC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXVyIiB1bmljb2RlPSImI3hmMTUzOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNOTc2IDIyOWwzNSAtMTU5cTMgLTEyIC0zIC0yMi41dC0xNyAtMTQuNWwtNSAtMXEtNCAtMiAtMTAuNSAtMy41dC0xNiAtNC41dC0yMS41IC01LjV0LTI1LjUgLTV0LTMwIC01dC0zMy41IC00LjV0LTM2LjUgLTN0LTM4LjUgLTFxLTIzNCAwIC00MDkgMTMwLjV0LTIzOCAzNTEuNWgtOTVxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxMTNxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NnEtMiA1NyAxIDEwNWgtNjdxLTE0IDAgLTIzIDkKdC05IDIzdjExNHEwIDE0IDkgMjN0MjMgOWg5OHE2NyAyMTAgMjQzLjUgMzM4dDQwMC41IDEyOHExMDIgMCAxOTQgLTIzcTExIC0zIDIwIC0xNXE2IC0xMSAzIC0yNGwtNDMgLTE1OXEtMyAtMTMgLTE0IC0xOS41dC0yNCAtMi41bC00IDFxLTQgMSAtMTEuNSAyLjVsLTE3LjUgMy41dC0yMi41IDMuNXQtMjYgM3QtMjkgMi41dC0yOS41IDFxLTEyNiAwIC0yMjYgLTY0dC0xNTAgLTE3Nmg0NjhxMTYgMCAyNSAtMTJxMTAgLTEyIDcgLTI2CmwtMjQgLTExNHEtNSAtMjYgLTMyIC0yNmgtNDg4cS0zIC0zNyAwIC0xMDVoNDU5cTE1IDAgMjUgLTEycTkgLTEyIDYgLTI3bC0yNCAtMTEycS0yIC0xMSAtMTEgLTE4LjV0LTIwIC03LjVoLTM4N3E0OCAtMTE3IDE0OS41IC0xODUuNXQyMjguNSAtNjguNXExOCAwIDM2IDEuNXQzMy41IDMuNXQyOS41IDQuNXQyNC41IDV0MTguNSA0LjVsMTIgM2w1IDJxMTMgNSAyNiAtMnExMiAtNyAxNSAtMjF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImdicCIgdW5pY29kZT0iJiN4ZjE1NDsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTEwMjAgMzk5di0zNjdxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTU2cS0xNCAwIC0yMyA5dC05IDIzdjE1MHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk3djM4M2gtOTVxLTE0IDAgLTIzIDkuNXQtOSAyMi41djEzMXEwIDE0IDkgMjN0MjMgOWg5NXYyMjNxMCAxNzEgMTIzLjUgMjgydDMxNC41IDExMXExODUgMCAzMzUgLTEyNXE5IC04IDEwIC0yMC41dC03IC0yMi41bC0xMDMgLTEyN3EtOSAtMTEgLTIyIC0xMnEtMTMgLTIgLTIzIDcKcS01IDUgLTI2IDE5dC02OSAzMnQtOTMgMThxLTg1IDAgLTEzNyAtNDd0LTUyIC0xMjN2LTIxNWgzMDVxMTMgMCAyMi41IC05dDkuNSAtMjN2LTEzMXEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTMwNXYtMzc5aDQxNHYxODFxMCAxMyA5IDIyLjV0MjMgOS41aDE2MnExNCAwIDIzIC05LjV0OSAtMjIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXNkIiB1bmljb2RlPSImI3hmMTU1OyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNOTc4IDM1MXEwIC0xNTMgLTk5LjUgLTI2My41dC0yNTguNSAtMTM2LjV2LTE3NXEwIC0xNCAtOSAtMjN0LTIzIC05aC0xMzVxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxNzVxLTY2IDkgLTEyNy41IDMxdC0xMDEuNSA0NC41dC03NCA0OHQtNDYuNSAzNy41dC0xNy41IDE4cS0xNyAyMSAtMiA0MWwxMDMgMTM1cTcgMTAgMjMgMTJxMTUgMiAyNCAtOWwyIC0ycTExMyAtOTkgMjQzIC0xMjVxMzcgLTggNzQgLThxODEgMCAxNDIuNSA0Mwp0NjEuNSAxMjJxMCAyOCAtMTUgNTN0LTMzLjUgNDJ0LTU4LjUgMzcuNXQtNjYgMzJ0LTgwIDMyLjVxLTM5IDE2IC02MS41IDI1dC02MS41IDI2LjV0LTYyLjUgMzF0LTU2LjUgMzUuNXQtNTMuNSA0Mi41dC00My41IDQ5dC0zNS41IDU4dC0yMSA2Ni41dC04LjUgNzhxMCAxMzggOTggMjQydDI1NSAxMzR2MTgwcTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTM1cTE0IDAgMjMgLTl0OSAtMjN2LTE3NnE1NyAtNiAxMTAuNSAtMjN0ODcgLTMzLjUKdDYzLjUgLTM3LjV0MzkgLTI5dDE1IC0xNHExNyAtMTggNSAtMzhsLTgxIC0xNDZxLTggLTE1IC0yMyAtMTZxLTE0IC0zIC0yNyA3cS0zIDMgLTE0LjUgMTJ0LTM5IDI2LjV0LTU4LjUgMzJ0LTc0LjUgMjZ0LTg1LjUgMTEuNXEtOTUgMCAtMTU1IC00M3QtNjAgLTExMXEwIC0yNiA4LjUgLTQ4dDI5LjUgLTQxLjV0MzkuNSAtMzN0NTYgLTMxdDYwLjUgLTI3dDcwIC0yNy41cTUzIC0yMCA4MSAtMzEuNXQ3NiAtMzV0NzUuNSAtNDIuNXQ2MiAtNTAKdDUzIC02My41dDMxLjUgLTc2LjV0MTMgLTk0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpbnIiIHVuaWNvZGU9IiYjeGYxNTY7IiBob3Jpei1hZHYteD0iODk4IiAKZD0iTTg5OCAxMDY2di0xMDJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTY4cS0yMyAtMTQ0IC0xMjkgLTIzNHQtMjc2IC0xMTBxMTY3IC0xNzggNDU5IC01MzZxMTQgLTE2IDQgLTM0cS04IC0xOCAtMjkgLTE4aC0xOTVxLTE2IDAgLTI1IDEycS0zMDYgMzY3IC00OTggNTcxcS05IDkgLTkgMjJ2MTI3cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTEycTEzMiAwIDIxMi41IDQzdDEwMi41IDEyNWgtNDI3cS0xNCAwIC0yMyA5dC05IDIzdjEwMgpxMCAxNCA5IDIzdDIzIDloNDEzcS01NyAxMTMgLTI2OCAxMTNoLTE0NXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djEzM3EwIDE0IDkgMjN0MjMgOWg4MzJxMTQgMCAyMyAtOXQ5IC0yM3YtMTAycTAgLTE0IC05IC0yM3QtMjMgLTloLTIzM3E0NyAtNjEgNjQgLTE0NGgxNzFxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ianB5IiB1bmljb2RlPSImI3hmMTU3OyIgaG9yaXotYWR2LXg9IjEwMjciIApkPSJNNjAzIDBoLTE3MnEtMTMgMCAtMjIuNSA5dC05LjUgMjN2MzMwaC0yODhxLTEzIDAgLTIyLjUgOXQtOS41IDIzdjEwM3EwIDEzIDkuNSAyMi41dDIyLjUgOS41aDI4OHY4NWgtMjg4cS0xMyAwIC0yMi41IDl0LTkuNSAyM3YxMDRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgyMTRsLTMyMSA1NzhxLTggMTYgMCAzMnExMCAxNiAyOCAxNmgxOTRxMTkgMCAyOSAtMThsMjE1IC00MjVxMTkgLTM4IDU2IC0xMjVxMTAgMjQgMzAuNSA2OHQyNy41IDYxCmwxOTEgNDIwcTggMTkgMjkgMTloMTkxcTE3IDAgMjcgLTE2cTkgLTE0IDEgLTMxbC0zMTMgLTU3OWgyMTVxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xMDRxMCAtMTQgLTkuNSAtMjN0LTIyLjUgLTloLTI5MHYtODVoMjkwcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMTAzcTAgLTE0IC05LjUgLTIzdC0yMi41IC05aC0yOTB2LTMzMHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InJ1YiIgdW5pY29kZT0iJiN4ZjE1ODsiIGhvcml6LWFkdi14PSIxMjgwIiAKZD0iTTEwNDMgOTcxcTAgMTAwIC02NSAxNjJ0LTE3MSA2MmgtMzIwdi00NDhoMzIwcTEwNiAwIDE3MSA2MnQ2NSAxNjJ6TTEyODAgOTcxcTAgLTE5MyAtMTI2LjUgLTMxNXQtMzI2LjUgLTEyMmgtMzQwdi0xMThoNTA1cTE0IDAgMjMgLTl0OSAtMjN2LTEyOHEwIC0xNCAtOSAtMjN0LTIzIC05aC01MDV2LTE5MnEwIC0xNCAtOS41IC0yM3QtMjIuNSAtOWgtMTY3cS0xNCAwIC0yMyA5dC05IDIzdjE5MmgtMjI0cS0xNCAwIC0yMyA5dC05IDIzdjEyOApxMCAxNCA5IDIzdDIzIDloMjI0djExOGgtMjI0cS0xNCAwIC0yMyA5dC05IDIzdjE0OXEwIDEzIDkgMjIuNXQyMyA5LjVoMjI0djYyOXEwIDE0IDkgMjN0MjMgOWg1MzlxMjAwIDAgMzI2LjUgLTEyMnQxMjYuNSAtMzE1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJrcnciIHVuaWNvZGU9IiYjeGYxNTk7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik01MTQgMzQxbDgxIDI5OWgtMTU5bDc1IC0zMDBxMSAtMSAxIC0zdDEgLTNxMCAxIDAuNSAzLjV0MC41IDMuNXpNNjMwIDc2OGwzNSAxMjhoLTI5MmwzMiAtMTI4aDIyNXpNODIyIDc2OGgxMzlsLTM1IDEyOGgtNzB6TTEyNzEgMzQwbDc4IDMwMGgtMTYybDgxIC0yOTlxMCAtMSAwLjUgLTMuNXQxLjUgLTMuNXEwIDEgMC41IDN0MC41IDN6TTEzODIgNzY4bDMzIDEyOGgtMjk3bDM0IC0xMjhoMjMwek0xNzkyIDczNnYtNjRxMCAtMTQgLTkgLTIzCnQtMjMgLTloLTIxM2wtMTY0IC02MTZxLTcgLTI0IC0zMSAtMjRoLTE1OXEtMjQgMCAtMzEgMjRsLTE2NiA2MTZoLTIwOWwtMTY3IC02MTZxLTcgLTI0IC0zMSAtMjRoLTE1OXEtMTEgMCAtMTkuNSA3dC0xMC41IDE3bC0xNjAgNjE2aC0yMDhxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTc1bC0zMyAxMjhoLTE0MnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgxMDlsLTg5IDM0NHEtNSAxNSA1IDI4CnExMCAxMiAyNiAxMmgxMzdxMjYgMCAzMSAtMjRsOTAgLTM2MGgzNTlsOTcgMzYwcTcgMjQgMzEgMjRoMTI2cTI0IDAgMzEgLTI0bDk4IC0zNjBoMzY1bDkzIDM2MHE1IDI0IDMxIDI0aDEzN3ExNiAwIDI2IC0xMnExMCAtMTMgNSAtMjhsLTkxIC0zNDRoMTExcTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE0NWwtMzQgLTEyOGgxNzlxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnRjIiB1bmljb2RlPSImI3hmMTVhOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMTE2NyA4OTZxMTggLTE4MiAtMTMxIC0yNThxMTE3IC0yOCAxNzUgLTEwM3Q0NSAtMjE0cS03IC03MSAtMzIuNSAtMTI1dC02NC41IC04OXQtOTcgLTU4LjV0LTEyMS41IC0zNC41dC0xNDUuNSAtMTV2LTI1NWgtMTU0djI1MXEtODAgMCAtMTIyIDF2LTI1MmgtMTU0djI1NXEtMTggMCAtNTQgMC41dC01NSAwLjVoLTIwMGwzMSAxODNoMTExcTUwIDAgNTggNTF2NDAyaDE2cS02IDEgLTE2IDF2Mjg3cS0xMyA2OCAtODkgNjhoLTExMXYxNjQKbDIxMiAtMXE2NCAwIDk3IDF2MjUyaDE1NHYtMjQ3cTgyIDIgMTIyIDJ2MjQ1aDE1NHYtMjUycTc5IC03IDE0MCAtMjIuNXQxMTMgLTQ1dDgyLjUgLTc4dDM2LjUgLTExNC41ek05NTIgMzUxcTAgMzYgLTE1IDY0dC0zNyA0NnQtNTcuNSAzMC41dC02NS41IDE4LjV0LTc0IDl0LTY5IDN0LTY0LjUgLTF0LTQ3LjUgLTF2LTMzOHE4IDAgMzcgLTAuNXQ0OCAtMC41dDUzIDEuNXQ1OC41IDR0NTcgOC41dDU1LjUgMTR0NDcuNSAyMXQzOS41IDMwCnQyNC41IDQwdDkuNSA1MXpNODgxIDgyN3EwIDMzIC0xMi41IDU4LjV0LTMwLjUgNDJ0LTQ4IDI4dC01NSAxNi41dC02MS41IDh0LTU4IDIuNXQtNTQgLTF0LTM5LjUgLTAuNXYtMzA3cTUgMCAzNC41IC0wLjV0NDYuNSAwdDUwIDJ0NTUgNS41dDUxLjUgMTF0NDguNSAxOC41dDM3IDI3dDI3IDM4LjV0OSA1MXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsZSIgdW5pY29kZT0iJiN4ZjE1YjsiIApkPSJNMTAyNCAxMDI0djQ3MnEyMiAtMTQgMzYgLTI4bDQwOCAtNDA4cTE0IC0xNCAyOCAtMzZoLTQ3MnpNODk2IDk5MnEwIC00MCAyOCAtNjh0NjggLTI4aDU0NHYtMTA1NnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODAwdi01NDR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZpbGVfdGV4dCIgdW5pY29kZT0iJiN4ZjE1YzsiIApkPSJNMTQ2OCAxMDYwcTE0IC0xNCAyOCAtMzZoLTQ3MnY0NzJxMjIgLTE0IDM2IC0yOHpNOTkyIDg5Nmg1NDR2LTEwNTZxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDgwMHYtNTQ0cTAgLTQwIDI4IC02OHQ2OCAtMjh6TTExNTIgMTYwdjY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDQKcTE0IDAgMjMgOXQ5IDIzek0xMTUyIDQxNnY2NHEwIDE0IC05IDIzdC0yMyA5aC03MDRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNzA0cTE0IDAgMjMgOXQ5IDIzek0xMTUyIDY3MnY2NHEwIDE0IC05IDIzdC0yMyA5aC03MDRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNzA0cTE0IDAgMjMgOXQ5IDIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0X2J5X2FscGhhYmV0IiB1bmljb2RlPSImI3hmMTVkOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTE5MSAxMTI4aDE3N2wtNzIgMjE4bC0xMiA0N3EtMiAxNiAtMiAyMGgtNGwtMyAtMjBxMCAtMSAtMy41IC0xOHQtNy41IC0yOXpNNzM2IDk2cTAgLTEyIC0xMCAtMjRsLTMxOSAtMzE5cS0xMCAtOSAtMjMgLTlxLTEyIDAgLTIzIDlsLTMyMCAzMjBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMTkydjEzNzZxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTEzNzZoMTkycTE0IDAgMjMgLTl0OSAtMjN6TTE1NzIgLTIzCnYtMjMzaC01ODR2OTBsMzY5IDUyOXExMiAxOCAyMSAyN2wxMSA5djNxLTIgMCAtNi41IC0wLjV0LTcuNSAtMC41cS0xMiAtMyAtMzAgLTNoLTIzMnYtMTE1aC0xMjB2MjI5aDU2N3YtODlsLTM2OSAtNTMwcS02IC04IC0yMSAtMjZsLTExIC0xMXYtMmwxNCAycTkgMiAzMCAyaDI0OHYxMTloMTIxek0xNjYxIDg3NHYtMTA2aC0yODh2MTA2aDc1bC00NyAxNDRoLTI0M2wtNDcgLTE0NGg3NXYtMTA2aC0yODd2MTA2aDcwbDIzMCA2NjJoMTYyCmwyMzAgLTY2Mmg3MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzMyOSIgdW5pY29kZT0iJiN4ZjE1ZTsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTExOTEgMTA0aDE3N2wtNzIgMjE4bC0xMiA0N3EtMiAxNiAtMiAyMGgtNGwtMyAtMjBxMCAtMSAtMy41IC0xOHQtNy41IC0yOXpNNzM2IDk2cTAgLTEyIC0xMCAtMjRsLTMxOSAtMzE5cS0xMCAtOSAtMjMgLTlxLTEyIDAgLTIzIDlsLTMyMCAzMjBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMTkydjEzNzZxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTEzNzZoMTkycTE0IDAgMjMgLTl0OSAtMjN6TTE2NjEgLTE1MAp2LTEwNmgtMjg4djEwNmg3NWwtNDcgMTQ0aC0yNDNsLTQ3IC0xNDRoNzV2LTEwNmgtMjg3djEwNmg3MGwyMzAgNjYyaDE2MmwyMzAgLTY2Mmg3MHpNMTU3MiAxMDAxdi0yMzNoLTU4NHY5MGwzNjkgNTI5cTEyIDE4IDIxIDI3bDExIDl2M3EtMiAwIC02LjUgLTAuNXQtNy41IC0wLjVxLTEyIC0zIC0zMCAtM2gtMjMydi0xMTVoLTEyMHYyMjloNTY3di04OWwtMzY5IC01MzBxLTYgLTggLTIxIC0yNmwtMTEgLTEwdi0zbDE0IDNxOSAxIDMwIDFoMjQ4CnYxMTloMTIxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0X2J5X2F0dHJpYnV0ZXMiIHVuaWNvZGU9IiYjeGYxNjA7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiAtMzJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC04MzJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDgzMgpxMTQgMCAyMyAtOXQ5IC0yM3pNMTYwMCA0ODB2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NDBxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDY0MHExNCAwIDIzIC05dDkgLTIzek0xNDA4IDk5MnYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTQ0OHEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloNDQ4cTE0IDAgMjMgLTl0OSAtMjN6TTEyMTYgMTUwNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTI1NgpxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDI1NnExNCAwIDIzIC05dDkgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0IiB1bmljb2RlPSImI3hmMTYxOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTIxNiAtMzJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0yNTZxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDI1NnExNCAwIDIzIC05dDkgLTIzek03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTIKcTE0IDAgMjMgLTl0OSAtMjN6TTE0MDggNDgwdi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNDQ4cS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWg0NDhxMTQgMCAyMyAtOXQ5IC0yM3pNMTYwMCA5OTJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NDBxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDY0MHExNCAwIDIzIC05dDkgLTIzek0xNzkyIDE1MDR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC04MzIKcS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWg4MzJxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF9ieV9vcmRlciIgdW5pY29kZT0iJiN4ZjE2MjsiIApkPSJNMTM0NiAyMjNxMCA2MyAtNDQgMTE2dC0xMDMgNTNxLTUyIDAgLTgzIC0zN3QtMzEgLTk0dDM2LjUgLTk1dDEwNC41IC0zOHE1MCAwIDg1IDI3dDM1IDY4ek03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOXQ5IC0yMwp6TTE0ODYgMTY1cTAgLTYyIC0xMyAtMTIxLjV0LTQxIC0xMTR0LTY4IC05NS41dC05OC41IC02NS41dC0xMjcuNSAtMjQuNXEtNjIgMCAtMTA4IDE2cS0yNCA4IC00MiAxNWwzOSAxMTNxMTUgLTcgMzEgLTExcTM3IC0xMyA3NSAtMTNxODQgMCAxMzQuNSA1OC41dDY2LjUgMTQ1LjVoLTJxLTIxIC0yMyAtNjEuNSAtMzd0LTg0LjUgLTE0cS0xMDYgMCAtMTczIDcxLjV0LTY3IDE3Mi41cTAgMTA1IDcyIDE3OHQxODEgNzNxMTIzIDAgMjA1IC05NC41CnQ4MiAtMjUyLjV6TTE0NTYgODgydi0xMTRoLTQ2OXYxMTRoMTY3djQzMnEwIDcgMC41IDE5dDAuNSAxN3YxNmgtMmwtNyAtMTJxLTggLTEzIC0yNiAtMzFsLTYyIC01OGwtODIgODZsMTkyIDE4NWgxMjN2LTY1NGgxNjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InNvcnRfYnlfb3JkZXJfYWx0IiB1bmljb2RlPSImI3hmMTYzOyIgCmQ9Ik0xMzQ2IDEyNDdxMCA2MyAtNDQgMTE2dC0xMDMgNTNxLTUyIDAgLTgzIC0zN3QtMzEgLTk0dDM2LjUgLTk1dDEwNC41IC0zOHE1MCAwIDg1IDI3dDM1IDY4ek03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOQp0OSAtMjN6TTE0NTYgLTE0MnYtMTE0aC00Njl2MTE0aDE2N3Y0MzJxMCA3IDAuNSAxOXQwLjUgMTd2MTZoLTJsLTcgLTEycS04IC0xMyAtMjYgLTMxbC02MiAtNThsLTgyIDg2bDE5MiAxODVoMTIzdi02NTRoMTY1ek0xNDg2IDExODlxMCAtNjIgLTEzIC0xMjEuNXQtNDEgLTExNHQtNjggLTk1LjV0LTk4LjUgLTY1LjV0LTEyNy41IC0yNC41cS02MiAwIC0xMDggMTZxLTI0IDggLTQyIDE1bDM5IDExM3ExNSAtNyAzMSAtMTFxMzcgLTEzIDc1IC0xMwpxODQgMCAxMzQuNSA1OC41dDY2LjUgMTQ1LjVoLTJxLTIxIC0yMyAtNjEuNSAtMzd0LTg0LjUgLTE0cS0xMDYgMCAtMTczIDcxLjV0LTY3IDE3Mi41cTAgMTA1IDcyIDE3OHQxODEgNzNxMTIzIDAgMjA1IC05NC41dDgyIC0yNTIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzMzNCIgdW5pY29kZT0iJiN4ZjE2NDsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTI1NiAxOTJxMCAyNiAtMTkgNDV0LTQ1IDE5cS0yNyAwIC00NS41IC0xOXQtMTguNSAtNDVxMCAtMjcgMTguNSAtNDUuNXQ0NS41IC0xOC41cTI2IDAgNDUgMTguNXQxOSA0NS41ek00MTYgNzA0di02NDBxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0yODhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY2NDBxMCAyNiAxOSA0NXQ0NSAxOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNjAwIDcwNHEwIC04NiAtNTUgLTE0OXExNSAtNDQgMTUgLTc2CnEzIC03NiAtNDMgLTEzN3ExNyAtNTYgMCAtMTE3cS0xNSAtNTcgLTU0IC05NHE5IC0xMTIgLTQ5IC0xODFxLTY0IC03NiAtMTk3IC03OGgtMzZoLTc2aC0xN3EtNjYgMCAtMTQ0IDE1LjV0LTEyMS41IDI5dC0xMjAuNSAzOS41cS0xMjMgNDMgLTE1OCA0NHEtMjYgMSAtNDUgMTkuNXQtMTkgNDQuNXY2NDFxMCAyNSAxOCA0My41dDQzIDIwLjVxMjQgMiA3NiA1OXQxMDEgMTIxcTY4IDg3IDEwMSAxMjBxMTggMTggMzEgNDh0MTcuNSA0OC41CnQxMy41IDYwLjVxNyAzOSAxMi41IDYxdDE5LjUgNTJ0MzQgNTBxMTkgMTkgNDUgMTlxNDYgMCA4Mi41IC0xMC41dDYwIC0yNnQ0MCAtNDAuNXQyNCAtNDV0MTIgLTUwdDUgLTQ1dDAuNSAtMzlxMCAtMzggLTkuNSAtNzZ0LTE5IC02MHQtMjcuNSAtNTZxLTMgLTYgLTEwIC0xOHQtMTEgLTIydC04IC0yNGgyNzdxNzggMCAxMzUgLTU3dDU3IC0xMzV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zMzUiIHVuaWNvZGU9IiYjeGYxNjU7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0yNTYgOTYwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXEtMjcgMCAtNDUuNSAxOXQtMTguNSA0NXEwIDI3IDE4LjUgNDUuNXQ0NS41IDE4LjVxMjYgMCA0NSAtMTguNXQxOSAtNDUuNXpNNDE2IDQ0OHY2NDBxMCAyNiAtMTkgNDV0LTQ1IDE5aC0yODhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di02NDBxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgyODhxMjYgMCA0NSAxOXQxOSA0NXpNMTU0NSA1OTdxNTUgLTYxIDU1IC0xNDlxLTEgLTc4IC01Ny41IC0xMzUKdC0xMzQuNSAtNTdoLTI3N3E0IC0xNCA4IC0yNHQxMSAtMjJ0MTAgLTE4cTE4IC0zNyAyNyAtNTd0MTkgLTU4LjV0MTAgLTc2LjVxMCAtMjQgLTAuNSAtMzl0LTUgLTQ1dC0xMiAtNTB0LTI0IC00NXQtNDAgLTQwLjV0LTYwIC0yNnQtODIuNSAtMTAuNXEtMjYgMCAtNDUgMTlxLTIwIDIwIC0zNCA1MHQtMTkuNSA1MnQtMTIuNSA2MXEtOSA0MiAtMTMuNSA2MC41dC0xNy41IDQ4LjV0LTMxIDQ4cS0zMyAzMyAtMTAxIDEyMHEtNDkgNjQgLTEwMSAxMjEKdC03NiA1OXEtMjUgMiAtNDMgMjAuNXQtMTggNDMuNXY2NDFxMCAyNiAxOSA0NC41dDQ1IDE5LjVxMzUgMSAxNTggNDRxNzcgMjYgMTIwLjUgMzkuNXQxMjEuNSAyOXQxNDQgMTUuNWgxN2g3NmgzNnExMzMgLTIgMTk3IC03OHE1OCAtNjkgNDkgLTE4MXEzOSAtMzcgNTQgLTk0cTE3IC02MSAwIC0xMTdxNDYgLTYxIDQzIC0xMzdxMCAtMzIgLTE1IC03NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieW91dHViZV9zaWduIiB1bmljb2RlPSImI3hmMTY2OyIgCmQ9Ik05MTkgMjMzdjE1N3EwIDUwIC0yOSA1MHEtMTcgMCAtMzMgLTE2di0yMjRxMTYgLTE2IDMzIC0xNnEyOSAwIDI5IDQ5ek0xMTAzIDM1NWg2NnYzNHEwIDUxIC0zMyA1MXQtMzMgLTUxdi0zNHpNNTMyIDYyMXYtNzBoLTgwdi00MjNoLTc0djQyM2gtNzh2NzBoMjMyek03MzMgNDk1di0zNjdoLTY3djQwcS0zOSAtNDUgLTc2IC00NXEtMzMgMCAtNDIgMjhxLTYgMTcgLTYgNTR2MjkwaDY2di0yNzBxMCAtMjQgMSAtMjZxMSAtMTUgMTUgLTE1CnEyMCAwIDQyIDMxdjI4MGg2N3pNOTg1IDM4NHYtMTQ2cTAgLTUyIC03IC03M3EtMTIgLTQyIC01MyAtNDJxLTM1IDAgLTY4IDQxdi0zNmgtNjd2NDkzaDY3di0xNjFxMzIgNDAgNjggNDBxNDEgMCA1MyAtNDJxNyAtMjEgNyAtNzR6TTEyMzYgMjU1di05cTAgLTI5IC0yIC00M3EtMyAtMjIgLTE1IC00MHEtMjcgLTQwIC04MCAtNDBxLTUyIDAgLTgxIDM4cS0yMSAyNyAtMjEgODZ2MTI5cTAgNTkgMjAgODZxMjkgMzggODAgMzh0NzggLTM4CnEyMSAtMjkgMjEgLTg2di03NmgtMTMzdi02NXEwIC01MSAzNCAtNTFxMjQgMCAzMCAyNnEwIDEgMC41IDd0MC41IDE2LjV2MjEuNWg2OHpNNzg1IDEwNzl2LTE1NnEwIC01MSAtMzIgLTUxdC0zMiA1MXYxNTZxMCA1MiAzMiA1MnQzMiAtNTJ6TTEzMTggMzY2cTAgMTc3IC0xOSAyNjBxLTEwIDQ0IC00MyA3My41dC03NiAzNC41cS0xMzYgMTUgLTQxMiAxNXEtMjc1IDAgLTQxMSAtMTVxLTQ0IC01IC03Ni41IC0zNC41dC00Mi41IC03My41CnEtMjAgLTg3IC0yMCAtMjYwcTAgLTE3NiAyMCAtMjYwcTEwIC00MyA0Mi41IC03M3Q3NS41IC0zNXExMzcgLTE1IDQxMiAtMTV0NDEyIDE1cTQzIDUgNzUuNSAzNXQ0Mi41IDczcTIwIDg0IDIwIDI2MHpNNTYzIDEwMTdsOTAgMjk2aC03NWwtNTEgLTE5NWwtNTMgMTk1aC03OHE3IC0yMyAyMyAtNjlsMjQgLTY5cTM1IC0xMDMgNDYgLTE1OHYtMjAxaDc0djIwMXpNODUyIDkzNnYxMzBxMCA1OCAtMjEgODdxLTI5IDM4IC03OCAzOApxLTUxIDAgLTc4IC0zOHEtMjEgLTI5IC0yMSAtODd2LTEzMHEwIC01OCAyMSAtODdxMjcgLTM4IDc4IC0zOHE0OSAwIDc4IDM4cTIxIDI3IDIxIDg3ek0xMDMzIDgxNmg2N3YzNzBoLTY3di0yODNxLTIyIC0zMSAtNDIgLTMxcS0xNSAwIC0xNiAxNnEtMSAyIC0xIDI2djI3MmgtNjd2LTI5M3EwIC0zNyA2IC01NXExMSAtMjcgNDMgLTI3cTM2IDAgNzcgNDV2LTQwek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNQpoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InlvdXR1YmUiIHVuaWNvZGU9IiYjeGYxNjc7IiAKZD0iTTk3MSAyOTJ2LTIxMXEwIC02NyAtMzkgLTY3cS0yMyAwIC00NSAyMnYzMDFxMjIgMjIgNDUgMjJxMzkgMCAzOSAtNjd6TTEzMDkgMjkxdi00NmgtOTB2NDZxMCA2OCA0NSA2OHQ0NSAtNjh6TTM0MyA1MDloMTA3djk0aC0zMTJ2LTk0aDEwNXYtNTY5aDEwMHY1Njl6TTYzMSAtNjBoODl2NDk0aC04OXYtMzc4cS0zMCAtNDIgLTU3IC00MnEtMTggMCAtMjEgMjFxLTEgMyAtMSAzNXYzNjRoLTg5di0zOTFxMCAtNDkgOCAtNzMKcTEyIC0zNyA1OCAtMzdxNDggMCAxMDIgNjF2LTU0ek0xMDYwIDg4djE5N3EwIDczIC05IDk5cS0xNyA1NiAtNzEgNTZxLTUwIDAgLTkzIC01NHYyMTdoLTg5di02NjNoODl2NDhxNDUgLTU1IDkzIC01NXE1NCAwIDcxIDU1cTkgMjcgOSAxMDB6TTEzOTggOTh2MTNoLTkxcTAgLTUxIC0yIC02MXEtNyAtMzYgLTQwIC0zNnEtNDYgMCAtNDYgNjl2ODdoMTc5djEwM3EwIDc5IC0yNyAxMTZxLTM5IDUxIC0xMDYgNTFxLTY4IDAgLTEwNyAtNTEKcS0yOCAtMzcgLTI4IC0xMTZ2LTE3M3EwIC03OSAyOSAtMTE2cTM5IC01MSAxMDggLTUxcTcyIDAgMTA4IDUzcTE4IDI3IDIxIDU0cTIgOSAyIDU4ek03OTAgMTAxMXYyMTBxMCA2OSAtNDMgNjl0LTQzIC02OXYtMjEwcTAgLTcwIDQzIC03MHQ0MyA3MHpNMTUwOSAyNjBxMCAtMjM0IC0yNiAtMzUwcS0xNCAtNTkgLTU4IC05OXQtMTAyIC00NnEtMTg0IC0yMSAtNTU1IC0yMXQtNTU1IDIxcS01OCA2IC0xMDIuNSA0NnQtNTcuNSA5OQpxLTI2IDExMiAtMjYgMzUwcTAgMjM0IDI2IDM1MHExNCA1OSA1OCA5OXQxMDMgNDdxMTgzIDIwIDU1NCAyMHQ1NTUgLTIwcTU4IC03IDEwMi41IC00N3Q1Ny41IC05OXEyNiAtMTEyIDI2IC0zNTB6TTUxMSAxNTM2aDEwMmwtMTIxIC0zOTl2LTI3MWgtMTAwdjI3MXEtMTQgNzQgLTYxIDIxMnEtMzcgMTAzIC02NSAxODdoMTA2bDcxIC0yNjN6TTg4MSAxMjAzdi0xNzVxMCAtODEgLTI4IC0xMThxLTM4IC01MSAtMTA2IC01MXEtNjcgMCAtMTA1IDUxCnEtMjggMzggLTI4IDExOHYxNzVxMCA4MCAyOCAxMTdxMzggNTEgMTA1IDUxcTY4IDAgMTA2IC01MXEyOCAtMzcgMjggLTExN3pNMTIxNiAxMzY1di00OTloLTkxdjU1cS01MyAtNjIgLTEwMyAtNjJxLTQ2IDAgLTU5IDM3cS04IDI0IC04IDc1djM5NGg5MXYtMzY3cTAgLTMzIDEgLTM1cTMgLTIyIDIxIC0yMnEyNyAwIDU3IDQzdjM4MWg5MXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieGluZyIgdW5pY29kZT0iJiN4ZjE2ODsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTU5NyA4NjlxLTEwIC0xOCAtMjU3IC00NTZxLTI3IC00NiAtNjUgLTQ2aC0yMzlxLTIxIDAgLTMxIDE3dDAgMzZsMjUzIDQ0OHExIDAgMCAxbC0xNjEgMjc5cS0xMiAyMiAtMSAzN3E5IDE1IDMyIDE1aDIzOXE0MCAwIDY2IC00NXpNMTQwMyAxNTExcTExIC0xNiAwIC0zN2wtNTI4IC05MzR2LTFsMzM2IC02MTVxMTEgLTIwIDEgLTM3cS0xMCAtMTUgLTMyIC0xNWgtMjM5cS00MiAwIC02NiA0NWwtMzM5IDYyMnExOCAzMiA1MzEgOTQyCnEyNSA0NSA2NCA0NWgyNDFxMjIgMCAzMSAtMTV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Inhpbmdfc2lnbiIgdW5pY29kZT0iJiN4ZjE2OTsiIApkPSJNNjg1IDc3MXEwIDEgLTEyNiAyMjJxLTIxIDM0IC01MiAzNGgtMTg0cS0xOCAwIC0yNiAtMTFxLTcgLTEyIDEgLTI5bDEyNSAtMjE2di0xbC0xOTYgLTM0NnEtOSAtMTQgMCAtMjhxOCAtMTMgMjQgLTEzaDE4NXEzMSAwIDUwIDM2ek0xMzA5IDEyNjhxLTcgMTIgLTI0IDEyaC0xODdxLTMwIDAgLTQ5IC0zNWwtNDExIC03MjlxMSAtMiAyNjIgLTQ4MXEyMCAtMzUgNTIgLTM1aDE4NHExOCAwIDI1IDEycTggMTMgLTEgMjhsLTI2MCA0NzZ2MQpsNDA5IDcyM3E4IDE2IDAgMjh6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ5b3V0dWJlX3BsYXkiIHVuaWNvZGU9IiYjeGYxNmE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik03MTEgNDA4bDQ4NCAyNTBsLTQ4NCAyNTN2LTUwM3pNODk2IDEyNzBxMTY4IDAgMzI0LjUgLTQuNXQyMjkuNSAtOS41bDczIC00cTEgMCAxNyAtMS41dDIzIC0zdDIzLjUgLTQuNXQyOC41IC04dDI4IC0xM3QzMSAtMTkuNXQyOSAtMjYuNXE2IC02IDE1LjUgLTE4LjV0MjkgLTU4LjV0MjYuNSAtMTAxcTggLTY0IDEyLjUgLTEzNi41dDUuNSAtMTEzLjV2LTQwdi0xMzZxMSAtMTQ1IC0xOCAtMjkwcS03IC01NSAtMjUgLTk5LjV0LTMyIC02MS41CmwtMTQgLTE3cS0xNCAtMTUgLTI5IC0yNi41dC0zMSAtMTl0LTI4IC0xMi41dC0yOC41IC04dC0yNCAtNC41dC0yMyAtM3QtMTYuNSAtMS41cS0yNTEgLTE5IC02MjcgLTE5cS0yMDcgMiAtMzU5LjUgNi41dC0yMDAuNSA3LjVsLTQ5IDRsLTM2IDRxLTM2IDUgLTU0LjUgMTB0LTUxIDIxdC01Ni41IDQxcS02IDYgLTE1LjUgMTguNXQtMjkgNTguNXQtMjYuNSAxMDFxLTggNjQgLTEyLjUgMTM2LjV0LTUuNSAxMTMuNXY0MHYxMzYKcS0xIDE0NSAxOCAyOTBxNyA1NSAyNSA5OS41dDMyIDYxLjVsMTQgMTdxMTQgMTUgMjkgMjYuNXQzMSAxOS41dDI4IDEzdDI4LjUgOHQyMy41IDQuNXQyMyAzdDE3IDEuNXEyNTEgMTggNjI3IDE4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkcm9wYm94IiB1bmljb2RlPSImI3hmMTZiOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNDAyIDgyOWw0OTQgLTMwNWwtMzQyIC0yODVsLTQ5MCAzMTl6TTEzODggMjc0di0xMDhsLTQ5MCAtMjkzdi0xbC0xIDFsLTEgLTF2MWwtNDg5IDI5M3YxMDhsMTQ3IC05NmwzNDIgMjg0djJsMSAtMWwxIDF2LTJsMzQzIC0yODR6TTU1NCAxNDE4bDM0MiAtMjg1bC00OTQgLTMwNGwtMzM4IDI3MHpNMTM5MCA4MjlsMzM4IC0yNzFsLTQ4OSAtMzE5bC0zNDMgMjg1ek0xMjM5IDE0MThsNDg5IC0zMTlsLTMzOCAtMjcwbC00OTQgMzA0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFja2V4Y2hhbmdlIiB1bmljb2RlPSImI3hmMTZjOyIgCmQ9Ik0xMjg5IC05NmgtMTExOHY0ODBoLTE2MHYtNjQwaDE0Mzh2NjQwaC0xNjB2LTQ4MHpNMzQ3IDQyOGwzMyAxNTdsNzgzIC0xNjVsLTMzIC0xNTZ6TTQ1MCA4MDJsNjcgMTQ2bDcyNSAtMzM5bC02NyAtMTQ1ek02NTEgMTE1OGwxMDIgMTIzbDYxNCAtNTEzbC0xMDIgLTEyM3pNMTA0OCAxNTM2bDQ3NyAtNjQxbC0xMjggLTk2bC00NzcgNjQxek0zMzAgNjV2MTU5aDgwMHYtMTU5aC04MDB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Imluc3RhZ3JhbSIgdW5pY29kZT0iJiN4ZjE2ZDsiIApkPSJNMTAyNCA2NDBxMCAxMDYgLTc1IDE4MXQtMTgxIDc1dC0xODEgLTc1dC03NSAtMTgxdDc1IC0xODF0MTgxIC03NXQxODEgNzV0NzUgMTgxek0xMTYyIDY0MHEwIC0xNjQgLTExNSAtMjc5dC0yNzkgLTExNXQtMjc5IDExNXQtMTE1IDI3OXQxMTUgMjc5dDI3OSAxMTV0Mjc5IC0xMTV0MTE1IC0yNzl6TTEyNzAgMTA1MHEwIC0zOCAtMjcgLTY1dC02NSAtMjd0LTY1IDI3dC0yNyA2NXQyNyA2NXQ2NSAyN3Q2NSAtMjd0MjcgLTY1ek03NjggMTI3MApxLTcgMCAtNzYuNSAwLjV0LTEwNS41IDB0LTk2LjUgLTN0LTEwMyAtMTB0LTcxLjUgLTE4LjVxLTUwIC0yMCAtODggLTU4dC01OCAtODhxLTExIC0yOSAtMTguNSAtNzEuNXQtMTAgLTEwM3QtMyAtOTYuNXQwIC0xMDUuNXQwLjUgLTc2LjV0LTAuNSAtNzYuNXQwIC0xMDUuNXQzIC05Ni41dDEwIC0xMDN0MTguNSAtNzEuNXEyMCAtNTAgNTggLTg4dDg4IC01OHEyOSAtMTEgNzEuNSAtMTguNXQxMDMgLTEwdDk2LjUgLTN0MTA1LjUgMHQ3Ni41IDAuNQp0NzYuNSAtMC41dDEwNS41IDB0OTYuNSAzdDEwMyAxMHQ3MS41IDE4LjVxNTAgMjAgODggNTh0NTggODhxMTEgMjkgMTguNSA3MS41dDEwIDEwM3QzIDk2LjV0MCAxMDUuNXQtMC41IDc2LjV0MC41IDc2LjV0MCAxMDUuNXQtMyA5Ni41dC0xMCAxMDN0LTE4LjUgNzEuNXEtMjAgNTAgLTU4IDg4dC04OCA1OHEtMjkgMTEgLTcxLjUgMTguNXQtMTAzIDEwdC05Ni41IDN0LTEwNS41IDB0LTc2LjUgLTAuNXpNMTUzNiA2NDBxMCAtMjI5IC01IC0zMTcKcS0xMCAtMjA4IC0xMjQgLTMyMnQtMzIyIC0xMjRxLTg4IC01IC0zMTcgLTV0LTMxNyA1cS0yMDggMTAgLTMyMiAxMjR0LTEyNCAzMjJxLTUgODggLTUgMzE3dDUgMzE3cTEwIDIwOCAxMjQgMzIydDMyMiAxMjRxODggNSAzMTcgNXQzMTcgLTVxMjA4IC0xMCAzMjIgLTEyNHQxMjQgLTMyMnE1IC04OCA1IC0zMTd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZsaWNrciIgdW5pY29kZT0iJiN4ZjE2ZTsiIApkPSJNMTI0OCAxNDA4cTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41di05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjB6TTY5OCA2NDBxMCA4OCAtNjIgMTUwdC0xNTAgNjJ0LTE1MCAtNjJ0LTYyIC0xNTB0NjIgLTE1MHQxNTAgLTYydDE1MCA2MnQ2MiAxNTB6TTEyNjIgNjQwcTAgODggLTYyIDE1MAp0LTE1MCA2MnQtMTUwIC02MnQtNjIgLTE1MHQ2MiAtMTUwdDE1MCAtNjJ0MTUwIDYydDYyIDE1MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWRuIiB1bmljb2RlPSImI3hmMTcwOyIgCmQ9Ik03NjggOTE0bDIwMSAtMzA2aC00MDJ6TTExMzMgMzg0aDk0bC00NTkgNjkxbC00NTkgLTY5MWg5NGwxMDQgMTYwaDUyMnpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxNzEiIHVuaWNvZGU9IiYjeGYxNzE7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik04MTUgNjc3cTggLTYzIC01MC41IC0xMDF0LTExMS41IC02cS0zOSAxNyAtNTMuNSA1OHQtMC41IDgydDUyIDU4cTM2IDE4IDcyLjUgMTJ0NjQgLTM1LjV0MjcuNSAtNjcuNXpNOTI2IDY5OHEtMTQgMTA3IC0xMTMgMTY0dC0xOTcgMTNxLTYzIC0yOCAtMTAwLjUgLTg4LjV0LTM0LjUgLTEyOS41cTQgLTkxIDc3LjUgLTE1NXQxNjUuNSAtNTZxOTEgOCAxNTIgODR0NTAgMTY4ek0xMTY1IDEyNDBxLTIwIDI3IC01NiA0NC41dC01OCAyMgp0LTcxIDEyLjVxLTI5MSA0NyAtNTY2IC0ycS00MyAtNyAtNjYgLTEydC01NSAtMjJ0LTUwIC00M3EzMCAtMjggNzYgLTQ1LjV0NzMuNSAtMjJ0ODcuNSAtMTEuNXEyMjggLTI5IDQ0OCAtMXE2MyA4IDg5LjUgMTJ0NzIuNSAyMS41dDc1IDQ2LjV6TTEyMjIgMjA1cS04IC0yNiAtMTUuNSAtNzYuNXQtMTQgLTg0dC0yOC41IC03MHQtNTggLTU2LjVxLTg2IC00OCAtMTg5LjUgLTcxLjV0LTIwMiAtMjJ0LTIwMS41IDE4LjVxLTQ2IDggLTgxLjUgMTgKdC03Ni41IDI3dC03MyA0My41dC01MiA2MS41cS0yNSA5NiAtNTcgMjkybDYgMTZsMTggOXEyMjMgLTE0OCA1MDYuNSAtMTQ4dDUwNy41IDE0OHEyMSAtNiAyNCAtMjN0LTUgLTQ1dC04IC0zN3pNMTQwMyAxMTY2cS0yNiAtMTY3IC0xMTEgLTY1NXEtNSAtMzAgLTI3IC01NnQtNDMuNSAtNDB0LTU0LjUgLTMxcS0yNTIgLTEyNiAtNjEwIC04OHEtMjQ4IDI3IC0zOTQgMTM5cS0xNSAxMiAtMjUuNSAyNi41dC0xNyAzNXQtOSAzNHQtNiAzOS41CnQtNS41IDM1cS05IDUwIC0yNi41IDE1MHQtMjggMTYxLjV0LTIzLjUgMTQ3LjV0LTIyIDE1OHEzIDI2IDE3LjUgNDguNXQzMS41IDM3LjV0NDUgMzB0NDYgMjIuNXQ0OCAxOC41cTEyNSA0NiAzMTMgNjRxMzc5IDM3IDY3NiAtNTBxMTU1IC00NiAyMTUgLTEyMnExNiAtMjAgMTYuNSAtNTF0LTUuNSAtNTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImJpdGJ1Y2tldF9zaWduIiB1bmljb2RlPSImI3hmMTcyOyIgCmQ9Ik04NDggNjY2cTAgNDMgLTQxIDY2dC03NyAxcS00MyAtMjAgLTQyLjUgLTcyLjV0NDMuNSAtNzAuNXEzOSAtMjMgODEgNHQzNiA3MnpNOTI4IDY4MnE4IC02NiAtMzYgLTEyMXQtMTEwIC02MXQtMTE5IDQwdC01NiAxMTNxLTIgNDkgMjUuNSA5M3Q3Mi41IDY0cTcwIDMxIDE0MS41IC0xMHQ4MS41IC0xMTh6TTExMDAgMTA3M3EtMjAgLTIxIC01My41IC0zNHQtNTMgLTE2dC02My41IC04cS0xNTUgLTIwIC0zMjQgMHEtNDQgNiAtNjMgOS41CnQtNTIuNSAxNnQtNTQuNSAzMi41cTEzIDE5IDM2IDMxdDQwIDE1LjV0NDcgOC41cTE5OCAzNSA0MDggMXEzMyAtNSA1MSAtOC41dDQzIC0xNnQzOSAtMzEuNXpNMTE0MiAzMjdxMCA3IDUuNSAyNi41dDMgMzJ0LTE3LjUgMTYuNXEtMTYxIC0xMDYgLTM2NSAtMTA2dC0zNjYgMTA2bC0xMiAtNmwtNSAtMTJxMjYgLTE1NCA0MSAtMjEwcTQ3IC04MSAyMDQgLTEwOHEyNDkgLTQ2IDQyOCA1M3EzNCAxOSA0OSA1MS41dDIyLjUgODUuNXQxMi41IDcxegpNMTI3MiAxMDIwcTkgNTMgLTggNzVxLTQzIDU1IC0xNTUgODhxLTIxNiA2MyAtNDg3IDM2cS0xMzIgLTEyIC0yMjYgLTQ2cS0zOCAtMTUgLTU5LjUgLTI1dC00NyAtMzR0LTI5LjUgLTU0cTggLTY4IDE5IC0xMzh0MjkgLTE3MXQyNCAtMTM3cTEgLTUgNSAtMzF0NyAtMzZ0MTIgLTI3dDIyIC0yOHExMDUgLTgwIDI4NCAtMTAwcTI1OSAtMjggNDQwIDYzcTI0IDEzIDM5LjUgMjN0MzEgMjl0MTkuNSA0MHE0OCAyNjcgODAgNDczek0xNTM2IDExMjAKdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InR1bWJsciIgdW5pY29kZT0iJiN4ZjE3MzsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTk0NCAyMDdsODAgLTIzN3EtMjMgLTM1IC0xMTEgLTY2dC0xNzcgLTMycS0xMDQgLTIgLTE5MC41IDI2dC0xNDIuNSA3NHQtOTUgMTA2dC01NS41IDEyMHQtMTYuNSAxMTh2NTQ0aC0xNjh2MjE1cTcyIDI2IDEyOSA2OS41dDkxIDkwdDU4IDEwMnQzNCA5OXQxNSA4OC41cTEgNSA0LjUgOC41dDcuNSAzLjVoMjQ0di00MjRoMzMzdi0yNTJoLTMzNHYtNTE4cTAgLTMwIDYuNSAtNTZ0MjIuNSAtNTIuNXQ0OS41IC00MS41dDgxLjUgLTE0CnE3OCAyIDEzNCAyOXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHVtYmxyX3NpZ24iIHVuaWNvZGU9IiYjeGYxNzQ7IiAKZD0iTTExMzYgNzVsLTYyIDE4M3EtNDQgLTIyIC0xMDMgLTIycS0zNiAtMSAtNjIgMTAuNXQtMzguNSAzMS41dC0xNy41IDQwLjV0LTUgNDMuNXYzOThoMjU3djE5NGgtMjU2djMyNmgtMTg4cS04IDAgLTkgLTEwcS01IC00NCAtMTcuNSAtODd0LTM5IC05NXQtNzcgLTk1dC0xMTguNSAtNjh2LTE2NWgxMzB2LTQxOHEwIC01NyAyMS41IC0xMTV0NjUgLTExMXQxMjEgLTg1LjV0MTc2LjUgLTMwLjVxNjkgMSAxMzYuNSAyNXQ4NS41IDUwegpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImxvbmdfYXJyb3dfZG93biIgdW5pY29kZT0iJiN4ZjE3NTsiIGhvcml6LWFkdi14PSI3NjgiIApkPSJNNzY1IDIzN3E4IC0xOSAtNSAtMzVsLTM1MCAtMzg0cS0xMCAtMTAgLTIzIC0xMHEtMTQgMCAtMjQgMTBsLTM1NSAzODRxLTEzIDE2IC01IDM1cTkgMTkgMjkgMTloMjI0djEyNDhxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTEyNDhoMjI0cTIxIDAgMjkgLTE5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb25nX2Fycm93X3VwIiB1bmljb2RlPSImI3hmMTc2OyIgaG9yaXotYWR2LXg9Ijc2OCIgCmQ9Ik03NjUgMTA0M3EtOSAtMTkgLTI5IC0xOWgtMjI0di0xMjQ4cTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YxMjQ4aC0yMjRxLTIxIDAgLTI5IDE5dDUgMzVsMzUwIDM4NHExMCAxMCAyMyAxMHExNCAwIDI0IC0xMGwzNTUgLTM4NHExMyAtMTYgNSAtMzV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImxvbmdfYXJyb3dfbGVmdCIgdW5pY29kZT0iJiN4ZjE3NzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgNzM2di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTI0OHYtMjI0cTAgLTIxIC0xOSAtMjl0LTM1IDVsLTM4NCAzNTBxLTEwIDEwIC0xMCAyM3EwIDE0IDEwIDI0bDM4NCAzNTRxMTYgMTQgMzUgNnExOSAtOSAxOSAtMjl2LTIyNGgxMjQ4cTE0IDAgMjMgLTl0OSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImxvbmdfYXJyb3dfcmlnaHQiIHVuaWNvZGU9IiYjeGYxNzg7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzI4IDY0M3EwIC0xNCAtMTAgLTI0bC0zODQgLTM1NHEtMTYgLTE0IC0zNSAtNnEtMTkgOSAtMTkgMjl2MjI0aC0xMjQ4cS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxMjQ4djIyNHEwIDIxIDE5IDI5dDM1IC01bDM4NCAtMzUwcTEwIC0xMCAxMCAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFwcGxlIiB1bmljb2RlPSImI3hmMTc5OyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTM5MyAzMjFxLTM5IC0xMjUgLTEyMyAtMjUwcS0xMjkgLTE5NiAtMjU3IC0xOTZxLTQ5IDAgLTE0MCAzMnEtODYgMzIgLTE1MSAzMnEtNjEgMCAtMTQyIC0zM3EtODEgLTM0IC0xMzIgLTM0cS0xNTIgMCAtMzAxIDI1OXEtMTQ3IDI2MSAtMTQ3IDUwM3EwIDIyOCAxMTMgMzc0cTExMyAxNDQgMjg0IDE0NHE3MiAwIDE3NyAtMzBxMTA0IC0zMCAxMzggLTMwcTQ1IDAgMTQzIDM0cTEwMiAzNCAxNzMgMzRxMTE5IDAgMjEzIC02NQpxNTIgLTM2IDEwNCAtMTAwcS03OSAtNjcgLTExNCAtMTE4cS02NSAtOTQgLTY1IC0yMDdxMCAtMTI0IDY5IC0yMjN0MTU4IC0xMjZ6TTEwMTcgMTQ5NHEwIC02MSAtMjkgLTEzNnEtMzAgLTc1IC05MyAtMTM4cS01NCAtNTQgLTEwOCAtNzJxLTM3IC0xMSAtMTA0IC0xN3EzIDE0OSA3OCAyNTdxNzQgMTA3IDI1MCAxNDhxMSAtMyAyLjUgLTExdDIuNSAtMTFxMCAtNCAwLjUgLTEwdDAuNSAtMTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9IndpbmRvd3MiIHVuaWNvZGU9IiYjeGYxN2E7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik02ODIgNTMwdi02NTFsLTY4MiA5NHY1NTdoNjgyek02ODIgMTI3M3YtNjU5aC02ODJ2NTY1ek0xNjY0IDUzMHYtNzg2bC05MDcgMTI1djY2MWg5MDd6TTE2NjQgMTQwOHYtNzk0aC05MDd2NjY5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmRyb2lkIiB1bmljb2RlPSImI3hmMTdiOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNNDkzIDEwNTNxMTYgMCAyNy41IDExLjV0MTEuNSAyNy41dC0xMS41IDI3LjV0LTI3LjUgMTEuNXQtMjcgLTExLjV0LTExIC0yNy41dDExIC0yNy41dDI3IC0xMS41ek05MTUgMTA1M3ExNiAwIDI3IDExLjV0MTEgMjcuNXQtMTEgMjcuNXQtMjcgMTEuNXQtMjcuNSAtMTEuNXQtMTEuNSAtMjcuNXQxMS41IC0yNy41dDI3LjUgLTExLjV6TTEwMyA4NjlxNDIgMCA3MiAtMzB0MzAgLTcydi00MzBxMCAtNDMgLTI5LjUgLTczdC03Mi41IC0zMAp0LTczIDMwdC0zMCA3M3Y0MzBxMCA0MiAzMCA3MnQ3MyAzMHpNMTE2MyA4NTB2LTY2NnEwIC00NiAtMzIgLTc4dC03NyAtMzJoLTc1di0yMjdxMCAtNDMgLTMwIC03M3QtNzMgLTMwdC03MyAzMHQtMzAgNzN2MjI3aC0xMzh2LTIyN3EwIC00MyAtMzAgLTczdC03MyAtMzBxLTQyIDAgLTcyIDMwdC0zMCA3M2wtMSAyMjdoLTc0cS00NiAwIC03OCAzMnQtMzIgNzh2NjY2aDkxOHpNOTMxIDEyNTVxMTA3IC01NSAxNzEgLTE1My41dDY0IC0yMTUuNQpoLTkyNXEwIDExNyA2NCAyMTUuNXQxNzIgMTUzLjVsLTcxIDEzMXEtNyAxMyA1IDIwcTEzIDYgMjAgLTZsNzIgLTEzMnE5NSA0MiAyMDEgNDJ0MjAxIC00Mmw3MiAxMzJxNyAxMiAyMCA2cTEyIC03IDUgLTIwek0xNDA4IDc2N3YtNDMwcTAgLTQzIC0zMCAtNzN0LTczIC0zMHEtNDIgMCAtNzIgMzB0LTMwIDczdjQzMHEwIDQzIDMwIDcyLjV0NzIgMjkuNXE0MyAwIDczIC0yOS41dDMwIC03Mi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsaW51eCIgdW5pY29kZT0iJiN4ZjE3YzsiIApkPSJNNjYzIDExMjVxLTExIC0xIC0xNS41IC0xMC41dC04LjUgLTkuNXEtNSAtMSAtNSA1cTAgMTIgMTkgMTVoMTB6TTc1MCAxMTExcS00IC0xIC0xMS41IDYuNXQtMTcuNSA0LjVxMjQgMTEgMzIgLTJxMyAtNiAtMyAtOXpNMzk5IDY4NHEtNCAxIC02IC0zdC00LjUgLTEyLjV0LTUuNSAtMTMuNXQtMTAgLTEzcS0xMCAtMTEgLTEgLTEycTQgLTEgMTIuNSA3dDEyLjUgMThxMSAzIDIgN3QyIDZ0MS41IDQuNXQwLjUgNHYzdC0xIDIuNXQtMyAyegpNMTI1NCAzMjVxMCAxOCAtNTUgNDJxNCAxNSA3LjUgMjcuNXQ1IDI2dDMgMjEuNXQwLjUgMjIuNXQtMSAxOS41dC0zLjUgMjJ0LTQgMjAuNXQtNSAyNXQtNS41IDI2LjVxLTEwIDQ4IC00NyAxMDN0LTcyIDc1cTI0IC0yMCA1NyAtODNxODcgLTE2MiA1NCAtMjc4cS0xMSAtNDAgLTUwIC00MnEtMzEgLTQgLTM4LjUgMTguNXQtOCA4My41dC0xMS41IDEwN3EtOSAzOSAtMTkuNSA2OXQtMTkuNSA0NS41dC0xNS41IDI0LjV0LTEzIDE1dC03LjUgNwpxLTE0IDYyIC0zMSAxMDN0LTI5LjUgNTZ0LTIzLjUgMzN0LTE1IDQwcS00IDIxIDYgNTMuNXQ0LjUgNDkuNXQtNDQuNSAyNXEtMTUgMyAtNDQuNSAxOHQtMzUuNSAxNnEtOCAxIC0xMSAyNnQ4IDUxdDM2IDI3cTM3IDMgNTEgLTMwdDQgLTU4cS0xMSAtMTkgLTIgLTI2LjV0MzAgLTAuNXExMyA0IDEzIDM2djM3cS01IDMwIC0xMy41IDUwdC0yMSAzMC41dC0yMy41IDE1dC0yNyA3LjVxLTEwNyAtOCAtODkgLTEzNHEwIC0xNSAtMSAtMTUKcS05IDkgLTI5LjUgMTAuNXQtMzMgLTAuNXQtMTUuNSA1cTEgNTcgLTE2IDkwdC00NSAzNHEtMjcgMSAtNDEuNSAtMjcuNXQtMTYuNSAtNTkuNXEtMSAtMTUgMy41IC0zN3QxMyAtMzcuNXQxNS41IC0xMy41cTEwIDMgMTYgMTRxNCA5IC03IDhxLTcgMCAtMTUuNSAxNC41dC05LjUgMzMuNXEtMSAyMiA5IDM3dDM0IDE0cTE3IDAgMjcgLTIxdDkuNSAtMzl0LTEuNSAtMjJxLTIyIC0xNSAtMzEgLTI5cS04IC0xMiAtMjcuNSAtMjMuNQp0LTIwLjUgLTEyLjVxLTEzIC0xNCAtMTUuNSAtMjd0Ny41IC0xOHExNCAtOCAyNSAtMTkuNXQxNiAtMTl0MTguNSAtMTN0MzUuNSAtNi41cTQ3IC0yIDEwMiAxNXEyIDEgMjMgN3QzNC41IDEwLjV0MjkuNSAxM3QyMSAxNy41cTkgMTQgMjAgOHE1IC0zIDYuNSAtOC41dC0zIC0xMnQtMTYuNSAtOS41cS0yMCAtNiAtNTYuNSAtMjEuNXQtNDUuNSAtMTkuNXEtNDQgLTE5IC03MCAtMjNxLTI1IC01IC03OSAycS0xMCAyIC05IC0ydDE3IC0xOQpxMjUgLTIzIDY3IC0yMnExNyAxIDM2IDd0MzYgMTR0MzMuNSAxNy41dDMwIDE3dDI0LjUgMTJ0MTcuNSAyLjV0OC41IC0xMXEwIC0yIC0xIC00LjV0LTQgLTV0LTYgLTQuNXQtOC41IC01dC05IC00LjV0LTEwIC01dC05LjUgLTQuNXEtMjggLTE0IC02Ny41IC00NHQtNjYuNSAtNDN0LTQ5IC0xcS0yMSAxMSAtNjMgNzNxLTIyIDMxIC0yNSAyMnEtMSAtMyAtMSAtMTBxMCAtMjUgLTE1IC01Ni41dC0yOS41IC01NS41dC0yMSAtNTh0MTEuNSAtNjMKcS0yMyAtNiAtNjIuNSAtOTB0LTQ3LjUgLTE0MXEtMiAtMTggLTEuNSAtNjl0LTUuNSAtNTlxLTggLTI0IC0yOSAtM3EtMzIgMzEgLTM2IDk0cS0yIDI4IDQgNTZxNCAxOSAtMSAxOHEtMiAtMSAtNCAtNXEtMzYgLTY1IDEwIC0xNjZxNSAtMTIgMjUgLTI4dDI0IC0yMHEyMCAtMjMgMTA0IC05MC41dDkzIC03Ni41cTE2IC0xNSAxNy41IC0zOHQtMTQgLTQzdC00NS41IC0yM3E4IC0xNSAyOSAtNDQuNXQyOCAtNTR0NyAtNzAuNXE0NiAyNCA3IDkyCnEtNCA4IC0xMC41IDE2dC05LjUgMTJ0LTIgNnEzIDUgMTMgOS41dDIwIC0yLjVxNDYgLTUyIDE2NiAtMzZxMTMzIDE1IDE3NyA4N3EyMyAzOCAzNCAzMHExMiAtNiAxMCAtNTJxLTEgLTI1IC0yMyAtOTJxLTkgLTIzIC02IC0zNy41dDI0IC0xNS41cTMgMTkgMTQuNSA3N3QxMy41IDkwcTIgMjEgLTYuNSA3My41dC03LjUgOTd0MjMgNzAuNXExNSAxOCA1MSAxOHExIDM3IDM0LjUgNTN0NzIuNSAxMC41dDYwIC0yMi41ek02MjYgMTE1MgpxMyAxNyAtMi41IDMwdC0xMS41IDE1cS05IDIgLTkgLTdxMiAtNSA1IC02cTEwIDAgNyAtMTVxLTMgLTIwIDggLTIwcTMgMCAzIDN6TTEwNDUgOTU1cS0yIDggLTYuNSAxMS41dC0xMyA1dC0xNC41IDUuNXEtNSAzIC05LjUgOHQtNyA4dC01LjUgNi41dC00IDR0LTQgLTEuNXEtMTQgLTE2IDcgLTQzLjV0MzkgLTMxLjVxOSAtMSAxNC41IDh0My41IDIwek04NjcgMTE2OHEwIDExIC01IDE5LjV0LTExIDEyLjV0LTkgM3EtNiAwIC04IC0ydDAgLTQKdDUgLTNxMTQgLTQgMTggLTMxcTAgLTMgOCAycTIgMiAyIDN6TTkyMSAxNDAxcTAgMiAtMi41IDV0LTkgN3QtOS41IDZxLTE1IDE1IC0yNCAxNXEtOSAtMSAtMTEuNSAtNy41dC0xIC0xM3QtMC41IC0xMi41cS0xIC00IC02IC0xMC41dC02IC05dDMgLTguNXE0IC0zIDggMHQxMSA5dDE1IDlxMSAxIDkgMXQxNSAydDkgN3pNMTQ4NiA2MHEyMCAtMTIgMzEgLTI0LjV0MTIgLTI0dC0yLjUgLTIyLjV0LTE1LjUgLTIydC0yMy41IC0xOS41CnQtMzAgLTE4LjV0LTMxLjUgLTE2LjV0LTMyIC0xNS41dC0yNyAtMTNxLTM4IC0xOSAtODUuNSAtNTZ0LTc1LjUgLTY0cS0xNyAtMTYgLTY4IC0xOS41dC04OSAxNC41cS0xOCA5IC0yOS41IDIzLjV0LTE2LjUgMjUuNXQtMjIgMTkuNXQtNDcgOS41cS00NCAxIC0xMzAgMXEtMTkgMCAtNTcgLTEuNXQtNTggLTIuNXEtNDQgLTEgLTc5LjUgLTE1dC01My41IC0zMHQtNDMuNSAtMjguNXQtNTMuNSAtMTEuNXEtMjkgMSAtMTExIDMxdC0xNDYgNDMKcS0xOSA0IC01MSA5LjV0LTUwIDl0LTM5LjUgOS41dC0zMy41IDE0LjV0LTE3IDE5LjVxLTEwIDIzIDcgNjYuNXQxOCA1NC41cTEgMTYgLTQgNDB0LTEwIDQyLjV0LTQuNSAzNi41dDEwLjUgMjdxMTQgMTIgNTcgMTR0NjAgMTJxMzAgMTggNDIgMzV0MTIgNTFxMjEgLTczIC0zMiAtMTA2cS0zMiAtMjAgLTgzIC0xNXEtMzQgMyAtNDMgLTEwcS0xMyAtMTUgNSAtNTdxMiAtNiA4IC0xOHQ4LjUgLTE4dDQuNSAtMTd0MSAtMjJxMCAtMTUgLTE3IC00OQp0LTE0IC00OHEzIC0xNyAzNyAtMjZxMjAgLTYgODQuNSAtMTguNXQ5OS41IC0yMC41cTI0IC02IDc0IC0yMnQ4Mi41IC0yM3Q1NS41IC00cTQzIDYgNjQuNSAyOHQyMyA0OHQtNy41IDU4LjV0LTE5IDUydC0yMCAzNi41cS0xMjEgMTkwIC0xNjkgMjQycS02OCA3NCAtMTEzIDQwcS0xMSAtOSAtMTUgMTVxLTMgMTYgLTIgMzhxMSAyOSAxMCA1MnQyNCA0N3QyMiA0MnE4IDIxIDI2LjUgNzJ0MjkuNSA3OHQzMCA2MXQzOSA1NApxMTEwIDE0MyAxMjQgMTk1cS0xMiAxMTIgLTE2IDMxMHEtMiA5MCAyNCAxNTEuNXQxMDYgMTA0LjVxMzkgMjEgMTA0IDIxcTUzIDEgMTA2IC0xMy41dDg5IC00MS41cTU3IC00MiA5MS41IC0xMjEuNXQyOS41IC0xNDcuNXEtNSAtOTUgMzAgLTIxNHEzNCAtMTEzIDEzMyAtMjE4cTU1IC01OSA5OS41IC0xNjN0NTkuNSAtMTkxcTggLTQ5IDUgLTg0LjV0LTEyIC01NS41dC0yMCAtMjJxLTEwIC0yIC0yMy41IC0xOXQtMjcgLTM1LjUKdC00MC41IC0zMy41dC02MSAtMTRxLTE4IDEgLTMxLjUgNXQtMjIuNSAxMy41dC0xMy41IDE1LjV0LTExLjUgMjAuNXQtOSAxOS41cS0yMiAzNyAtNDEgMzB0LTI4IC00OXQ3IC05N3EyMCAtNzAgMSAtMTk1cS0xMCAtNjUgMTggLTEwMC41dDczIC0zM3Q4NSAzNS41cTU5IDQ5IDg5LjUgNjYuNXQxMDMuNSA0Mi41cTUzIDE4IDc3IDM2LjV0MTguNSAzNC41dC0yNSAyOC41dC01MS41IDIzLjVxLTMzIDExIC00OS41IDQ4dC0xNSA3Mi41CnQxNS41IDQ3LjVxMSAtMzEgOCAtNTYuNXQxNC41IC00MC41dDIwLjUgLTI4LjV0MjEgLTE5dDIxLjUgLTEzdDE2LjUgLTkuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZHJpYmJsZSIgdW5pY29kZT0iJiN4ZjE3ZDsiIApkPSJNMTAyNCAzNnEtNDIgMjQxIC0xNDAgNDk4aC0ybC0yIC0xcS0xNiAtNiAtNDMgLTE2LjV0LTEwMSAtNDl0LTEzNyAtODJ0LTEzMSAtMTE0LjV0LTEwMyAtMTQ4bC0xNSAxMXExODQgLTE1MCA0MTggLTE1MHExMzIgMCAyNTYgNTJ6TTgzOSA2NDNxLTIxIDQ5IC01MyAxMTFxLTMxMSAtOTMgLTY3MyAtOTNxLTEgLTcgLTEgLTIxcTAgLTEyNCA0NCAtMjM2LjV0MTI0IC0yMDEuNXE1MCA4OSAxMjMuNSAxNjYuNXQxNDIuNSAxMjQuNXQxMzAuNSA4MQp0OTkuNSA0OGwzNyAxM3E0IDEgMTMgMy41dDEzIDQuNXpNNzMyIDg1NXEtMTIwIDIxMyAtMjQ0IDM3OHEtMTM4IC02NSAtMjM0IC0xODZ0LTEyOCAtMjcycTMwMiAwIDYwNiA4MHpNMTQxNiA1MzZxLTIxMCA2MCAtNDA5IDI5cTg3IC0yMzkgMTI4IC00NjlxMTExIDc1IDE4NSAxODkuNXQ5NiAyNTAuNXpNNjExIDEyNzdxLTEgMCAtMiAtMXExIDEgMiAxek0xMjAxIDExMzJxLTE4NSAxNjQgLTQzMyAxNjRxLTc2IDAgLTE1NSAtMTkKcTEzMSAtMTcwIDI0NiAtMzgycTY5IDI2IDEzMCA2MC41dDk2LjUgNjEuNXQ2NS41IDU3dDM3LjUgNDAuNXpNMTQyNCA2NDdxLTMgMjMyIC0xNDkgNDEwbC0xIC0xcS05IC0xMiAtMTkgLTI0LjV0LTQzLjUgLTQ0LjV0LTcxIC02MC41dC0xMDAgLTY1dC0xMzEuNSAtNjQuNXEyNSAtNTMgNDQgLTk1cTIgLTUgNi41IC0xN3Q3LjUgLTE3cTM2IDUgNzQuNSA3dDczLjUgMnQ2OSAtMS41dDY0IC00dDU2LjUgLTUuNXQ0OCAtNi41dDM2LjUgLTYKdDI1IC00LjV6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJza3lwZSIgdW5pY29kZT0iJiN4ZjE3ZTsiIApkPSJNMTE3MyA0NzNxMCA1MCAtMTkuNSA5MS41dC00OC41IDY4LjV0LTczIDQ5dC04Mi41IDM0dC04Ny41IDIzbC0xMDQgMjRxLTMwIDcgLTQ0IDEwLjV0LTM1IDExLjV0LTMwIDE2dC0xNi41IDIxdC03LjUgMzBxMCA3NyAxNDQgNzdxNDMgMCA3NyAtMTJ0NTQgLTI4LjV0MzggLTMzLjV0NDAgLTI5dDQ4IC0xMnE0NyAwIDc1LjUgMzJ0MjguNSA3N3EwIDU1IC01NiA5OS41dC0xNDIgNjcuNXQtMTgyIDIzcS02OCAwIC0xMzIgLTE1LjUKdC0xMTkuNSAtNDd0LTg5IC04N3QtMzMuNSAtMTI4LjVxMCAtNjEgMTkgLTEwNi41dDU2IC03NS41dDgwIC00OC41dDEwMyAtMzIuNWwxNDYgLTM2cTkwIC0yMiAxMTIgLTM2cTMyIC0yMCAzMiAtNjBxMCAtMzkgLTQwIC02NC41dC0xMDUgLTI1LjVxLTUxIDAgLTkxLjUgMTZ0LTY1IDM4LjV0LTQ1LjUgNDV0LTQ2IDM4LjV0LTU0IDE2cS01MCAwIC03NS41IC0zMHQtMjUuNSAtNzVxMCAtOTIgMTIyIC0xNTcuNXQyOTEgLTY1LjUKcTczIDAgMTQwIDE4LjV0MTIyLjUgNTMuNXQ4OC41IDkzLjV0MzMgMTMxLjV6TTE1MzYgMjU2cTAgLTE1OSAtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjVxLTEzMCAwIC0yMzQgODBxLTc3IC0xNiAtMTUwIC0xNnEtMTQzIDAgLTI3My41IDU1LjV0LTIyNSAxNTB0LTE1MCAyMjV0LTU1LjUgMjczLjVxMCA3MyAxNiAxNTBxLTgwIDEwNCAtODAgMjM0cTAgMTU5IDExMi41IDI3MS41dDI3MS41IDExMi41cTEzMCAwIDIzNCAtODAKcTc3IDE2IDE1MCAxNnExNDMgMCAyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXEwIC03MyAtMTYgLTE1MHE4MCAtMTA0IDgwIC0yMzR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImZvdXJzcXVhcmUiIHVuaWNvZGU9IiYjeGYxODA7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMDAwIDExMDJsMzcgMTk0cTUgMjMgLTkgNDB0LTM1IDE3aC03MTJxLTIzIDAgLTM4LjUgLTE3dC0xNS41IC0zN3YtMTEwMXEwIC03IDYgLTFsMjkxIDM1MnEyMyAyNiAzOCAzMy41dDQ4IDcuNWgyMzlxMjIgMCAzNyAxNC41dDE4IDI5LjVxMjQgMTMwIDM3IDE5MXE0IDIxIC0xMS41IDQwdC0zNi41IDE5aC0yOTRxLTI5IDAgLTQ4IDE5dC0xOSA0OHY0MnEwIDI5IDE5IDQ3LjV0NDggMTguNWgzNDZxMTggMCAzNSAxMy41dDIwIDI5LjV6Ck0xMjI3IDEzMjRxLTE1IC03MyAtNTMuNSAtMjY2LjV0LTY5LjUgLTM1MHQtMzUgLTE3My41cS02IC0yMiAtOSAtMzIuNXQtMTQgLTMyLjV0LTI0LjUgLTMzdC0zOC41IC0yMXQtNTggLTEwaC0yNzFxLTEzIDAgLTIyIC0xMHEtOCAtOSAtNDI2IC00OTRxLTIyIC0yNSAtNTguNSAtMjguNXQtNDguNSA1LjVxLTU1IDIyIC01NSA5OHYxNDEwcTAgNTUgMzggMTAyLjV0MTIwIDQ3LjVoODg4cTk1IDAgMTI3IC01M3QxMCAtMTU5ek0xMjI3IDEzMjQKbC0xNTggLTc5MHE0IDE3IDM1IDE3My41dDY5LjUgMzUwdDUzLjUgMjY2LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InRyZWxsbyIgdW5pY29kZT0iJiN4ZjE4MTsiIApkPSJNNzA0IDE5MnYxMDI0cTAgMTQgLTkgMjN0LTIzIDloLTQ4MHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMDI0cTAgLTE0IDkgLTIzdDIzIC05aDQ4MHExNCAwIDIzIDl0OSAyM3pNMTM3NiA1NzZ2NjQwcTAgMTQgLTkgMjN0LTIzIDloLTQ4MHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NDBxMCAtMTQgOSAtMjN0MjMgLTloNDgwcTE0IDAgMjMgOXQ5IDIzek0xNTM2IDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4CnEtMjYgMCAtNDUgMTl0LTE5IDQ1djE0MDhxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmVtYWxlIiB1bmljb2RlPSImI3hmMTgyOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMTI4MCA0ODBxMCAtNDAgLTI4IC02OHQtNjggLTI4cS01MSAwIC04MCA0M2wtMjI3IDM0MWgtNDV2LTEzMmwyNDcgLTQxMXE5IC0xNSA5IC0zM3EwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE5MnYtMjcycTAgLTQ2IC0zMyAtNzl0LTc5IC0zM2gtMTYwcS00NiAwIC03OSAzM3QtMzMgNzl2MjcyaC0xOTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXEwIDE4IDkgMzNsMjQ3IDQxMXYxMzJoLTQ1bC0yMjcgLTM0MXEtMjkgLTQzIC04MCAtNDMKcS00MCAwIC02OCAyOHQtMjggNjhxMCAyOSAxNiA1M2wyNTYgMzg0cTczIDEwNyAxNzYgMTA3aDM4NHExMDMgMCAxNzYgLTEwN2wyNTYgLTM4NHExNiAtMjQgMTYgLTUzek04NjQgMTI4MHEwIC05MyAtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41dC0xNTguNSA2NS41dC02NS41IDE1OC41dDY1LjUgMTU4LjV0MTU4LjUgNjUuNXQxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWFsZSIgdW5pY29kZT0iJiN4ZjE4MzsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTEwMjQgODMydi00MTZxMCAtNDAgLTI4IC02OHQtNjggLTI4dC02OCAyOHQtMjggNjh2MzUyaC02NHYtOTEycTAgLTQ2IC0zMyAtNzl0LTc5IC0zM3QtNzkgMzN0LTMzIDc5djQ2NGgtNjR2LTQ2NHEwIC00NiAtMzMgLTc5dC03OSAtMzN0LTc5IDMzdC0zMyA3OXY5MTJoLTY0di0zNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4dC02OCAyOHQtMjggNjh2NDE2cTAgODAgNTYgMTM2dDEzNiA1Nmg2NDBxODAgMCAxMzYgLTU2dDU2IC0xMzZ6Ck03MzYgMTI4MHEwIC05MyAtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41dC0xNTguNSA2NS41dC02NS41IDE1OC41dDY1LjUgMTU4LjV0MTU4LjUgNjUuNXQxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2l0dGlwIiB1bmljb2RlPSImI3hmMTg0OyIgCmQ9Ik03NzMgMjM0bDM1MCA0NzNxMTYgMjIgMjQuNSA1OXQtNiA4NXQtNjEuNSA3OXEtNDAgMjYgLTgzIDI1LjV0LTczLjUgLTE3LjV0LTU0LjUgLTQ1cS0zNiAtNDAgLTk2IC00MHEtNTkgMCAtOTUgNDBxLTI0IDI4IC01NC41IDQ1dC03My41IDE3LjV0LTg0IC0yNS41cS00NiAtMzEgLTYwLjUgLTc5dC02IC04NXQyNC41IC01OXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwMwp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdW4iIHVuaWNvZGU9IiYjeGYxODU7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNDcyIDY0MHEwIDExNyAtNDUuNSAyMjMuNXQtMTIzIDE4NHQtMTg0IDEyM3QtMjIzLjUgNDUuNXQtMjIzLjUgLTQ1LjV0LTE4NCAtMTIzdC0xMjMgLTE4NHQtNDUuNSAtMjIzLjV0NDUuNSAtMjIzLjV0MTIzIC0xODR0MTg0IC0xMjN0MjIzLjUgLTQ1LjV0MjIzLjUgNDUuNXQxODQgMTIzdDEyMyAxODR0NDUuNSAyMjMuNXpNMTc0OCAzNjNxLTQgLTE1IC0yMCAtMjBsLTI5MiAtOTZ2LTMwNnEwIC0xNiAtMTMgLTI2cS0xNSAtMTAgLTI5IC00CmwtMjkyIDk0bC0xODAgLTI0OHEtMTAgLTEzIC0yNiAtMTN0LTI2IDEzbC0xODAgMjQ4bC0yOTIgLTk0cS0xNCAtNiAtMjkgNHEtMTMgMTAgLTEzIDI2djMwNmwtMjkyIDk2cS0xNiA1IC0yMCAyMHEtNSAxNyA0IDI5bDE4MCAyNDhsLTE4MCAyNDhxLTkgMTMgLTQgMjlxNCAxNSAyMCAyMGwyOTIgOTZ2MzA2cTAgMTYgMTMgMjZxMTUgMTAgMjkgNGwyOTIgLTk0bDE4MCAyNDhxOSAxMiAyNiAxMnQyNiAtMTJsMTgwIC0yNDhsMjkyIDk0CnExNCA2IDI5IC00cTEzIC0xMCAxMyAtMjZ2LTMwNmwyOTIgLTk2cTE2IC01IDIwIC0yMHE1IC0xNiAtNCAtMjlsLTE4MCAtMjQ4bDE4MCAtMjQ4cTkgLTEyIDQgLTI5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzY2IiB1bmljb2RlPSImI3hmMTg2OyIgCmQ9Ik0xMjYyIDIzM3EtNTQgLTkgLTExMCAtOXEtMTgyIDAgLTMzNyA5MHQtMjQ1IDI0NXQtOTAgMzM3cTAgMTkyIDEwNCAzNTdxLTIwMSAtNjAgLTMyOC41IC0yMjl0LTEyNy41IC0zODRxMCAtMTMwIDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxcTE0NCAwIDI3My41IDYxLjV0MjIwLjUgMTcxLjV6TTE0NjUgMzE4cS05NCAtMjAzIC0yODMuNSAtMzI0LjV0LTQxMy41IC0xMjEuNXEtMTU2IDAgLTI5OCA2MQp0LTI0NSAxNjR0LTE2NCAyNDV0LTYxIDI5OHEwIDE1MyA1Ny41IDI5Mi41dDE1NiAyNDEuNXQyMzUuNSAxNjQuNXQyOTAgNjguNXE0NCAyIDYxIC0zOXExOCAtNDEgLTE1IC03MnEtODYgLTc4IC0xMzEuNSAtMTgxLjV0LTQ1LjUgLTIxOC41cTAgLTE0OCA3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzNxMTE4IDAgMjI4IDUxcTQxIDE4IDcyIC0xM3ExNCAtMTQgMTcuNSAtMzR0LTQuNSAtMzh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImFyY2hpdmUiIHVuaWNvZGU9IiYjeGYxODc7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMDg4IDcwNHEwIDI2IC0xOSA0NXQtNDUgMTloLTI1NnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOWgyNTZxMjYgMCA0NSAxOXQxOSA0NXpNMTY2NCA4OTZ2LTk2MHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE0MDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY5NjBxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXpNMTcyOCAxMzQ0di0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNTM2CnEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE1MzZxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJidWciIHVuaWNvZGU9IiYjeGYxODg7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNjMyIDU3NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTIyNHEwIC0xNzEgLTY3IC0yOTBsMjA4IC0yMDlxMTkgLTE5IDE5IC00NXQtMTkgLTQ1cS0xOCAtMTkgLTQ1IC0xOXQtNDUgMTlsLTE5OCAxOTdxLTUgLTUgLTE1IC0xM3QtNDIgLTI4LjV0LTY1IC0zNi41dC04MiAtMjl0LTk3IC0xM3Y4OTZoLTEyOHYtODk2cS01MSAwIC0xMDEuNSAxMy41dC04NyAzM3QtNjYgMzl0LTQzLjUgMzIuNWwtMTUgMTRsLTE4MyAtMjA3CnEtMjAgLTIxIC00OCAtMjFxLTI0IDAgLTQzIDE2cS0xOSAxOCAtMjAuNSA0NC41dDE1LjUgNDYuNWwyMDIgMjI3cS01OCAxMTQgLTU4IDI3NGgtMjI0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMjI0djI5NGwtMTczIDE3M3EtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOWwxNzMgLTE3M2g4NDRsMTczIDE3M3ExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1dC0xOSAtNDVsLTE3MyAtMTczdi0yOTRoMjI0cTI2IDAgNDUgLTE5CnQxOSAtNDV6TTExNTIgMTE1MmgtNjQwcTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNXQyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idmsiIHVuaWNvZGU9IiYjeGYxODk7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik0xOTE3IDEwMTZxMjMgLTY0IC0xNTAgLTI5NHEtMjQgLTMyIC02NSAtODVxLTQwIC01MSAtNTUgLTcydC0zMC41IC00OS41dC0xMiAtNDJ0MTMgLTM0LjV0MzIuNSAtNDN0NTcgLTUzcTQgLTIgNSAtNHExNDEgLTEzMSAxOTEgLTIyMXEzIC01IDYuNSAtMTIuNXQ3IC0yNi41dC0wLjUgLTM0dC0yNSAtMjcuNXQtNTkgLTEyLjVsLTI1NiAtNHEtMjQgLTUgLTU2IDV0LTUyIDIybC0yMCAxMnEtMzAgMjEgLTcwIDY0dC02OC41IDc3LjV0LTYxIDU4CnQtNTYuNSAxNS41cS0zIC0xIC04IC0zLjV0LTE3IC0xNC41dC0yMS41IC0yOS41dC0xNyAtNTJ0LTYuNSAtNzcuNXEwIC0xNSAtMy41IC0yNy41dC03LjUgLTE4LjVsLTQgLTVxLTE4IC0xOSAtNTMgLTIyaC0xMTVxLTcxIC00IC0xNDYgMTYuNXQtMTMxLjUgNTN0LTEwMyA2NnQtNzAuNSA1Ny41bC0yNSAyNHEtMTAgMTAgLTI3LjUgMzB0LTcxLjUgOTF0LTEwNiAxNTF0LTEyMi41IDIxMXQtMTMwLjUgMjcycS02IDE2IC02IDI3dDMgMTZsNCA2CnExNSAxOSA1NyAxOWwyNzQgMnExMiAtMiAyMyAtNi41dDE2IC04LjVsNSAtM3ExNiAtMTEgMjQgLTMycTIwIC01MCA0NiAtMTAzLjV0NDEgLTgxLjVsMTYgLTI5cTI5IC02MCA1NiAtMTA0dDQ4LjUgLTY4LjV0NDEuNSAtMzguNXQzNCAtMTR0MjcgNXEyIDEgNSA1dDEyIDIydDEzLjUgNDd0OS41IDgxdDAgMTI1cS0yIDQwIC05IDczdC0xNCA0NmwtNiAxMnEtMjUgMzQgLTg1IDQzcS0xMyAyIDUgMjRxMTYgMTkgMzggMzBxNTMgMjYgMjM5IDI0CnE4MiAtMSAxMzUgLTEzcTIwIC01IDMzLjUgLTEzLjV0MjAuNSAtMjR0MTAuNSAtMzJ0My41IC00NS41dC0xIC01NXQtMi41IC03MC41dC0xLjUgLTgyLjVxMCAtMTEgLTEgLTQydC0wLjUgLTQ4dDMuNSAtNDAuNXQxMS41IC0zOXQyMi41IC0yNC41cTggLTIgMTcgLTR0MjYgMTF0MzggMzQuNXQ1MiA2N3Q2OCAxMDcuNXE2MCAxMDQgMTA3IDIyNXE0IDEwIDEwIDE3LjV0MTEgMTAuNWw0IDNsNSAyLjV0MTMgM3QyMCAwLjVsMjg4IDIKcTM5IDUgNjQgLTIuNXQzMSAtMTYuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0id2VpYm8iIHVuaWNvZGU9IiYjeGYxOGE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik02NzUgMjUycTIxIDM0IDExIDY5dC00NSA1MHEtMzQgMTQgLTczIDF0LTYwIC00NnEtMjIgLTM0IC0xMyAtNjguNXQ0MyAtNTAuNXQ3NC41IC0yLjV0NjIuNSA0Ny41ek03NjkgMzczcTggMTMgMy41IDI2LjV0LTE3LjUgMTguNXEtMTQgNSAtMjguNSAtMC41dC0yMS41IC0xOC41cS0xNyAtMzEgMTMgLTQ1cTE0IC01IDI5IDAuNXQyMiAxOC41ek05NDMgMjY2cS00NSAtMTAyIC0xNTggLTE1MHQtMjI0IC0xMgpxLTEwNyAzNCAtMTQ3LjUgMTI2LjV0Ni41IDE4Ny41cTQ3IDkzIDE1MS41IDEzOXQyMTAuNSAxOXExMTEgLTI5IDE1OC41IC0xMTkuNXQyLjUgLTE5MC41ek0xMjU1IDQyNnEtOSA5NiAtODkgMTcwdC0yMDguNSAxMDl0LTI3NC41IDIxcS0yMjMgLTIzIC0zNjkuNSAtMTQxLjV0LTEzMi41IC0yNjQuNXE5IC05NiA4OSAtMTcwdDIwOC41IC0xMDl0Mjc0LjUgLTIxcTIyMyAyMyAzNjkuNSAxNDEuNXQxMzIuNSAyNjQuNXpNMTU2MyA0MjIKcTAgLTY4IC0zNyAtMTM5LjV0LTEwOSAtMTM3dC0xNjguNSAtMTE3LjV0LTIyNiAtODN0LTI3MC41IC0zMXQtMjc1IDMzLjV0LTI0MC41IDkzdC0xNzEuNSAxNTF0LTY1IDE5OS41cTAgMTE1IDY5LjUgMjQ1dDE5Ny41IDI1OHExNjkgMTY5IDM0MS41IDIzNnQyNDYuNSAtN3E2NSAtNjQgMjAgLTIwOXEtNCAtMTQgLTEgLTIwdDEwIC03dDE0LjUgMC41dDEzLjUgMy41bDYgMnExMzkgNTkgMjQ2IDU5dDE1MyAtNjFxNDUgLTYzIDAgLTE3OApxLTIgLTEzIC00LjUgLTIwdDQuNSAtMTIuNXQxMiAtNy41dDE3IC02cTU3IC0xOCAxMDMgLTQ3dDgwIC04MS41dDM0IC0xMTYuNXpNMTQ4OSAxMDQ2cTQyIC00NyA1NC41IC0xMDguNXQtNi41IC0xMTcuNXEtOCAtMjMgLTI5LjUgLTM0dC00NC41IC00cS0yMyA4IC0zNCAyOS41dC00IDQ0LjVxMjAgNjMgLTI0IDExMXQtMTA3IDM1cS0yNCAtNSAtNDUgOHQtMjUgMzdxLTUgMjQgOCA0NC41dDM3IDI1LjVxNjAgMTMgMTE5IC01LjV0MTAxIC02NS41egpNMTY3MCAxMjA5cTg3IC05NiAxMTIuNSAtMjIyLjV0LTEzLjUgLTI0MS41cS05IC0yNyAtMzQgLTQwdC01MiAtNHQtNDAgMzR0LTUgNTJxMjggODIgMTAgMTcydC04MCAxNThxLTYyIDY5IC0xNDggOTUuNXQtMTczIDguNXEtMjggLTYgLTUyIDkuNXQtMzAgNDMuNXQ5LjUgNTEuNXQ0My41IDI5LjVxMTIzIDI2IDI0NCAtMTEuNXQyMDggLTEzNC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZW5yZW4iIHVuaWNvZGU9IiYjeGYxOGI7IiAKZD0iTTExMzMgLTM0cS0xNzEgLTk0IC0zNjggLTk0cS0xOTYgMCAtMzY3IDk0cTEzOCA4NyAyMzUuNSAyMTF0MTMxLjUgMjY4cTM1IC0xNDQgMTMyLjUgLTI2OHQyMzUuNSAtMjExek02MzggMTM5NHYtNDg1cTAgLTI1MiAtMTI2LjUgLTQ1OS41dC0zMzAuNSAtMzA2LjVxLTE4MSAyMTUgLTE4MSA0OTVxMCAxODcgODMuNSAzNDkuNXQyMjkuNSAyNjkuNXQzMjUgMTM3ek0xNTM2IDYzOHEwIC0yODAgLTE4MSAtNDk1CnEtMjA0IDk5IC0zMzAuNSAzMDYuNXQtMTI2LjUgNDU5LjV2NDg1cTE3OSAtMzAgMzI1IC0xMzd0MjI5LjUgLTI2OS41dDgzLjUgLTM0OS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzcyIiB1bmljb2RlPSImI3hmMThjOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNMTQwMiA0MzNxLTMyIC04MCAtNzYgLTEzOHQtOTEgLTg4LjV0LTk5IC00Ni41dC0xMDEuNSAtMTQuNXQtOTYuNSA4LjV0LTg2LjUgMjJ0LTY5LjUgMjcuNXQtNDYgMjIuNWwtMTcgMTBxLTExMyAtMjI4IC0yODkuNSAtMzU5LjV0LTM4NC41IC0xMzIuNXEtMTkgMCAtMzIgMTN0LTEzIDMydDEzIDMxLjV0MzIgMTIuNXExNzMgMSAzMjIuNSAxMDcuNXQyNTEuNSAyOTQuNXEtMzYgLTE0IC03MiAtMjN0LTgzIC0xM3QtOTEgMi41dC05MyAyOC41CnQtOTIgNTl0LTg0LjUgMTAwdC03NC41IDE0NnExMTQgNDcgMjE0IDU3dDE2Ny41IC03LjV0MTI0LjUgLTU2LjV0ODguNSAtNzd0NTYuNSAtODJxNTMgMTMxIDc5IDI5MXEtNyAtMSAtMTggLTIuNXQtNDYuNSAtMi41dC02OS41IDAuNXQtODEuNSAxMHQtODguNSAyM3QtODQgNDIuNXQtNzUgNjV0LTU0LjUgOTQuNXQtMjguNSAxMjcuNXE3MCAyOCAxMzMuNSAzNi41dDExMi41IC0xdDkyIC0zMHQ3My41IC01MHQ1NiAtNjF0NDIgLTYzdDI3LjUgLTU2CnQxNiAtMzkuNWw0IC0xNnExMiAxMjIgMTIgMTk1cS04IDYgLTIxLjUgMTZ0LTQ5IDQ0LjV0LTYzLjUgNzEuNXQtNTQgOTN0LTMzIDExMi41dDEyIDEyN3Q3MCAxMzguNXE3MyAtMjUgMTI3LjUgLTYxLjV0ODQuNSAtNzYuNXQ0OCAtODV0MjAuNSAtODl0LTAuNSAtODUuNXQtMTMgLTc2LjV0LTE5IC02MnQtMTcgLTQybC03IC0xNXExIC00IDEgLTUwdC0xIC03MnEzIDcgMTAgMTguNXQzMC41IDQzdDUwLjUgNTh0NzEgNTUuNXQ5MS41IDQ0LjUKdDExMiAxNC41dDEzMi41IC0yNHEtMiAtNzggLTIxLjUgLTE0MS41dC01MCAtMTA0LjV0LTY5LjUgLTcxLjV0LTgxLjUgLTQ1LjV0LTg0LjUgLTI0dC04MCAtOS41dC02Ny41IDF0LTQ2LjUgNC41bC0xNyAzcS0yMyAtMTQ3IC03MyAtMjgzcTYgNyAxOCAxOC41dDQ5LjUgNDF0NzcuNSA1Mi41dDk5LjUgNDJ0MTE3LjUgMjB0MTI5IC0yMy41dDEzNyAtNzcuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RhY2tfZXhjaGFuZ2UiIHVuaWNvZGU9IiYjeGYxOGQ7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMjU5IDI4M3YtNjZxMCAtODUgLTU3LjUgLTE0NC41dC0xMzguNSAtNTkuNWgtNTdsLTI2MCAtMjY5djI2OWgtNTI5cS04MSAwIC0xMzguNSA1OS41dC01Ny41IDE0NC41djY2aDEyMzh6TTEyNTkgNjA5di0yNTVoLTEyMzh2MjU1aDEyMzh6TTEyNTkgOTM3di0yNTVoLTEyMzh2MjU1aDEyMzh6TTEyNTkgMTA3N3YtNjdoLTEyMzh2NjdxMCA4NCA1Ny41IDE0My41dDEzOC41IDU5LjVoODQ2cTgxIDAgMTM4LjUgLTU5LjV0NTcuNSAtMTQzLjV6CiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzc0IiB1bmljb2RlPSImI3hmMThlOyIgCmQ9Ik0xMTUyIDY0MHEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MmgtMzUycS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzUydjE5MnEwIDE0IDkgMjN0MjMgOXExMiAwIDI0IC0xMGwzMTkgLTMxOXE5IC05IDkgLTIzek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4CnQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3dfY2lyY2xlX2FsdF9sZWZ0IiB1bmljb2RlPSImI3hmMTkwOyIgCmQ9Ik0xMTUyIDczNnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMzUydi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOXEtMTIgMCAtMjQgMTBsLTMxOSAzMTlxLTkgOSAtOSAyM3Q5IDIzbDMyMCAzMjBxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJoMzUycTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTMxMiA2NDBxMCAxNDggLTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OAp0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zNzYiIHVuaWNvZGU9IiYjeGYxOTE7IiAKZD0iTTEwMjQgOTYwdi02NDBxMCAtMjYgLTE5IC00NXQtNDUgLTE5cS0yMCAwIC0zNyAxMmwtNDQ4IDMyMHEtMjcgMTkgLTI3IDUydDI3IDUybDQ0OCAzMjBxMTcgMTIgMzcgMTJxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xMjgwIDE2MHY5NjBxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC05NjBxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di05NjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg5NjBxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXoKTTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3RfY2lyY2xlX2FsdCIgdW5pY29kZT0iJiN4ZjE5MjsiIApkPSJNMTAyNCA2NDBxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1dDE4MSAtNzV0NzUgLTE4MXpNNzY4IDExODRxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczdC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjUKdC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzc4IiB1bmljb2RlPSImI3hmMTkzOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTAyMyAzNDlsMTAyIC0yMDRxLTU4IC0xNzkgLTIxMCAtMjkwdC0zMzkgLTExMXEtMTU2IDAgLTI4OC41IDc3LjV0LTIxMCAyMTB0LTc3LjUgMjg4LjVxMCAxODEgMTA0LjUgMzMwdDI3NC41IDIxMWwxNyAtMTMxcS0xMjIgLTU0IC0xOTUgLTE2NS41dC03MyAtMjQ0LjVxMCAtMTg1IDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjVxMTI2IDAgMjMyLjUgNjV0MTY1IDE3NS41dDQ5LjUgMjM2LjV6TTE1NzEgMjQ5bDU4IC0xMTRsLTI1NiAtMTI4CnEtMTMgLTcgLTI5IC03cS00MCAwIC01NyAzNWwtMjM5IDQ3N2gtNDcycS0yNCAwIC00Mi41IDE2LjV0LTIxLjUgNDAuNWwtOTYgNzc5cS0yIDE3IDYgNDJxMTQgNTEgNTcgODIuNXQ5NyAzMS41cTY2IDAgMTEzIC00N3Q0NyAtMTEzcTAgLTY5IC01MiAtMTE3LjV0LTEyMCAtNDEuNWwzNyAtMjg5aDQyM3YtMTI4aC00MDdsMTYgLTEyOGg0NTVxNDAgMCA1NyAtMzVsMjI4IC00NTV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InZpbWVvX3NxdWFyZSIgdW5pY29kZT0iJiN4ZjE5NDsiIApkPSJNMTI5MiA4OThxMTAgMjE2IC0xNjEgMjIycS0yMzEgOCAtMzEyIC0yNjFxNDQgMTkgODIgMTlxODUgMCA3NCAtOTZxLTQgLTU3IC03NCAtMTY3dC0xMDUgLTExMHEtNDMgMCAtODIgMTY5cS0xMyA1NCAtNDUgMjU1cS0zMCAxODkgLTE2MCAxNzdxLTU5IC03IC0xNjQgLTEwMGwtODEgLTcybC04MSAtNzJsNTIgLTY3cTc2IDUyIDg3IDUycTU3IDAgMTA3IC0xNzlxMTUgLTU1IDQ1IC0xNjQuNXQ0NSAtMTY0LjVxNjggLTE3OSAxNjQgLTE3OQpxMTU3IDAgMzgzIDI5NHEyMjAgMjgzIDIyNiA0NDR6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzgwIiB1bmljb2RlPSImI3hmMTk1OyIgaG9yaXotYWR2LXg9IjExNTIiIApkPSJNMTE1MiA3MDRxMCAtMTkxIC05NC41IC0zNTN0LTI1Ni41IC0yNTYuNXQtMzUzIC05NC41aC0xNjBxLTE0IDAgLTIzIDl0LTkgMjN2NjExbC0yMTUgLTY2cS0zIC0xIC05IC0xcS0xMCAwIC0xOSA2cS0xMyAxMCAtMTMgMjZ2MTI4cTAgMjMgMjMgMzFsMjMzIDcxdjkzbC0yMTUgLTY2cS0zIC0xIC05IC0xcS0xMCAwIC0xOSA2cS0xMyAxMCAtMTMgMjZ2MTI4cTAgMjMgMjMgMzFsMjMzIDcxdjI1MHEwIDE0IDkgMjN0MjMgOWgxNjAKcTE0IDAgMjMgLTl0OSAtMjN2LTE4MWwzNzUgMTE2cTE1IDUgMjggLTV0MTMgLTI2di0xMjhxMCAtMjMgLTIzIC0zMWwtMzkzIC0xMjF2LTkzbDM3NSAxMTZxMTUgNSAyOCAtNXQxMyAtMjZ2LTEyOHEwIC0yMyAtMjMgLTMxbC0zOTMgLTEyMXYtNDg3cTE4OCAxMyAzMTggMTUxdDEzMCAzMjhxMCAxNCA5IDIzdDIzIDloMTYwcTE0IDAgMjMgLTl0OSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InBsdXNfc3F1YXJlX28iIHVuaWNvZGU9IiYjeGYxOTY7IiBob3Jpei1hZHYteD0iMTQwOCIgCmQ9Ik0xMTUyIDczNnYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzUydi0zNTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MzUyaC0zNTJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMzUydjM1MnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi0zNTJoMzUycTE0IDAgMjMgLTl0OSAtMjN6TTEyODAgMjg4djgzMnEwIDY2IC00NyAxMTN0LTExMyA0N2gtODMyCnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzek0xNDA4IDExMjB2LTgzMnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtODMycS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY4MzJxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDgzMnExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4MiIgdW5pY29kZT0iJiN4ZjE5NzsiIGhvcml6LWFkdi14PSIyMTc2IiAKZD0iTTYyMCA0MTZxLTExMCAtNjQgLTI2OCAtNjRoLTEyOHY2NGgtNjRxLTEzIDAgLTIyLjUgMjMuNXQtOS41IDU2LjVxMCAyNCA3IDQ5cS01OCAyIC05Ni41IDEwLjV0LTM4LjUgMjAuNXQzOC41IDIwLjV0OTYuNSAxMC41cS03IDI1IC03IDQ5cTAgMzMgOS41IDU2LjV0MjIuNSAyMy41aDY0djY0aDEyOHExNTggMCAyNjggLTY0aDExMTNxNDIgLTcgMTA2LjUgLTE4dDgwLjUgLTE0cTg5IC0xNSAxNTAgLTQwLjV0ODMuNSAtNDcuNXQyMi41IC00MAp0LTIyLjUgLTQwdC04My41IC00Ny41dC0xNTAgLTQwLjVxLTE2IC0zIC04MC41IC0xNHQtMTA2LjUgLTE4aC0xMTEzek0xNzM5IDY2OHE1MyAtMzYgNTMgLTkydC01MyAtOTJsODEgLTMwcTY4IDQ4IDY4IDEyMnQtNjggMTIyek02MjUgNDAwaDEwMTVxLTIxNyAtMzggLTQ1NiAtODBxLTU3IDAgLTExMyAtMjR0LTgzIC00OGwtMjggLTI0bC0yODggLTI4OHEtMjYgLTI2IC03MC41IC00NXQtODkuNSAtMTloLTk2bC05MyA0NjRoMjkKcTE1NyAwIDI3MyA2NHpNMzUyIDgxNmgtMjlsOTMgNDY0aDk2cTQ2IDAgOTAgLTE5dDcwIC00NWwyODggLTI4OHE0IC00IDExIC0xMC41dDMwLjUgLTIzdDQ4LjUgLTI5dDYxLjUgLTIzdDcyLjUgLTEwLjVsNDU2IC04MGgtMTAxNXEtMTE2IDY0IC0yNzMgNjR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zODMiIHVuaWNvZGU9IiYjeGYxOTg7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xNTE5IDc2MHE2MiAwIDEwMy41IC00MC41dDQxLjUgLTEwMS41cTAgLTk3IC05MyAtMTMwbC0xNzIgLTU5bDU2IC0xNjdxNyAtMjEgNyAtNDdxMCAtNTkgLTQyIC0xMDJ0LTEwMSAtNDNxLTQ3IDAgLTg1LjUgMjd0LTUzLjUgNzJsLTU1IDE2NWwtMzEwIC0xMDZsNTUgLTE2NHE4IC0yNCA4IC00N3EwIC01OSAtNDIgLTEwMnQtMTAyIC00M3EtNDcgMCAtODUgMjd0LTUzIDcybC01NSAxNjNsLTE1MyAtNTNxLTI5IC05IC01MCAtOQpxLTYxIDAgLTEwMS41IDQwdC00MC41IDEwMXEwIDQ3IDI3LjUgODV0NzEuNSA1M2wxNTYgNTNsLTEwNSAzMTNsLTE1NiAtNTRxLTI2IC04IC00OCAtOHEtNjAgMCAtMTAxIDQwLjV0LTQxIDEwMC41cTAgNDcgMjcuNSA4NXQ3MS41IDUzbDE1NyA1M2wtNTMgMTU5cS04IDI0IC04IDQ3cTAgNjAgNDIgMTAyLjV0MTAyIDQyLjVxNDcgMCA4NSAtMjd0NTMgLTcybDU0IC0xNjBsMzEwIDEwNWwtNTQgMTYwcS04IDI0IC04IDQ3cTAgNTkgNDIuNSAxMDIKdDEwMS41IDQzcTQ3IDAgODUuNSAtMjcuNXQ1My41IC03MS41bDUzIC0xNjFsMTYyIDU1cTIxIDYgNDMgNnE2MCAwIDEwMi41IC0zOS41dDQyLjUgLTk4LjVxMCAtNDUgLTMwIC04MS41dC03NCAtNTEuNWwtMTU3IC01NGwxMDUgLTMxNmwxNjQgNTZxMjQgOCA0NiA4ek03MjUgNDk4bDMxMCAxMDVsLTEwNSAzMTVsLTMxMCAtMTA3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzg0IiB1bmljb2RlPSImI3hmMTk5OyIgCmQ9Ik0xMjQ4IDE0MDhxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHpNMTI4MCAzNTJ2NDM2cS0zMSAtMzUgLTY0IC01NXEtMzQgLTIyIC0xMzIuNSAtODV0LTE1MS41IC05OXEtOTggLTY5IC0xNjQgLTY5djB2MHEtNjYgMCAtMTY0IDY5CnEtNDcgMzIgLTE0MiA5Mi41dC0xNDIgOTIuNXEtMTIgOCAtMzMgMjd0LTMxIDI3di00MzZxMCAtNDAgMjggLTY4dDY4IC0yOGg4MzJxNDAgMCA2OCAyOHQyOCA2OHpNMTI4MCA5MjVxMCA0MSAtMjcuNSA3MHQtNjguNSAyOWgtODMycS00MCAwIC02OCAtMjh0LTI4IC02OHEwIC0zNyAzMC41IC03Ni41dDY3LjUgLTY0LjVxNDcgLTMyIDEzNy41IC04OXQxMjkuNSAtODNxMyAtMiAxNyAtMTEuNXQyMSAtMTR0MjEgLTEzdDIzLjUgLTEzCnQyMS41IC05LjV0MjIuNSAtNy41dDIwLjUgLTIuNXQyMC41IDIuNXQyMi41IDcuNXQyMS41IDkuNXQyMy41IDEzdDIxIDEzdDIxIDE0dDE3IDExLjVsMjY3IDE3NHEzNSAyMyA2Ni41IDYyLjV0MzEuNSA3My41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzg1IiB1bmljb2RlPSImI3hmMTlhOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTI3IDY0MHEwIDE2MyA2NyAzMTNsMzY3IC0xMDA1cS0xOTYgOTUgLTMxNSAyODF0LTExOSA0MTF6TTE0MTUgNjc5cTAgLTE5IC0yLjUgLTM4LjV0LTEwIC00OS41dC0xMS41IC00NHQtMTcuNSAtNTl0LTE3LjUgLTU4bC03NiAtMjU2bC0yNzggODI2cTQ2IDMgODggOHExOSAyIDI2IDE4LjV0LTIuNSAzMXQtMjguNSAxMy41bC0yMDUgLTEwcS03NSAxIC0yMDIgMTBxLTEyIDEgLTIwLjUgLTV0LTExLjUgLTE1dC0xLjUgLTE4LjV0OSAtMTYuNQp0MTkuNSAtOGw4MCAtOGwxMjAgLTMyOGwtMTY4IC01MDRsLTI4MCA4MzJxNDYgMyA4OCA4cTE5IDIgMjYgMTguNXQtMi41IDMxdC0yOC41IDEzLjVsLTIwNSAtMTBxLTcgMCAtMjMgMC41dC0yNiAwLjVxMTA1IDE2MCAyNzQuNSAyNTMuNXQzNjcuNSA5My41cTE0NyAwIDI4MC41IC01M3QyMzguNSAtMTQ5aC0xMHEtNTUgMCAtOTIgLTQwLjV0LTM3IC05NS41cTAgLTEyIDIgLTI0dDQgLTIxLjV0OCAtMjN0OSAtMjF0MTIgLTIyLjV0MTIuNSAtMjEKdDE0LjUgLTI0dDE0IC0yM3E2MyAtMTA3IDYzIC0yMTJ6TTkwOSA1NzNsMjM3IC02NDdxMSAtNiA1IC0xMXEtMTI2IC00NCAtMjU1IC00NHEtMTEyIDAgLTIxNyAzMnpNMTU3MCAxMDA5cTk1IC0xNzQgOTUgLTM2OXEwIC0yMDkgLTEwNCAtMzg1LjV0LTI3OSAtMjc4LjVsMjM1IDY3OHE1OSAxNjkgNTkgMjc2cTAgNDIgLTYgNzl6TTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODYKdC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTg5NiAtMjE1cTE3MyAwIDMzMS41IDY4dDI3MyAxODIuNXQxODIuNSAyNzN0NjggMzMxLjV0LTY4IDMzMS41dC0xODIuNSAyNzN0LTI3MyAxODIuNXQtMzMxLjUgNjh0LTMzMS41IC02OHQtMjczIC0xODIuNXQtMTgyLjUgLTI3M3QtNjggLTMzMS41dDY4IC0zMzEuNXQxODIuNSAtMjczCnQyNzMgLTE4Mi41dDMzMS41IC02OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4NiIgdW5pY29kZT0iJiN4ZjE5YjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTEwODYgMTUzNnYtMTUzNmwtMjcyIC0xMjhxLTIyOCAyMCAtNDE0IDEwMnQtMjkzIDIwOC41dC0xMDcgMjcyLjVxMCAxNDAgMTAwLjUgMjYzLjV0Mjc1IDIwNS41dDM5MS41IDEwOHYtMTcycS0yMTcgLTM4IC0zNTYuNSAtMTUwdC0xMzkuNSAtMjU1cTAgLTE1MiAxNTQuNSAtMjY3dDM4OC41IC0xNDV2MTM2MHpNMTc1NSA5NTRsMzcgLTM5MGwtNTI1IDExNGwxNDcgODNxLTExOSA3MCAtMjgwIDk5djE3MnEyNzcgLTMzIDQ4MSAtMTU3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzg3IiB1bmljb2RlPSImI3hmMTljOyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNOTYwIDE1MzZsOTYwIC0zODR2LTEyOGgtMTI4cTAgLTI2IC0yMC41IC00NXQtNDguNSAtMTloLTE1MjZxLTI4IDAgLTQ4LjUgMTl0LTIwLjUgNDVoLTEyOHYxMjh6TTI1NiA4OTZoMjU2di03NjhoMTI4djc2OGgyNTZ2LTc2OGgxMjh2NzY4aDI1NnYtNzY4aDEyOHY3NjhoMjU2di03NjhoNTlxMjggMCA0OC41IC0xOXQyMC41IC00NXYtNjRoLTE2NjR2NjRxMCAyNiAyMC41IDQ1dDQ4LjUgMTloNTl2NzY4ek0xODUxIC02NApxMjggMCA0OC41IC0xOXQyMC41IC00NXYtMTI4aC0xOTIwdjEyOHEwIDI2IDIwLjUgNDV0NDguNSAxOWgxNzgyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzg4IiB1bmljb2RlPSImI3hmMTlkOyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMTc3NCA3MDBsMTggLTMxNnE0IC02OSAtODIgLTEyOHQtMjM1IC05My41dC0zMjMgLTM0LjV0LTMyMyAzNC41dC0yMzUgOTMuNXQtODIgMTI4bDE4IDMxNmw1NzQgLTE4MXEyMiAtNyA0OCAtN3Q0OCA3ek0yMzA0IDEwMjRxMCAtMjMgLTIyIC0zMWwtMTEyMCAtMzUycS00IC0xIC0xMCAtMXQtMTAgMWwtNjUyIDIwNnEtNDMgLTM0IC03MSAtMTExLjV0LTM0IC0xNzguNXE2MyAtMzYgNjMgLTEwOXEwIC02OSAtNTggLTEwN2w1OCAtNDMzCnEyIC0xNCAtOCAtMjVxLTkgLTExIC0yNCAtMTFoLTE5MnEtMTUgMCAtMjQgMTFxLTEwIDExIC04IDI1bDU4IDQzM3EtNTggMzggLTU4IDEwN3EwIDczIDY1IDExMXExMSAyMDcgOTggMzMwbC0zMzMgMTA0cS0yMiA4IC0yMiAzMXQyMiAzMWwxMTIwIDM1MnE0IDEgMTAgMXQxMCAtMWwxMTIwIC0zNTJxMjIgLTggMjIgLTMxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzg5IiB1bmljb2RlPSImI3hmMTllOyIgCmQ9Ik04NTkgNTc5bDEzIC03MDdxLTYyIDExIC0xMDUgMTFxLTQxIDAgLTEwNSAtMTFsMTMgNzA3cS00MCA2OSAtMTY4LjUgMjk1LjV0LTIxNi41IDM3NC41dC0xODEgMjg3cTU4IC0xNSAxMDggLTE1cTQ0IDAgMTExIDE1cTYzIC0xMTEgMTMzLjUgLTIyOS41dDE2NyAtMjc2LjV0MTM4LjUgLTIyN3EzNyA2MSAxMDkuNSAxNzcuNXQxMTcuNSAxOTB0MTA1IDE3NnQxMDcgMTg5LjVxNTQgLTE0IDEwNyAtMTRxNTYgMCAxMTQgMTR2MApxLTI4IC0zOSAtNjAgLTg4LjV0LTQ5LjUgLTc4LjV0LTU2LjUgLTk2dC00OSAtODRxLTE0NiAtMjQ4IC0zNTMgLTYxMHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFBMCIgdW5pY29kZT0iJiN4ZjFhMDsiIApkPSJNNzY4IDc1MGg3MjVxMTIgLTY3IDEyIC0xMjhxMCAtMjE3IC05MSAtMzg3LjV0LTI1OS41IC0yNjYuNXQtMzg2LjUgLTk2cS0xNTcgMCAtMjk5IDYwLjV0LTI0NSAxNjMuNXQtMTYzLjUgMjQ1dC02MC41IDI5OXQ2MC41IDI5OXQxNjMuNSAyNDV0MjQ1IDE2My41dDI5OSA2MC41cTMwMCAwIDUxNSAtMjAxbC0yMDkgLTIwMXEtMTIzIDExOSAtMzA2IDExOXEtMTI5IDAgLTIzOC41IC02NXQtMTczLjUgLTE3Ni41dC02NCAtMjQzLjUKdDY0IC0yNDMuNXQxNzMuNSAtMTc2LjV0MjM4LjUgLTY1cTg3IDAgMTYwIDI0dDEyMCA2MHQ4MiA4MnQ1MS41IDg3dDIyLjUgNzhoLTQzNnYyNjR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxYTEiIHVuaWNvZGU9IiYjeGYxYTE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMDk1IDM2OXExNiAtMTYgMCAtMzFxLTYyIC02MiAtMTk5IC02MnQtMTk5IDYycS0xNiAxNSAwIDMxcTYgNiAxNSA2dDE1IC02cTQ4IC00OSAxNjkgLTQ5cTEyMCAwIDE2OSA0OXE2IDYgMTUgNnQxNSAtNnpNNzg4IDU1MHEwIC0zNyAtMjYgLTYzdC02MyAtMjZ0LTYzLjUgMjZ0LTI2LjUgNjNxMCAzOCAyNi41IDY0dDYzLjUgMjZ0NjMgLTI2LjV0MjYgLTYzLjV6TTExODMgNTUwcTAgLTM3IC0yNi41IC02M3QtNjMuNSAtMjZ0LTYzIDI2CnQtMjYgNjN0MjYgNjMuNXQ2MyAyNi41dDYzLjUgLTI2dDI2LjUgLTY0ek0xNDM0IDY3MHEwIDQ5IC0zNSA4NHQtODUgMzV0LTg2IC0zNnEtMTMwIDkwIC0zMTEgOTZsNjMgMjgzbDIwMCAtNDVxMCAtMzcgMjYgLTYzdDYzIC0yNnQ2My41IDI2LjV0MjYuNSA2My41dC0yNi41IDYzLjV0LTYzLjUgMjYuNXEtNTQgMCAtODAgLTUwbC0yMjEgNDlxLTE5IDUgLTI1IC0xNmwtNjkgLTMxMnEtMTgwIC03IC0zMDkgLTk3cS0zNSAzNyAtODcgMzcKcS01MCAwIC04NSAtMzV0LTM1IC04NHEwIC0zNSAxOC41IC02NHQ0OS41IC00NHEtNiAtMjcgLTYgLTU2cTAgLTE0MiAxNDAgLTI0M3QzMzcgLTEwMXExOTggMCAzMzggMTAxdDE0MCAyNDNxMCAzMiAtNyA1N3EzMCAxNSA0OCA0My41dDE4IDYzLjV6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxCnQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzkyIiB1bmljb2RlPSImI3hmMWEyOyIgCmQ9Ik05MzkgNDA3cTEzIC0xMyAwIC0yNnEtNTMgLTUzIC0xNzEgLTUzdC0xNzEgNTNxLTEzIDEzIDAgMjZxNSA2IDEzIDZ0MTMgLTZxNDIgLTQyIDE0NSAtNDJ0MTQ1IDQycTUgNiAxMyA2dDEzIC02ek02NzYgNTYzcTAgLTMxIC0yMyAtNTR0LTU0IC0yM3QtNTQgMjN0LTIzIDU0cTAgMzIgMjIuNSA1NC41dDU0LjUgMjIuNXQ1NC41IC0yMi41dDIyLjUgLTU0LjV6TTEwMTQgNTYzcTAgLTMxIC0yMyAtNTR0LTU0IC0yM3QtNTQgMjN0LTIzIDU0CnEwIDMyIDIyLjUgNTQuNXQ1NC41IDIyLjV0NTQuNSAtMjIuNXQyMi41IC01NC41ek0xMjI5IDY2NnEwIDQyIC0zMCA3MnQtNzMgMzBxLTQyIDAgLTczIC0zMXEtMTEzIDc4IC0yNjcgODJsNTQgMjQzbDE3MSAtMzlxMSAtMzIgMjMuNSAtNTR0NTMuNSAtMjJxMzIgMCA1NC41IDIyLjV0MjIuNSA1NC41dC0yMi41IDU0LjV0LTU0LjUgMjIuNXEtNDggMCAtNjkgLTQzbC0xODkgNDJxLTE3IDUgLTIxIC0xM2wtNjAgLTI2OHEtMTU0IC02IC0yNjUgLTgzCnEtMzAgMzIgLTc0IDMycS00MyAwIC03MyAtMzB0LTMwIC03MnEwIC0zMCAxNiAtNTV0NDIgLTM4cS01IC0yNSAtNSAtNDhxMCAtMTIyIDEyMCAtMjA4LjV0Mjg5IC04Ni41cTE3MCAwIDI5MCA4Ni41dDEyMCAyMDguNXEwIDI1IC02IDQ5cTI1IDEzIDQwLjUgMzcuNXQxNS41IDU0LjV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MApxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM5MyIgdW5pY29kZT0iJiN4ZjFhMzsiIApkPSJNODY2IDY5N2w5MCAyN3Y2MnEwIDc5IC01OCAxMzV0LTEzOCA1NnQtMTM4IC01NS41dC01OCAtMTM0LjV2LTI4M3EwIC0yMCAtMTQgLTMzLjV0LTMzIC0xMy41dC0zMi41IDEzLjV0LTEzLjUgMzMuNXYxMjBoLTE1MXYtMTIycTAgLTgyIDU3LjUgLTEzOXQxMzkuNSAtNTdxODEgMCAxMzguNSA1Ni41dDU3LjUgMTM2LjV2MjgwcTAgMTkgMTMuNSAzM3QzMy41IDE0cTE5IDAgMzIuNSAtMTR0MTMuNSAtMzN2LTU0ek0xMTk5IDUwMnYxMjJoLTE1MAp2LTEyNnEwIC0yMCAtMTMuNSAtMzMuNXQtMzMuNSAtMTMuNXEtMTkgMCAtMzIuNSAxNHQtMTMuNSAzM3YxMjNsLTkwIC0yNmwtNjAgMjh2LTEyM3EwIC04MCA1OCAtMTM3dDEzOSAtNTd0MTM4LjUgNTd0NTcuNSAxMzl6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwMwp0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjFhNCIgdW5pY29kZT0iJiN4ZjFhNDsiIGhvcml6LWFkdi14PSIxOTIwIiAKZD0iTTEwNjIgODI0djExOHEwIDQyIC0zMCA3MnQtNzIgMzB0LTcyIC0zMHQtMzAgLTcydi02MTJxMCAtMTc1IC0xMjYgLTI5OXQtMzAzIC0xMjRxLTE3OCAwIC0zMDMuNSAxMjUuNXQtMTI1LjUgMzAzLjV2MjY2aDMyOHYtMjYycTAgLTQzIDMwIC03Mi41dDcyIC0yOS41dDcyIDI5LjV0MzAgNzIuNXY2MjBxMCAxNzEgMTI2LjUgMjkydDMwMS41IDEyMXExNzYgMCAzMDIgLTEyMnQxMjYgLTI5NHYtMTM2bC0xOTUgLTU4ek0xNTkyIDYwMmgzMjgKdi0yNjZxMCAtMTc4IC0xMjUuNSAtMzAzLjV0LTMwMy41IC0xMjUuNXEtMTc3IDAgLTMwMyAxMjQuNXQtMTI2IDMwMC41djI2OGwxMzEgLTYxbDE5NSA1OHYtMjcwcTAgLTQyIDMwIC03MS41dDcyIC0yOS41dDcyIDI5LjV0MzAgNzEuNXYyNzV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zOTUiIHVuaWNvZGU9IiYjeGYxYTU7IiAKZD0iTTE0NzIgMTYwdjQ4MGgtNzA0djcwNGgtNDgwcS05MyAwIC0xNTguNSAtNjUuNXQtNjUuNSAtMTU4LjV2LTQ4MGg3MDR2LTcwNGg0ODBxOTMgMCAxNTguNSA2NS41dDY1LjUgMTU4LjV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41CnQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM5NiIgdW5pY29kZT0iJiN4ZjFhNjsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTMyOCAxMjU0aDIwNHYtOTgzaC01MzJ2Njk3aDMyOHYyODZ6TTMyOCA0MzV2MzY5aC0xMjN2LTM2OWgxMjN6TTYxNCA5Njh2LTY5N2gyMDV2Njk3aC0yMDV6TTYxNCAxMjU0di0yMDRoMjA1djIwNGgtMjA1ek05MDEgOTY4aDUzM3YtOTQyaC01MzN2MTYzaDMyOHY4MmgtMzI4djY5N3pNMTIyOSA0MzV2MzY5aC0xMjN2LTM2OWgxMjN6TTE1MTYgOTY4aDUzMnYtOTQyaC01MzJ2MTYzaDMyN3Y4MmgtMzI3djY5N3pNMTg0MyA0MzV2MzY5aC0xMjMKdi0zNjloMTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzk3IiB1bmljb2RlPSImI3hmMWE3OyIgCmQ9Ik0xMDQ2IDUxNnEwIC02NCAtMzggLTEwOXQtOTEgLTQ1cS00MyAwIC03MCAxNXYyNzdxMjggMTcgNzAgMTdxNTMgMCA5MSAtNDUuNXQzOCAtMTA5LjV6TTcwMyA5NDRxMCAtNjQgLTM4IC0xMDkuNXQtOTEgLTQ1LjVxLTQzIDAgLTcwIDE1djI3N3EyOCAxNyA3MCAxN3E1MyAwIDkxIC00NXQzOCAtMTA5ek0xMjY1IDUxM3EwIDEzNCAtODggMjI5dC0yMTMgOTVxLTIwIDAgLTM5IC0zcS0yMyAtNzggLTc4IC0xMzZxLTg3IC05NSAtMjExIC0xMDEKdi02MzZsMjExIDQxdjIwNnE1MSAtMTkgMTE3IC0xOXExMjUgMCAyMTMgOTV0ODggMjI5ek05MjIgOTQwcTAgMTM0IC04OC41IDIyOXQtMjEzLjUgOTVxLTc0IDAgLTE0MSAtMzZoLTE4NnYtODQwbDIxMSA0MXYyMDZxNTUgLTE5IDExNiAtMTlxMTI1IDAgMjEzLjUgOTV0ODguNSAyMjl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MApxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM5OCIgdW5pY29kZT0iJiN4ZjFhODsiIGhvcml6LWFkdi14PSIyMDM4IiAKZD0iTTEyMjIgNjA3cTc1IDMgMTQzLjUgLTIwLjV0MTE4IC01OC41dDEwMSAtOTQuNXQ4NCAtMTA4dDc1LjUgLTEyMC41cTMzIC01NiA3OC41IC0xMDl0NzUuNSAtODAuNXQ5OSAtODguNXEtNDggLTMwIC0xMDguNSAtNTcuNXQtMTM4LjUgLTU5dC0xMTQgLTQ3LjVxLTQ0IDM3IC03NCAxMTV0LTQzLjUgMTY0LjV0LTMzIDE4MC41dC00Mi41IDE2OC41dC03Mi41IDEyM3QtMTIyLjUgNDguNWwtMTAgLTJsLTYgLTRxNCAtNSAxMyAtMTQKcTYgLTUgMjggLTIzLjV0MjUuNSAtMjJ0MTkgLTE4dDE4IC0yMC41dDExLjUgLTIxdDEwLjUgLTI3LjV0NC41IC0zMXQ0IC00MC41bDEgLTMzcTEgLTI2IC0yLjUgLTU3LjV0LTcuNSAtNTJ0LTEyLjUgLTU4LjV0LTExLjUgLTUzcS0zNSAxIC0xMDEgLTkuNXQtOTggLTEwLjVxLTM5IDAgLTcyIDEwcS0yIDE2IC0yIDQ3cTAgNzQgMyA5NnEyIDEzIDMxLjUgNDEuNXQ1NyA1OXQyNi41IDUxLjVxLTI0IDIgLTQzIC0yNApxLTM2IC01MyAtMTExLjUgLTk5LjV0LTEzNi41IC00Ni41cS0yNSAwIC03NS41IDYzdC0xMDYuNSAxMzkuNXQtODQgOTYuNXEtNiA0IC0yNyAzMHEtNDgyIC0xMTIgLTUxMyAtMTEycS0xNiAwIC0yOCAxMXQtMTIgMjdxMCAxNSA4LjUgMjYuNXQyMi41IDE0LjVsNDg2IDEwNnEtOCAxNCAtOCAyNXQ1LjUgMTcuNXQxNiAxMS41dDIwIDd0MjMgNC41dDE4LjUgNC41cTQgMSAxNS41IDcuNXQxNy41IDYuNXExNSAwIDI4IC0xNnQyMCAtMzMKcTE2MyAzNyAxNzIgMzdxMTcgMCAyOS41IC0xMXQxMi41IC0yOHEwIC0xNSAtOC41IC0yNnQtMjMuNSAtMTRsLTE4MiAtNDBsLTEgLTE2cS0xIC0yNiA4MS41IC0xMTcuNXQxMDQuNSAtOTEuNXE0NyAwIDExOSA4MHQ3MiAxMjlxMCAzNiAtMjMuNSA1M3QtNTEgMTguNXQtNTEgMTEuNXQtMjMuNSAzNHEwIDE2IDEwIDM0bC02OCAxOXE0MyA0NCA0MyAxMTdxMCAyNiAtNSA1OHE4MiAxNiAxNDQgMTZxNDQgMCA3MS41IC0xLjV0NDguNSAtOC41CnQzMSAtMTMuNXQyMC41IC0yNC41dDE1LjUgLTMzLjV0MTcgLTQ3LjV0MjQgLTYwbDUwIDI1cS0zIC00MCAtMjMgLTYwdC00Mi41IC0yMXQtNDAgLTYuNXQtMTYuNSAtMjAuNXpNMTI4MiA4NDJxLTUgNSAtMTMuNSAxNS41dC0xMiAxNC41dC0xMC41IDExLjV0LTEwIDEwLjVsLTggOHQtOC41IDcuNXQtOCA1dC04LjUgNC41cS03IDMgLTE0LjUgNXQtMjAuNSAyLjV0LTIyIDAuNWgtMzIuNWgtMzcuNXEtMTI2IDAgLTIxNyAtNDMKcTE2IDMwIDM2IDQ2LjV0NTQgMjkuNXQ2NS41IDM2dDQ2IDM2LjV0NTAgNTV0NDMuNSA1MC41cTEyIC05IDI4IC0zMS41dDMyIC0zNi41dDM4IC0xM2wxMiAxdi03NmwyMiAtMXEyNDcgOTUgMzcxIDE5MHEyOCAyMSA1MCAzOXQ0Mi41IDM3LjV0MzMgMzF0MjkuNSAzNHQyNCAzMXQyNC41IDM3dDIzIDM4dDI3IDQ3LjV0MjkuNSA1M2w3IDlxLTIgLTUzIC00MyAtMTM5cS03OSAtMTY1IC0yMDUgLTI2NHQtMzA2IC0xNDJxLTE0IC0zIC00MiAtNy41CnQtNTAgLTkuNXQtMzkgLTE0cTMgLTE5IDI0LjUgLTQ2dDIxLjUgLTM0cTAgLTExIC0yNiAtMzB6TTEwNjEgLTc5cTM5IDI2IDEzMS41IDQ3LjV0MTQ2LjUgMjEuNXE5IDAgMjIuNSAtMTUuNXQyOCAtNDIuNXQyNiAtNTB0MjQgLTUxdDE0LjUgLTMzcS0xMjEgLTQ1IC0yNDQgLTQ1cS02MSAwIC0xMjUgMTF6TTgyMiA1NjhsNDggMTJsMTA5IC0xNzdsLTczIC00OHpNMTMyMyA1MXEzIC0xNSAzIC0xNnEwIC03IC0xNy41IC0xNC41dC00NiAtMTMKdC01NCAtOS41dC01My41IC03LjV0LTMyIC00LjVsLTcgNDNxMjEgMiA2MC41IDguNXQ3MiAxMHQ2MC41IDMuNWgxNHpNODY2IDY3OWwtOTYgLTIwbC02IDE3cTEwIDEgMzIuNSA3dDM0LjUgNnExOSAwIDM1IC0xMHpNMTA2MSA0NWgzMWwxMCAtODNsLTQxIC0xMnY5NXpNMTk1MCAxNTM1djF2LTF6TTE5NTAgMTUzNWwtMSAtNWwtMiAtMmwxIDN6TTE5NTAgMTUzNWwxIDF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zOTkiIHVuaWNvZGU9IiYjeGYxYTk7IiAKZD0iTTExNjcgLTUwcS01IDE5IC0yNCA1cS0zMCAtMjIgLTg3IC0zOXQtMTMxIC0xN3EtMTI5IDAgLTE5MyA0OXEtNSA0IC0xMyA0cS0xMSAwIC0yNiAtMTJxLTcgLTYgLTcuNSAtMTZ0Ny41IC0yMHEzNCAtMzIgODcuNSAtNDZ0MTAyLjUgLTEyLjV0OTkgNC41cTQxIDQgODQuNSAyMC41dDY1IDMwdDI4LjUgMjAuNXExMiAxMiA3IDI5ek0xMTI4IDY1cS0xOSA0NyAtMzkgNjFxLTIzIDE1IC03NiAxNXEtNDcgMCAtNzEgLTEwCnEtMjkgLTEyIC03OCAtNTZxLTI2IC0yNCAtMTIgLTQ0cTkgLTggMTcuNSAtNC41dDMxLjUgMjMuNXEzIDIgMTAuNSA4LjV0MTAuNSA4LjV0MTAgN3QxMS41IDd0MTIuNSA1dDE1IDQuNXQxNi41IDIuNXQyMC41IDFxMjcgMCA0NC41IC03LjV0MjMgLTE0LjV0MTMuNSAtMjJxMTAgLTE3IDEyLjUgLTIwdDEyLjUgMXEyMyAxMiAxNCAzNHpNMTQ4MyAzNDZxMCAyMiAtNSA0NC41dC0xNi41IDQ1dC0zNCAzNi41dC01Mi41IDE0CnEtMzMgMCAtOTcgLTQxLjV0LTEyOSAtODMuNXQtMTAxIC00MnEtMjcgLTEgLTYzLjUgMTl0LTc2IDQ5dC04My41IDU4dC0xMDAgNDl0LTExMSAxOXEtMTE1IC0xIC0xOTcgLTc4LjV0LTg0IC0xNzguNXEtMiAtMTEyIDc0IC0xNjRxMjkgLTIwIDYyLjUgLTI4LjV0MTAzLjUgLTguNXE1NyAwIDEzMiAzMi41dDEzNCA3MXQxMjAgNzAuNXQ5MyAzMXEyNiAtMSA2NSAtMzEuNXQ3MS41IC02N3Q2OCAtNjcuNXQ1NS41IC0zMnEzNSAtMyA1OC41IDE0CnQ1NS41IDYzcTI4IDQxIDQyLjUgMTAxdDE0LjUgMTA2ek0xNTM2IDUwNnEwIC0xNjQgLTYyIC0zMDQuNXQtMTY2IC0yMzZ0LTI0Mi41IC0xNDkuNXQtMjkwLjUgLTU0dC0yOTMgNTcuNXQtMjQ3LjUgMTU3dC0xNzAuNSAyNDEuNXQtNjQgMzAycTAgODkgMTkuNSAxNzIuNXQ0OSAxNDUuNXQ3MC41IDExOC41dDc4LjUgOTR0NzguNSA2OS41dDY0LjUgNDYuNXQ0Mi41IDI0LjVxMTQgOCA1MSAyNi41dDU0LjUgMjguNXQ0OCAzMHQ2MC41IDQ0CnEzNiAyOCA1OCA3Mi41dDMwIDEyNS41cTEyOSAtMTU1IDE4NiAtMTkzcTQ0IC0yOSAxMzAgLTY4dDEyOSAtNjZxMjEgLTEzIDM5IC0yNXQ2MC41IC00Ni41dDc2IC03MC41dDc1IC05NXQ2OSAtMTIydDQ3IC0xNDguNXQxOS41IC0xNzcuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwMCIgdW5pY29kZT0iJiN4ZjFhYTsiIApkPSJNMTA3MCA0NjNsLTE2MCAtMTYwbC0xNTEgLTE1MmwtMzAgLTMwcS02NSAtNjQgLTE1MS41IC04N3QtMTcxLjUgLTJxLTE2IC03MCAtNzIgLTExNXQtMTI5IC00NXEtODUgMCAtMTQ1IDYwLjV0LTYwIDE0NS41cTAgNzIgNDQuNSAxMjh0MTEzLjUgNzJxLTIyIDg2IDEgMTczdDg4IDE1MmwxMiAxMmwxNTEgLTE1MmwtMTEgLTExcS0zNyAtMzcgLTM3IC04OXQzNyAtOTBxMzcgLTM3IDg5IC0zN3Q4OSAzN2wzMCAzMGwxNTEgMTUybDE2MSAxNjB6Ck03MjkgMTE0NWwxMiAtMTJsLTE1MiAtMTUybC0xMiAxMnEtMzcgMzcgLTg5IDM3dC04OSAtMzd0LTM3IC04OS41dDM3IC04OS41bDI5IC0yOWwxNTIgLTE1MmwxNjAgLTE2MGwtMTUxIC0xNTJsLTE2MSAxNjBsLTE1MSAxNTJsLTMwIDMwcS02OCA2NyAtOTAgMTU5LjV0NSAxNzkuNXEtNzAgMTUgLTExNSA3MXQtNDUgMTI5cTAgODUgNjAgMTQ1LjV0MTQ1IDYwLjVxNzYgMCAxMzMuNSAtNDl0NjkuNSAtMTIzcTg0IDIwIDE2OS41IC0zLjUKdDE0OS41IC04Ny41ek0xNTM2IDc4cTAgLTg1IC02MCAtMTQ1LjV0LTE0NSAtNjAuNXEtNzQgMCAtMTMxIDQ3dC03MSAxMThxLTg2IC0yOCAtMTc5LjUgLTZ0LTE2MS41IDkwbC0xMSAxMmwxNTEgMTUybDEyIC0xMnEzNyAtMzcgODkgLTM3dDg5IDM3dDM3IDg5dC0zNyA4OWwtMzAgMzBsLTE1MiAxNTJsLTE2MCAxNjBsMTUyIDE1MmwxNjAgLTE2MGwxNTIgLTE1MmwyOSAtMzBxNjQgLTY0IDg3LjUgLTE1MC41dDIuNSAtMTcxLjUKcTc2IC0xMSAxMjYuNSAtNjguNXQ1MC41IC0xMzQuNXpNMTUzNCAxMjAycTAgLTc3IC01MSAtMTM1dC0xMjcgLTY5cTI2IC04NSAzIC0xNzYuNXQtOTAgLTE1OC41bC0xMiAtMTJsLTE1MSAxNTJsMTIgMTJxMzcgMzcgMzcgODl0LTM3IDg5dC04OSAzN3QtODkgLTM3bC0zMCAtMzBsLTE1MiAtMTUybC0xNjAgLTE2MGwtMTUyIDE1MmwxNjEgMTYwbDE1MiAxNTJsMjkgMzBxNjcgNjcgMTU5IDg5LjV0MTc4IC0zLjVxMTEgNzUgNjguNSAxMjYKdDEzNS41IDUxcTg1IDAgMTQ1IC02MC41dDYwIC0xNDUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjFhYiIgdW5pY29kZT0iJiN4ZjFhYjsiIApkPSJNNjU0IDQ1OHEtMSAtMyAtMTIuNSAwLjV0LTMxLjUgMTEuNWwtMjAgOXEtNDQgMjAgLTg3IDQ5cS03IDUgLTQxIDMxLjV0LTM4IDI4LjVxLTY3IC0xMDMgLTEzNCAtMTgxcS04MSAtOTUgLTEwNSAtMTEwcS00IC0yIC0xOS41IC00dC0xOC41IDBxNiA0IDgyIDkycTIxIDI0IDg1LjUgMTE1dDc4LjUgMTE4cTE3IDMwIDUxIDk4LjV0MzYgNzcuNXEtOCAxIC0xMTAgLTMzcS04IC0yIC0yNy41IC03LjV0LTM0LjUgLTkuNXQtMTcgLTUKcS0yIC0yIC0yIC0xMC41dC0xIC05LjVxLTUgLTEwIC0zMSAtMTVxLTIzIC03IC00NyAwcS0xOCA0IC0yOCAyMXEtNCA2IC01IDIzcTYgMiAyNC41IDV0MjkuNSA2cTU4IDE2IDEwNSAzMnExMDAgMzUgMTAyIDM1cTEwIDIgNDMgMTkuNXQ0NCAyMS41cTkgMyAyMS41IDh0MTQuNSA1LjV0NiAtMC41cTIgLTEyIC0xIC0zM3EwIC0yIC0xMi41IC0yN3QtMjYuNSAtNTMuNXQtMTcgLTMzLjVxLTI1IC01MCAtNzcgLTEzMWw2NCAtMjgKcTEyIC02IDc0LjUgLTMydDY3LjUgLTI4cTQgLTEgMTAuNSAtMjUuNXQ0LjUgLTMwLjV6TTQ0OSA5NDRxMyAtMTUgLTQgLTI4cS0xMiAtMjMgLTUwIC0zOHEtMzAgLTEyIC02MCAtMTJxLTI2IDMgLTQ5IDI2cS0xNCAxNSAtMTggNDFsMSAzcTMgLTMgMTkuNSAtNXQyNi41IDB0NTggMTZxMzYgMTIgNTUgMTRxMTcgMCAyMSAtMTd6TTExNDcgODE1bDYzIC0yMjdsLTEzOSA0MnpNMzkgMTVsNjk0IDIzMnYxMDMybC02OTQgLTIzM3YtMTAzMXoKTTEyODAgMzMybDEwMiAtMzFsLTE4MSA2NTdsLTEwMCAzMWwtMjE2IC01MzZsMTAyIC0zMWw0NSAxMTBsMjExIC02NXpNNzc3IDEyOTRsNTczIC0xODR2Mzgwek0xMDg4IC0yOWwxNTggLTEzbC01NCAtMTYwbC00MCA2NnEtMTMwIC04MyAtMjc2IC0xMDhxLTU4IC0xMiAtOTEgLTEyaC04NHEtNzkgMCAtMTk5LjUgMzl0LTE4My41IDg1cS04IDcgLTggMTZxMCA4IDUgMTMuNXQxMyA1LjVxNCAwIDE4IC03LjV0MzAuNSAtMTYuNXQyMC41IC0xMQpxNzMgLTM3IDE1OS41IC02MS41dDE1Ny41IC0yNC41cTk1IDAgMTY3IDE0LjV0MTU3IDUwLjVxMTUgNyAzMC41IDE1LjV0MzQgMTl0MjguNSAxNi41ek0xNTM2IDEwNTB2LTEwNzlsLTc3NCAyNDZxLTE0IC02IC0zNzUgLTEyNy41dC0zNjggLTEyMS41cS0xMyAwIC0xOCAxM3EwIDEgLTEgM3YxMDc4cTMgOSA0IDEwcTUgNiAyMCAxMXExMDcgMzYgMTQ5IDUwdjM4NGw1NTggLTE5OHEyIDAgMTYwLjUgNTV0MzE2IDEwOC41dDE2MS41IDUzLjUKcTIwIDAgMjAgLTIxdi00MTh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MDIiIHVuaWNvZGU9IiYjeGYxYWM7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0yODggMTE1MnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTI4cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxMjh6TTE2NjQgOTg5cTU4IC0zNCA5MyAtOTN0MzUgLTEyOHYtNzY4cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NWgtODY0cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxNTM2cTAgNDAgMjggNjh0NjggMjhoNjcycTQwIDAgODggLTIwdDc2IC00OApsMTUyIC0xNTJxMjggLTI4IDQ4IC03NnQyMCAtODh2LTE2M3pNOTI4IDB2MTI4cTAgMTQgLTkgMjN0LTIzIDloLTEyOHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMjhxMCAtMTQgOSAtMjN0MjMgLTloMTI4cTE0IDAgMjMgOXQ5IDIzek05MjggMjU2djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjhxLTE0IDAgLTIzIC05dC05IC0yM3YtMTI4cTAgLTE0IDkgLTIzdDIzIC05aDEyOHExNCAwIDIzIDl0OSAyM3pNOTI4IDUxMnYxMjhxMCAxNCAtOSAyMwp0LTIzIDloLTEyOHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMjhxMCAtMTQgOSAtMjN0MjMgLTloMTI4cTE0IDAgMjMgOXQ5IDIzek0xMTg0IDB2MTI4cTAgMTQgLTkgMjN0LTIzIDloLTEyOHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMjhxMCAtMTQgOSAtMjN0MjMgLTloMTI4cTE0IDAgMjMgOXQ5IDIzek0xMTg0IDI1NnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjgKcTE0IDAgMjMgOXQ5IDIzek0xMTg0IDUxMnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE0NDAgMHYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE0NDAgMjU2djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjgKcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE0NDAgNTEydjEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjhxLTE0IDAgLTIzIC05dC05IC0yM3YtMTI4cTAgLTE0IDkgLTIzdDIzIC05aDEyOHExNCAwIDIzIDl0OSAyM3pNMTUzNiA4OTZ2MjU2aC0xNjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjBoLTY0MHYtNTEyaDg5NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwMyIgdW5pY29kZT0iJiN4ZjFhZDsiIApkPSJNMTM0NCAxNTM2cTI2IDAgNDUgLTE5dDE5IC00NXYtMTY2NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyODBxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNjY0cTAgMjYgMTkgNDV0NDUgMTloMTI4MHpNNTEyIDEyNDh2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzdjY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN6TTUxMiA5OTJ2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOQp0OSAyM3Y2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzek01MTIgNzM2di02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3Y2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzek01MTIgNDgwdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3Y2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzek0zODQgMTYwdjY0CnEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMzg0IDQxNnY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMzg0IDY3MnY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NApxMTQgMCAyMyA5dDkgMjN6TTM4NCA5Mjh2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTM4NCAxMTg0djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgLTk2djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05CnQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTg5NiA0MTZ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTg5NiA2NzJ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTg5NiA5Mjh2NjQKcTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgMTE4NHY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTE1MiAxNjB2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjQKcTE0IDAgMjMgOXQ5IDIzek0xMTUyIDQxNnY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTE1MiA2NzJ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTExNTIgOTI4djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOQp0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTE1MiAxMTg0djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDA0IiB1bmljb2RlPSImI3hmMWFlOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMTE4OCA5ODhsLTI5MiAtMjkydi04MjRxMCAtNDYgLTMzIC03OXQtNzkgLTMzdC03OSAzM3QtMzMgNzl2Mzg0aC02NHYtMzg0cTAgLTQ2IC0zMyAtNzl0LTc5IC0zM3QtNzkgMzN0LTMzIDc5djgyNGwtMjkyIDI5MnEtMjggMjggLTI4IDY4dDI4IDY4cTI5IDI4IDY4LjUgMjh0NjcuNSAtMjhsMjI4IC0yMjhoMzY4bDIyOCAyMjhxMjggMjggNjggMjh0NjggLTI4cTI4IC0yOSAyOCAtNjguNXQtMjggLTY3LjV6TTg2NCAxMTUyCnEwIC05MyAtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41dC0xNTguNSA2NS41dC02NS41IDE1OC41dDY1LjUgMTU4LjV0MTU4LjUgNjUuNXQxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFCMSIgdW5pY29kZT0iJiN4ZjFiMDsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTc4MCAxMDY0cTAgLTYwIC0xOSAtMTEzLjV0LTYzIC05Mi41dC0xMDUgLTM5cS03NiAwIC0xMzggNTcuNXQtOTIgMTM1LjV0LTMwIDE1MXEwIDYwIDE5IDExMy41dDYzIDkyLjV0MTA1IDM5cTc3IDAgMTM4LjUgLTU3LjV0OTEuNSAtMTM1dDMwIC0xNTEuNXpNNDM4IDU4MXEwIC04MCAtNDIgLTEzOXQtMTE5IC01OXEtNzYgMCAtMTQxLjUgNTUuNXQtMTAwLjUgMTMzLjV0LTM1IDE1MnEwIDgwIDQyIDEzOS41dDExOSA1OS41CnE3NiAwIDE0MS41IC01NS41dDEwMC41IC0xMzR0MzUgLTE1Mi41ek04MzIgNjA4cTExOCAwIDI1NSAtOTcuNXQyMjkgLTIzN3Q5MiAtMjU0LjVxMCAtNDYgLTE3IC03Ni41dC00OC41IC00NXQtNjQuNSAtMjB0LTc2IC01LjVxLTY4IDAgLTE4Ny41IDQ1dC0xODIuNSA0NXEtNjYgMCAtMTkyLjUgLTQ0LjV0LTIwMC41IC00NC41cS0xODMgMCAtMTgzIDE0NnEwIDg2IDU2IDE5MS41dDEzOS41IDE5Mi41dDE4Ny41IDE0NnQxOTMgNTl6TTEwNzEgODE5CnEtNjEgMCAtMTA1IDM5dC02MyA5Mi41dC0xOSAxMTMuNXEwIDc0IDMwIDE1MS41dDkxLjUgMTM1dDEzOC41IDU3LjVxNjEgMCAxMDUgLTM5dDYzIC05Mi41dDE5IC0xMTMuNXEwIC03MyAtMzAgLTE1MXQtOTIgLTEzNS41dC0xMzggLTU3LjV6TTE1MDMgOTIzcTc3IDAgMTE5IC01OS41dDQyIC0xMzkuNXEwIC03NCAtMzUgLTE1MnQtMTAwLjUgLTEzMy41dC0xNDEuNSAtNTUuNXEtNzcgMCAtMTE5IDU5dC00MiAxMzlxMCA3NCAzNSAxNTIuNQp0MTAwLjUgMTM0dDE0MS41IDU1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MDYiIHVuaWNvZGU9IiYjeGYxYjE7IiBob3Jpei1hZHYteD0iNzY4IiAKZD0iTTcwNCAxMDA4cTAgLTE0NSAtNTcgLTI0My41dC0xNTIgLTEzNS41bDQ1IC04MjFxMiAtMjYgLTE2IC00NXQtNDQgLTE5aC0xOTJxLTI2IDAgLTQ0IDE5dC0xNiA0NWw0NSA4MjFxLTk1IDM3IC0xNTIgMTM1LjV0LTU3IDI0My41cTAgMTI4IDQyLjUgMjQ5LjV0MTE3LjUgMjAwdDE2MCA3OC41dDE2MCAtNzguNXQxMTcuNSAtMjAwdDQyLjUgLTI0OS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDA3IiB1bmljb2RlPSImI3hmMWIyOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNODk2IC05M2w2NDAgMzQ5djYzNmwtNjQwIC0yMzN2LTc1MnpNODMyIDc3Mmw2OTggMjU0bC02OTggMjU0bC02OTggLTI1NHpNMTY2NCAxMDI0di03NjhxMCAtMzUgLTE4IC02NXQtNDkgLTQ3bC03MDQgLTM4NHEtMjggLTE2IC02MSAtMTZ0LTYxIDE2bC03MDQgMzg0cS0zMSAxNyAtNDkgNDd0LTE4IDY1djc2OHEwIDQwIDIzIDczdDYxIDQ3bDcwNCAyNTZxMjIgOCA0NCA4dDQ0IC04bDcwNCAtMjU2cTM4IC0xNCA2MSAtNDd0MjMgLTczegoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwOCIgdW5pY29kZT0iJiN4ZjFiMzsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTY0MCAtOTZsMzg0IDE5MnYzMTRsLTM4NCAtMTY0di0zNDJ6TTU3NiAzNThsNDA0IDE3M2wtNDA0IDE3M2wtNDA0IC0xNzN6TTE2NjQgLTk2bDM4NCAxOTJ2MzE0bC0zODQgLTE2NHYtMzQyek0xNjAwIDM1OGw0MDQgMTczbC00MDQgMTczbC00MDQgLTE3M3pNMTE1MiA2NTFsMzg0IDE2NXYyNjZsLTM4NCAtMTY0di0yNjd6TTEwODggMTAzMGw0NDEgMTg5bC00NDEgMTg5bC00NDEgLTE4OXpNMjE3NiA1MTJ2LTQxNnEwIC0zNiAtMTkgLTY3CnQtNTIgLTQ3bC00NDggLTIyNHEtMjUgLTE0IC01NyAtMTR0LTU3IDE0bC00NDggMjI0cS00IDIgLTcgNHEtMiAtMiAtNyAtNGwtNDQ4IC0yMjRxLTI1IC0xNCAtNTcgLTE0dC01NyAxNGwtNDQ4IDIyNHEtMzMgMTYgLTUyIDQ3dC0xOSA2N3Y0MTZxMCAzOCAyMS41IDcwdDU2LjUgNDhsNDM0IDE4NnY0MDBxMCAzOCAyMS41IDcwdDU2LjUgNDhsNDQ4IDE5MnEyMyAxMCA1MCAxMHQ1MCAtMTBsNDQ4IC0xOTJxMzUgLTE2IDU2LjUgLTQ4dDIxLjUgLTcwCnYtNDAwbDQzNCAtMTg2cTM2IC0xNiA1NyAtNDh0MjEgLTcweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDA5IiB1bmljb2RlPSImI3hmMWI0OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMTg0OCAxMTk3aC01MTF2LTEyNGg1MTF2MTI0ek0xNTk2IDc3MXEtOTAgMCAtMTQ2IC01Mi41dC02MiAtMTQyLjVoNDA4cS0xOCAxOTUgLTIwMCAxOTV6TTE2MTIgMTg2cTYzIDAgMTIyIDMydDc2IDg3aDIyMXEtMTAwIC0zMDcgLTQyNyAtMzA3cS0yMTQgMCAtMzQwLjUgMTMydC0xMjYuNSAzNDdxMCAyMDggMTMwLjUgMzQ1LjV0MzM2LjUgMTM3LjVxMTM4IDAgMjQwLjUgLTY4dDE1MyAtMTc5dDUwLjUgLTI0OHEwIC0xNyAtMiAtNDdoLTY1OApxMCAtMTExIDU3LjUgLTE3MS41dDE2Ni41IC02MC41ek0yNzcgMjM2aDI5NnEyMDUgMCAyMDUgMTY3cTAgMTgwIC0xOTkgMTgwaC0zMDJ2LTM0N3pNMjc3IDc3M2gyODFxNzggMCAxMjMuNSAzNi41dDQ1LjUgMTEzLjVxMCAxNDQgLTE5MCAxNDRoLTI2MHYtMjk0ek0wIDEyODJoNTk0cTg3IDAgMTU1IC0xNHQxMjYuNSAtNDcuNXQ5MCAtOTYuNXQzMS41IC0xNTRxMCAtMTgxIC0xNzIgLTI2M3ExMTQgLTMyIDE3MiAtMTE1dDU4IC0yMDQKcTAgLTc1IC0yNC41IC0xMzYuNXQtNjYgLTEwMy41dC05OC41IC03MXQtMTIxIC00MnQtMTM0IC0xM2gtNjExdjEyNjB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTAiIHVuaWNvZGU9IiYjeGYxYjU7IiAKZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwek00OTkgMTA0MWgtMzcxdi03ODdoMzgycTExNyAwIDE5NyA1Ny41dDgwIDE3MC41cTAgMTU4IC0xNDMgMjAwcTEwNyA1MiAxMDcgMTY0cTAgNTcgLTE5LjUgOTYuNQp0LTU2LjUgNjAuNXQtNzkgMjkuNXQtOTcgOC41ek00NzcgNzIzaC0xNzZ2MTg0aDE2M3ExMTkgMCAxMTkgLTkwcTAgLTk0IC0xMDYgLTk0ek00ODYgMzg4aC0xODV2MjE3aDE4OXExMjQgMCAxMjQgLTExM3EwIC0xMDQgLTEyOCAtMTA0ek0xMTM2IDM1NnEtNjggMCAtMTA0IDM4dC0zNiAxMDdoNDExcTEgMTAgMSAzMHEwIDEzMiAtNzQuNSAyMjAuNXQtMjAzLjUgODguNXEtMTI4IDAgLTIxMCAtODZ0LTgyIC0yMTZxMCAtMTM1IDc5IC0yMTcKdDIxMyAtODJxMjA1IDAgMjY3IDE5MWgtMTM4cS0xMSAtMzQgLTQ3LjUgLTU0dC03NS41IC0yMHpNMTEyNiA3MjJxMTEzIDAgMTI0IC0xMjJoLTI1NHE0IDU2IDM5IDg5dDkxIDMzek05NjQgOTg4aDMxOXYtNzdoLTMxOXY3N3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxMSIgdW5pY29kZT0iJiN4ZjFiNjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE1ODIgOTU0cTAgLTEwMSAtNzEuNSAtMTcyLjV0LTE3Mi41IC03MS41dC0xNzIuNSA3MS41dC03MS41IDE3Mi41dDcxLjUgMTcyLjV0MTcyLjUgNzEuNXQxNzIuNSAtNzEuNXQ3MS41IC0xNzIuNXpNODEyIDIxMnEwIDEwNCAtNzMgMTc3dC0xNzcgNzNxLTI3IDAgLTU0IC02bDEwNCAtNDJxNzcgLTMxIDEwOS41IC0xMDYuNXQxLjUgLTE1MS41cS0zMSAtNzcgLTEwNyAtMTA5dC0xNTIgLTFxLTIxIDggLTYyIDI0LjV0LTYxIDI0LjUKcTMyIC02MCA5MSAtOTYuNXQxMzAgLTM2LjVxMTA0IDAgMTc3IDczdDczIDE3N3pNMTY0MiA5NTNxMCAxMjYgLTg5LjUgMjE1LjV0LTIxNS41IDg5LjVxLTEyNyAwIC0yMTYuNSAtODkuNXQtODkuNSAtMjE1LjVxMCAtMTI3IDg5LjUgLTIxNnQyMTYuNSAtODlxMTI2IDAgMjE1LjUgODl0ODkuNSAyMTZ6TTE3OTIgOTUzcTAgLTE4OSAtMTMzLjUgLTMyMnQtMzIxLjUgLTEzM2wtNDM3IC0zMTlxLTEyIC0xMjkgLTEwOSAtMjE4dC0yMjkgLTg5CnEtMTIxIDAgLTIxNCA3NnQtMTE4IDE5MmwtMjMwIDkydjQyOWwzODkgLTE1N3E3OSA0OCAxNzMgNDhxMTMgMCAzNSAtMmwyODQgNDA3cTIgMTg3IDEzNS41IDMxOXQzMjAuNSAxMzJxMTg4IDAgMzIxLjUgLTEzMy41dDEzMy41IC0zMjEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxMiIgdW5pY29kZT0iJiN4ZjFiNzsiIApkPSJNMTI0MiA4ODlxMCA4MCAtNTcgMTM2LjV0LTEzNyA1Ni41dC0xMzYuNSAtNTd0LTU2LjUgLTEzNnEwIC04MCA1Ni41IC0xMzYuNXQxMzYuNSAtNTYuNXQxMzcgNTYuNXQ1NyAxMzYuNXpNNjMyIDMwMXEwIC04MyAtNTggLTE0MC41dC0xNDAgLTU3LjVxLTU2IDAgLTEwMyAyOXQtNzIgNzdxNTIgLTIwIDk4IC00MHE2MCAtMjQgMTIwIDEuNXQ4NSA4Ni41cTI0IDYwIC0xLjUgMTIwdC04Ni41IDg0bC04MiAzM3EyMiA1IDQyIDUKcTgyIDAgMTQwIC01Ny41dDU4IC0xNDAuNXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2MTUzbDE3MiAtNjlxMjAgLTkyIDkzLjUgLTE1MnQxNjguNSAtNjBxMTA0IDAgMTgxIDcwdDg3IDE3M2wzNDUgMjUycTE1MCAwIDI1NS41IDEwNS41dDEwNS41IDI1NC41cTAgMTUwIC0xMDUuNSAyNTUuNXQtMjU1LjUgMTA1LjUKcS0xNDggMCAtMjUzIC0xMDQuNXQtMTA3IC0yNTIuNWwtMjI1IC0zMjJxLTkgMSAtMjggMXEtNzUgMCAtMTM3IC0zN2wtMjk3IDExOXY0NjhxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXpNMTI4OSA4ODdxMCAtMTAwIC03MSAtMTcwLjV0LTE3MSAtNzAuNXQtMTcwLjUgNzAuNXQtNzAuNSAxNzAuNXQ3MC41IDE3MXQxNzAuNSA3MXExMDEgMCAxNzEuNSAtNzAuNXQ3MC41IC0xNzEuNXoKIiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTMiIHVuaWNvZGU9IiYjeGYxYjg7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik04MzYgMzY3bC0xNSAtMzY4bC0yIC0yMmwtNDIwIDI5cS0zNiAzIC02NyAzMS41dC00NyA2NS41cS0xMSAyNyAtMTQuNSA1NXQ0IDY1dDEyIDU1dDIxLjUgNjR0MTkgNTNxNzggLTEyIDUwOSAtMjh6TTQ0OSA5NTNsMTgwIC0zNzlsLTE0NyA5MnEtNjMgLTcyIC0xMTEuNSAtMTQ0LjV0LTcyLjUgLTEyNXQtMzkuNSAtOTQuNXQtMTguNSAtNjNsLTQgLTIxbC0xOTAgMzU3cS0xNyAyNiAtMTggNTZ0NiA0N2w4IDE4cTM1IDYzIDExNCAxODgKbC0xNDAgODZ6TTE2ODAgNDM2bC0xODggLTM1OXEtMTIgLTI5IC0zNi41IC00Ni41dC00My41IC0yMC41bC0xOCAtNHEtNzEgLTcgLTIxOSAtMTJsOCAtMTY0bC0yMzAgMzY3bDIxMSAzNjJsNyAtMTczcTE3MCAtMTYgMjgzIC01dDE3MCAzM3pNODk1IDEzNjBxLTQ3IC02MyAtMjY1IC00MzVsLTMxNyAxODdsLTE5IDEybDIyNSAzNTZxMjAgMzEgNjAgNDV0ODAgMTBxMjQgLTIgNDguNSAtMTJ0NDIgLTIxdDQxLjUgLTMzdDM2IC0zNC41CnQzNiAtMzkuNXQzMiAtMzV6TTE1NTAgMTA1M2wyMTIgLTM2M3ExOCAtMzcgMTIuNSAtNzZ0LTI3LjUgLTc0cS0xMyAtMjAgLTMzIC0zN3QtMzggLTI4dC00OC41IC0yMnQtNDcgLTE2dC01MS41IC0xNHQtNDYgLTEycS0zNCA3MiAtMjY1IDQzNmwzMTMgMTk1ek0xNDA3IDEyNzlsMTQyIDgzbC0yMjAgLTM3M2wtNDE5IDIwbDE1MSA4NnEtMzQgODkgLTc1IDE2NnQtNzUuNSAxMjMuNXQtNjQuNSA4MHQtNDcgNDYuNWwtMTcgMTNsNDA1IC0xCnEzMSAzIDU4IC0xMC41dDM5IC0yOC41bDExIC0xNXEzOSAtNjEgMTEyIC0xOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTQiIHVuaWNvZGU9IiYjeGYxYjk7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik00ODAgNDQ4cTAgNjYgLTQ3IDExM3QtMTEzIDQ3dC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzek01MTYgNzY4aDEwMTZsLTg5IDM1N3EtMiA4IC0xNCAxNy41dC0yMSA5LjVoLTc2OHEtOSAwIC0yMSAtOS41dC0xNCAtMTcuNXpNMTg4OCA0NDhxMCA2NiAtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN6TTIwNDggNTQ0di0zODQKcTAgLTE0IC05IC0yM3QtMjMgLTloLTk2di0xMjhxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2djEyOGgtMTAyNHYtMTI4cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnYxMjhoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjM4NHEwIDkzIDY1LjUgMTU4LjV0MTU4LjUgNjUuNWgyOGwxMDUgNDE5cTIzIDk0IDEwNCAxNTcuNXQxNzkgNjMuNWg3NjhxOTggMCAxNzkgLTYzLjV0MTA0IC0xNTcuNQpsMTA1IC00MTloMjhxOTMgMCAxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNSIgdW5pY29kZT0iJiN4ZjFiYTsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTE4MjQgNjQwcTkzIDAgMTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV2LTM4NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtNjRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2djY0aC0xMDI0di02NHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ2NjRoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjM4NHEwIDkzIDY1LjUgMTU4LjV0MTU4LjUgNjUuNWgyOGwxMDUgNDE5cTIzIDk0IDEwNCAxNTcuNQp0MTc5IDYzLjVoMTI4djIyNHEwIDE0IDkgMjN0MjMgOWg0NDhxMTQgMCAyMyAtOXQ5IC0yM3YtMjI0aDEyOHE5OCAwIDE3OSAtNjMuNXQxMDQgLTE1Ny41bDEwNSAtNDE5aDI4ek0zMjAgMTYwcTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3ek01MTYgNjQwaDEwMTZsLTg5IDM1N3EtMiA4IC0xNCAxNy41dC0yMSA5LjVoLTc2OHEtOSAwIC0yMSAtOS41dC0xNCAtMTcuNXoKTTE3MjggMTYwcTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDE2IiB1bmljb2RlPSImI3hmMWJiOyIgCmQ9Ik0xNTA0IDY0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNDYycTEgLTE3IDYgLTg3LjV0NSAtMTA4LjVxMCAtMjUgLTE4IC00Mi41dC00MyAtMTcuNWgtMzIwcS0yNSAwIC00MyAxNy41dC0xOCA0Mi41cTAgMzggNSAxMDguNXQ2IDg3LjVoLTQ2MnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDQwMiA0MDNoLTIyOXEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDQwMiA0MDNoLTE5N3EtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDM4NCAzODQKcTE5IDE5IDQ1IDE5dDQ1IC0xOWwzODQgLTM4NHExOSAtMTkgMTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOWgtMTk3bDQwMiAtNDAzcTE5IC0xOSAxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC0yMjlsNDAyIC00MDNxMTkgLTE5IDE5IC00NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNyIgdW5pY29kZT0iJiN4ZjFiYzsiIApkPSJNMTEyNyAzMjZxMCAzMiAtMzAgNTFxLTE5MyAxMTUgLTQ0NyAxMTVxLTEzMyAwIC0yODcgLTM0cS00MiAtOSAtNDIgLTUycTAgLTIwIDEzLjUgLTM0LjV0MzUuNSAtMTQuNXE1IDAgMzcgOHExMzIgMjcgMjQzIDI3cTIyNiAwIDM5NyAtMTAzcTE5IC0xMSAzMyAtMTFxMTkgMCAzMyAxMy41dDE0IDM0LjV6TTEyMjMgNTQxcTAgNDAgLTM1IDYxcS0yMzcgMTQxIC01NDggMTQxcS0xNTMgMCAtMzAzIC00MnEtNDggLTEzIC00OCAtNjQKcTAgLTI1IDE3LjUgLTQyLjV0NDIuNSAtMTcuNXE3IDAgMzcgOHExMjIgMzMgMjUxIDMzcTI3OSAwIDQ4OCAtMTI0cTI0IC0xMyAzOCAtMTNxMjUgMCA0Mi41IDE3LjV0MTcuNSA0Mi41ek0xMzMxIDc4OXEwIDQ3IC00MCA3MHEtMTI2IDczIC0yOTMgMTEwLjV0LTM0MyAzNy41cS0yMDQgMCAtMzY0IC00N3EtMjMgLTcgLTM4LjUgLTI1LjV0LTE1LjUgLTQ4LjVxMCAtMzEgMjAuNSAtNTJ0NTEuNSAtMjFxMTEgMCA0MCA4cTEzMyAzNyAzMDcgMzcKcTE1OSAwIDMwOS41IC0zNHQyNTMuNSAtOTVxMjEgLTEyIDQwIC0xMnEyOSAwIDUwLjUgMjAuNXQyMS41IDUxLjV6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDE4IiB1bmljb2RlPSImI3hmMWJkOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNMTAyNCAxMjMzbC0zMDMgLTU4MmwyNCAtMzFoMjc5di00MTVoLTUwN2wtNDQgLTMwbC0xNDIgLTI3M2wtMzAgLTMwaC0zMDF2MzAzbDMwMyA1ODNsLTI0IDMwaC0yNzl2NDE1aDUwN2w0NCAzMGwxNDIgMjczbDMwIDMwaDMwMXYtMzAzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDE5IiB1bmljb2RlPSImI3hmMWJlOyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNNzg0IDE2NGwxNiAyNDFsLTE2IDUyM3EtMSAxMCAtNy41IDE3dC0xNi41IDdxLTkgMCAtMTYgLTd0LTcgLTE3bC0xNCAtNTIzbDE0IC0yNDFxMSAtMTAgNy41IC0xNi41dDE1LjUgLTYuNXEyMiAwIDI0IDIzek0xMDgwIDE5M2wxMSAyMTFsLTEyIDU4NnEwIDE2IC0xMyAyNHEtOCA1IC0xNiA1dC0xNiAtNXEtMTMgLTggLTEzIC0yNGwtMSAtNmwtMTAgLTU3OXEwIC0xIDExIC0yMzZ2LTFxMCAtMTAgNiAtMTdxOSAtMTEgMjMgLTExCnExMSAwIDIwIDlxOSA3IDkgMjB6TTM1IDUzM2wyMCAtMTI4bC0yMCAtMTI2cS0yIC05IC05IC05dC05IDlsLTE3IDEyNmwxNyAxMjhxMiA5IDkgOXQ5IC05ek0xMjEgNjEybDI2IC0yMDdsLTI2IC0yMDNxLTIgLTkgLTEwIC05cS05IDAgLTkgMTBsLTIzIDIwMmwyMyAyMDdxMCA5IDkgOXE4IDAgMTAgLTl6TTQwMSAxNTl6TTIxMyA2NTBsMjUgLTI0NWwtMjUgLTIzN3EwIC0xMSAtMTEgLTExcS0xMCAwIC0xMiAxMWwtMjEgMjM3bDIxIDI0NQpxMiAxMiAxMiAxMnExMSAwIDExIC0xMnpNMzA3IDY1N2wyMyAtMjUybC0yMyAtMjQ0cS0yIC0xMyAtMTQgLTEzcS0xMyAwIC0xMyAxM2wtMjEgMjQ0bDIxIDI1MnEwIDEzIDEzIDEzcTEyIDAgMTQgLTEzek00MDEgNjM5bDIxIC0yMzRsLTIxIC0yNDZxLTIgLTE2IC0xNiAtMTZxLTYgMCAtMTAuNSA0LjV0LTQuNSAxMS41bC0yMCAyNDZsMjAgMjM0cTAgNiA0LjUgMTAuNXQxMC41IDQuNXExNCAwIDE2IC0xNXpNNzg0IDE2NHpNNDk1IDc4NQpsMjEgLTM4MGwtMjEgLTI0NnEwIC03IC01IC0xMi41dC0xMiAtNS41cS0xNiAwIC0xOCAxOGwtMTggMjQ2bDE4IDM4MHEyIDE4IDE4IDE4cTcgMCAxMiAtNS41dDUgLTEyLjV6TTU4OSA4NzFsMTkgLTQ2OGwtMTkgLTI0NHEwIC04IC01LjUgLTEzLjV0LTEzLjUgLTUuNXEtMTggMCAtMjAgMTlsLTE2IDI0NGwxNiA0NjhxMiAxOSAyMCAxOXE4IDAgMTMuNSAtNS41dDUuNSAtMTMuNXpNNjg3IDkxMWwxOCAtNTA2bC0xOCAtMjQyCnEtMiAtMjEgLTIyIC0yMXEtMTkgMCAtMjEgMjFsLTE2IDI0MmwxNiA1MDZxMCA5IDYuNSAxNS41dDE0LjUgNi41cTkgMCAxNSAtNi41dDcgLTE1LjV6TTEwNzkgMTY5djB2MHYwek04ODEgOTE1bDE1IC01MTBsLTE1IC0yMzlxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41dC0xNyA3dC04IDE4bC0xNCAyMzlsMTQgNTEwcTAgMTEgNy41IDE4dDE3LjUgN3QxNy41IC03dDcuNSAtMTh6TTk4MCA4OTZsMTQgLTQ5MmwtMTQgLTIzNgpxMCAtMTEgLTggLTE5dC0xOSAtOHQtMTkgOHQtOSAxOWwtMTIgMjM2bDEyIDQ5MnExIDEyIDkgMjB0MTkgOHQxOC41IC04dDguNSAtMjB6TTExOTIgNDA0bC0xNCAtMjMxdjBxMCAtMTMgLTkgLTIydC0yMiAtOXQtMjIgOXQtMTAgMjJsLTYgMTE0bC02IDExN2wxMiA2MzZ2M3EyIDE1IDEyIDI0cTkgNyAyMCA3cTggMCAxNSAtNXExNCAtOCAxNiAtMjZ6TTIzMDQgNDIzcTAgLTExNyAtODMgLTE5OS41dC0yMDAgLTgyLjVoLTc4NgpxLTEzIDIgLTIyIDExdC05IDIydjg5OXEwIDIzIDI4IDMzcTg1IDM0IDE4MSAzNHExOTUgMCAzMzggLTEzMS41dDE2MCAtMzIzLjVxNTMgMjIgMTEwIDIycTExNyAwIDIwMCAtODN0ODMgLTIwMXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFDMCIgdW5pY29kZT0iJiN4ZjFjMDsiIApkPSJNNzY4IDc2OHEyMzcgMCA0NDMgNDN0MzI1IDEyN3YtMTcwcTAgLTY5IC0xMDMgLTEyOHQtMjgwIC05My41dC0zODUgLTM0LjV0LTM4NSAzNC41dC0yODAgOTMuNXQtMTAzIDEyOHYxNzBxMTE5IC04NCAzMjUgLTEyN3Q0NDMgLTQzek03NjggMHEyMzcgMCA0NDMgNDN0MzI1IDEyN3YtMTcwcTAgLTY5IC0xMDMgLTEyOHQtMjgwIC05My41dC0zODUgLTM0LjV0LTM4NSAzNC41dC0yODAgOTMuNXQtMTAzIDEyOHYxNzBxMTE5IC04NCAzMjUgLTEyNwp0NDQzIC00M3pNNzY4IDM4NHEyMzcgMCA0NDMgNDN0MzI1IDEyN3YtMTcwcTAgLTY5IC0xMDMgLTEyOHQtMjgwIC05My41dC0zODUgLTM0LjV0LTM4NSAzNC41dC0yODAgOTMuNXQtMTAzIDEyOHYxNzBxMTE5IC04NCAzMjUgLTEyN3Q0NDMgLTQzek03NjggMTUzNnEyMDggMCAzODUgLTM0LjV0MjgwIC05My41dDEwMyAtMTI4di0xMjhxMCAtNjkgLTEwMyAtMTI4dC0yODAgLTkzLjV0LTM4NSAtMzQuNXQtMzg1IDM0LjV0LTI4MCA5My41CnQtMTAzIDEyOHYxMjhxMCA2OSAxMDMgMTI4dDI4MCA5My41dDM4NSAzNC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUMxIiB1bmljb2RlPSImI3hmMWMxOyIgCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgwegpNODk0IDQ2NXEzMyAtMjYgODQgLTU2cTU5IDcgMTE3IDdxMTQ3IDAgMTc3IC00OXExNiAtMjIgMiAtNTJxMCAtMSAtMSAtMmwtMiAtMnYtMXEtNiAtMzggLTcxIC0zOHEtNDggMCAtMTE1IDIwdC0xMzAgNTNxLTIyMSAtMjQgLTM5MiAtODNxLTE1MyAtMjYyIC0yNDIgLTI2MnEtMTUgMCAtMjggN2wtMjQgMTJxLTEgMSAtNiA1cS0xMCAxMCAtNiAzNnE5IDQwIDU2IDkxLjV0MTMyIDk2LjVxMTQgOSAyMyAtNnEyIC0yIDIgLTRxNTIgODUgMTA3IDE5NwpxNjggMTM2IDEwNCAyNjJxLTI0IDgyIC0zMC41IDE1OS41dDYuNSAxMjcuNXExMSA0MCA0MiA0MGgyMWgxcTIzIDAgMzUgLTE1cTE4IC0yMSA5IC02OHEtMiAtNiAtNCAtOHExIC0zIDEgLTh2LTMwcS0yIC0xMjMgLTE0IC0xOTJxNTUgLTE2NCAxNDYgLTIzOHpNMzE4IDU0cTUyIDI0IDEzNyAxNThxLTUxIC00MCAtODcuNSAtODR0LTQ5LjUgLTc0ek03MTYgOTc0cS0xNSAtNDIgLTIgLTEzMnExIDcgNyA0NHEwIDMgNyA0M3ExIDQgNCA4CnEtMSAxIC0xIDJxLTEgMiAtMSAzcS0xIDIyIC0xMyAzNnEwIC0xIC0xIC0ydi0yek01OTIgMzEzcTEzNSA1NCAyODQgODFxLTIgMSAtMTMgOS41dC0xNiAxMy41cS03NiA2NyAtMTI3IDE3NnEtMjcgLTg2IC04MyAtMTk3cS0zMCAtNTYgLTQ1IC04M3pNMTIzOCAzMjlxLTI0IDI0IC0xNDAgMjRxNzYgLTI4IDEyNCAtMjhxMTQgMCAxOCAxcTAgMSAtMiAzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDIyIiB1bmljb2RlPSImI3hmMWMyOyIgCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgwegpNMjMzIDc2OHYtMTA3aDcwbDE2NCAtNjYxaDE1OWwxMjggNDg1cTcgMjAgMTAgNDZxMiAxNiAyIDI0aDRsMyAtMjRxMSAtMyAzLjUgLTIwdDUuNSAtMjZsMTI4IC00ODVoMTU5bDE2NCA2NjFoNzB2MTA3aC0zMDB2LTEwN2g5MGwtOTkgLTQzOHEtNSAtMjAgLTcgLTQ2bC0yIC0yMWgtNHEwIDMgLTAuNSA2LjV0LTEuNSA4dC0xIDYuNXEtMSA1IC00IDIxdC01IDI1bC0xNDQgNTQ1aC0xMTRsLTE0NCAtNTQ1cS0yIC05IC00LjUgLTI0LjUKdC0zLjUgLTIxLjVsLTQgLTIxaC00bC0yIDIxcS0yIDI2IC03IDQ2bC05OSA0MzhoOTB2MTA3aC0zMDB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MjMiIHVuaWNvZGU9IiYjeGYxYzM7IiAKZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6Ck00MjkgMTA2di0xMDZoMjgxdjEwNmgtNzVsMTAzIDE2MXE1IDcgMTAgMTYuNXQ3LjUgMTMuNXQzLjUgNGgycTEgLTQgNSAtMTBxMiAtNCA0LjUgLTcuNXQ2IC04dDYuNSAtOC41bDEwNyAtMTYxaC03NnYtMTA2aDI5MXYxMDZoLTY4bC0xOTIgMjczbDE5NSAyODJoNjd2MTA3aC0yNzl2LTEwN2g3NGwtMTAzIC0xNTlxLTQgLTcgLTEwIC0xNi41dC05IC0xMy41bC0yIC0zaC0ycS0xIDQgLTUgMTBxLTYgMTEgLTE3IDIzbC0xMDYgMTU5aDc2djEwNwpoLTI5MHYtMTA3aDY4bDE4OSAtMjcybC0xOTQgLTI4M2gtNjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MjQiIHVuaWNvZGU9IiYjeGYxYzQ7IiAKZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6Ck00MTYgMTA2di0xMDZoMzI3djEwNmgtOTN2MTY3aDEzN3E3NiAwIDExOCAxNXE2NyAyMyAxMDYuNSA4N3QzOS41IDE0NnEwIDgxIC0zNyAxNDF0LTEwMCA4N3EtNDggMTkgLTEzMCAxOWgtMzY4di0xMDdoOTJ2LTU1NWgtOTJ6TTc2OSAzODZoLTExOXYyNjhoMTIwcTUyIDAgODMgLTE4cTU2IC0zMyA1NiAtMTE1cTAgLTg5IC02MiAtMTIwcS0zMSAtMTUgLTc4IC0xNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNSIgdW5pY29kZT0iJiN4ZjFjNTsiIApkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoKTTEyODAgMzIwdi0zMjBoLTEwMjR2MTkybDE5MiAxOTJsMTI4IC0xMjhsMzg0IDM4NHpNNDQ4IDUxMnEtODAgMCAtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ0LTU2IC0xMzZ0LTEzNiAtNTZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MjYiIHVuaWNvZGU9IiYjeGYxYzY7IiAKZD0iTTY0MCAxMTUydjEyOGgtMTI4di0xMjhoMTI4ek03NjggMTAyNHYxMjhoLTEyOHYtMTI4aDEyOHpNNjQwIDg5NnYxMjhoLTEyOHYtMTI4aDEyOHpNNzY4IDc2OHYxMjhoLTEyOHYtMTI4aDEyOHpNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDAKdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtMTI4di0xMjhoLTEyOHYxMjhoLTUxMnYtMTUzNmgxMjgwek03ODEgNTkzbDEwNyAtMzQ5cTggLTI3IDggLTUycTAgLTgzIC03Mi41IC0xMzcuNXQtMTgzLjUgLTU0LjV0LTE4My41IDU0LjV0LTcyLjUgMTM3LjVxMCAyNSA4IDUycTIxIDYzIDEyMCAzOTZ2MTI4aDEyOHYtMTI4aDc5CnEyMiAwIDM5IC0xM3QyMyAtMzR6TTY0MCAxMjhxNTMgMCA5MC41IDE5dDM3LjUgNDV0LTM3LjUgNDV0LTkwLjUgMTl0LTkwLjUgLTE5dC0zNy41IC00NXQzNy41IC00NXQ5MC41IC0xOXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNyIgdW5pY29kZT0iJiN4ZjFjNzsiIApkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoKTTYyMCA2ODZxMjAgLTggMjAgLTMwdi01NDRxMCAtMjIgLTIwIC0zMHEtOCAtMiAtMTIgLTJxLTEyIDAgLTIzIDlsLTE2NiAxNjdoLTEzMXEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTMxbDE2NiAxNjdxMTYgMTUgMzUgN3pNMTAzNyAtM3EzMSAwIDUwIDI0cTEyOSAxNTkgMTI5IDM2M3QtMTI5IDM2M3EtMTYgMjEgLTQzIDI0dC00NyAtMTRxLTIxIC0xNyAtMjMuNSAtNDMuNXQxNC41IC00Ny41CnExMDAgLTEyMyAxMDAgLTI4MnQtMTAwIC0yODJxLTE3IC0yMSAtMTQuNSAtNDcuNXQyMy41IC00Mi41cTE4IC0xNSA0MCAtMTV6TTgyNiAxNDVxMjcgMCA0NyAyMHE4NyA5MyA4NyAyMTl0LTg3IDIxOXEtMTggMTkgLTQ1IDIwdC00NiAtMTd0LTIwIC00NC41dDE4IC00Ni41cTUyIC01NyA1MiAtMTMxdC01MiAtMTMxcS0xOSAtMjAgLTE4IC00Ni41dDIwIC00NC41cTIwIC0xNyA0NCAtMTd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MjgiIHVuaWNvZGU9IiYjeGYxYzg7IiAKZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6Ck03NjggNzY4cTUyIDAgOTAgLTM4dDM4IC05MHYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMzg0cS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoMzg0ek0xMjYwIDc2NnEyMCAtOCAyMCAtMzB2LTU3NnEwIC0yMiAtMjAgLTMwcS04IC0yIC0xMiAtMnEtMTQgMCAtMjMgOWwtMjY1IDI2NnY5MGwyNjUgMjY2cTkgOSAyMyA5cTQgMCAxMiAtMnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyOSIgdW5pY29kZT0iJiN4ZjFjOTsiIApkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoKTTQ4MCA3NjhxOCAxMSAyMSAxMi41dDI0IC02LjVsNTEgLTM4cTExIC04IDEyLjUgLTIxdC02LjUgLTI0bC0xODIgLTI0M2wxODIgLTI0M3E4IC0xMSA2LjUgLTI0dC0xMi41IC0yMWwtNTEgLTM4cS0xMSAtOCAtMjQgLTYuNXQtMjEgMTIuNWwtMjI2IDMwMXEtMTQgMTkgMCAzOHpNMTI4MiA0NjdxMTQgLTE5IDAgLTM4bC0yMjYgLTMwMXEtOCAtMTEgLTIxIC0xMi41dC0yNCA2LjVsLTUxIDM4cS0xMSA4IC0xMi41IDIxdDYuNSAyNGwxODIgMjQzCmwtMTgyIDI0M3EtOCAxMSAtNi41IDI0dDEyLjUgMjFsNTEgMzhxMTEgOCAyNCA2LjV0MjEgLTEyLjV6TTY2MiA2cS0xMyAyIC0yMC41IDEzdC01LjUgMjRsMTM4IDgzMXEyIDEzIDEzIDIwLjV0MjQgNS41bDYzIC0xMHExMyAtMiAyMC41IC0xM3Q1LjUgLTI0bC0xMzggLTgzMXEtMiAtMTMgLTEzIC0yMC41dC0yNCAtNS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDMwIiB1bmljb2RlPSImI3hmMWNhOyIgCmQ9Ik0xNDk3IDcwOXYtMTk4cS0xMDEgLTIzIC0xOTggLTIzcS02NSAtMTM2IC0xNjUuNSAtMjcxdC0xODEuNSAtMjE1LjV0LTEyOCAtMTA2LjVxLTgwIC00NSAtMTYyIDNxLTI4IDE3IC02MC41IDQzLjV0LTg1IDgzLjV0LTEwMi41IDEyOC41dC0xMDcuNSAxODR0LTEwNS41IDI0NHQtOTEuNSAzMTQuNXQtNzAuNSAzOTBoMjgzcTI2IC0yMTggNzAgLTM5OC41dDEwNC41IC0zMTd0MTIxLjUgLTIzNS41dDE0MCAtMTk1cTE2OSAxNjkgMjg3IDQwNgpxLTE0MiA3MiAtMjIzIDIyMHQtODEgMzMzcTAgMTkyIDEwNCAzMTQuNXQyODQgMTIyLjVxMTc4IDAgMjczIC0xMDUuNXQ5NSAtMjk3LjVxMCAtMTU5IC01OCAtMjg2cS03IC0xIC0xOS41IC0zdC00NiAtMnQtNjMgNnQtNjIgMjUuNXQtNTAuNSA1MS41cTMxIDEwMyAzMSAxODRxMCA4NyAtMjkgMTMydC03OSA0NXEtNTMgMCAtODUgLTQ5LjV0LTMyIC0xNDAuNXEwIC0xODYgMTA1IC0yOTMuNXQyNjcgLTEwNy41cTYyIDAgMTIxIDE0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDMxIiB1bmljb2RlPSImI3hmMWNiOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMjE2IDM2N2w2MDMgLTQwMnYzNTlsLTMzNCAyMjN6TTE1NCA1MTFsMTkzIDEyOWwtMTkzIDEyOXYtMjU4ek05NzMgLTM1bDYwMyA0MDJsLTI2OSAxODBsLTMzNCAtMjIzdi0zNTl6TTg5NiA0NThsMjcyIDE4MmwtMjcyIDE4MmwtMjcyIC0xODJ6TTQ4NSA3MzNsMzM0IDIyM3YzNTlsLTYwMyAtNDAyek0xNDQ1IDY0MGwxOTMgLTEyOXYyNTh6TTEzMDcgNzMzbDI2OSAxODBsLTYwMyA0MDJ2LTM1OXpNMTc5MiA5MTN2LTU0NgpxMCAtNDEgLTM0IC02NGwtODE5IC01NDZxLTIxIC0xMyAtNDMgLTEzdC00MyAxM2wtODE5IDU0NnEtMzQgMjMgLTM0IDY0djU0NnEwIDQxIDM0IDY0bDgxOSA1NDZxMjEgMTMgNDMgMTN0NDMgLTEzbDgxOSAtNTQ2cTM0IC0yMyAzNCAtNjR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MzIiIHVuaWNvZGU9IiYjeGYxY2M7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xODAwIDc2NHExMTEgLTQ2IDE3OS41IC0xNDUuNXQ2OC41IC0yMjEuNXEwIC0xNjQgLTExOCAtMjgwLjV0LTI4NSAtMTE2LjVxLTQgMCAtMTEuNSAwLjV0LTEwLjUgMC41aC0xMjA5aC0xaC0yaC01cS0xNzAgMTAgLTI4OCAxMjUuNXQtMTE4IDI4MC41cTAgMTEwIDU1IDIwM3QxNDcgMTQ3cS0xMiAzOSAtMTIgODJxMCAxMTUgODIgMTk2dDE5OSA4MXE5NSAwIDE3MiAtNThxNzUgMTU0IDIyMi41IDI0OHQzMjYuNSA5NApxMTY2IDAgMzA2IC04MC41dDIyMS41IC0yMTguNXQ4MS41IC0zMDFxMCAtNiAtMC41IC0xOHQtMC41IC0xOHpNNDY4IDQ5OHEwIC0xMjIgODQgLTE5M3QyMDggLTcxcTEzNyAwIDI0MCA5OXEtMTYgMjAgLTQ3LjUgNTYuNXQtNDMuNSA1MC41cS02NyAtNjUgLTE0NCAtNjVxLTU1IDAgLTkzLjUgMzMuNXQtMzguNSA4Ny41cTAgNTMgMzguNSA4N3Q5MS41IDM0cTQ0IDAgODQuNSAtMjF0NzMgLTU1dDY1IC03NXQ2OSAtODJ0NzcgLTc1dDk3IC01NQp0MTIxLjUgLTIxcTEyMSAwIDIwNC41IDcxLjV0ODMuNSAxOTAuNXEwIDEyMSAtODQgMTkydC0yMDcgNzFxLTE0MyAwIC0yNDEgLTk3bDkzIC0xMDhxNjYgNjQgMTQyIDY0cTUyIDAgOTIgLTMzdDQwIC04NHEwIC01NyAtMzcgLTkxLjV0LTk0IC0zNC41cS00MyAwIC04Mi41IDIxdC03MiA1NXQtNjUuNSA3NXQtNjkuNSA4MnQtNzcuNSA3NXQtOTYuNSA1NXQtMTE4LjUgMjFxLTEyMiAwIC0yMDcgLTcwLjV0LTg1IC0xODkuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzMyIgdW5pY29kZT0iJiN4ZjFjZDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXpNODk2IDE0MDhxLTE5MCAwIC0zNjEgLTkwbDE5NCAtMTk0cTgyIDI4IDE2NyAyOHQxNjcgLTI4bDE5NCAxOTRxLTE3MSA5MCAtMzYxIDkwek0yMTggMjc5bDE5NCAxOTQKcS0yOCA4MiAtMjggMTY3dDI4IDE2N2wtMTk0IDE5NHEtOTAgLTE3MSAtOTAgLTM2MXQ5MCAtMzYxek04OTYgLTEyOHExOTAgMCAzNjEgOTBsLTE5NCAxOTRxLTgyIC0yOCAtMTY3IC0yOHQtMTY3IDI4bC0xOTQgLTE5NHExNzEgLTkwIDM2MSAtOTB6TTg5NiAyNTZxMTU5IDAgMjcxLjUgMTEyLjV0MTEyLjUgMjcxLjV0LTExMi41IDI3MS41dC0yNzEuNSAxMTIuNXQtMjcxLjUgLTExMi41dC0xMTIuNSAtMjcxLjV0MTEyLjUgLTI3MS41CnQyNzEuNSAtMTEyLjV6TTEzODAgNDczbDE5NCAtMTk0cTkwIDE3MSA5MCAzNjF0LTkwIDM2MWwtMTk0IC0xOTRxMjggLTgyIDI4IC0xNjd0LTI4IC0xNjd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MzQiIHVuaWNvZGU9IiYjeGYxY2U7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzYwIDY0MHEwIC0xNzYgLTY4LjUgLTMzNnQtMTg0IC0yNzUuNXQtMjc1LjUgLTE4NHQtMzM2IC02OC41dC0zMzYgNjguNXQtMjc1LjUgMTg0dC0xODQgMjc1LjV0LTY4LjUgMzM2cTAgMjEzIDk3IDM5OC41dDI2NSAzMDUuNXQzNzQgMTUxdi0yMjhxLTIyMSAtNDUgLTM2Ni41IC0yMjF0LTE0NS41IC00MDZxMCAtMTMwIDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNQp0MTM2LjUgMjA0dDUxIDI0OC41cTAgMjMwIC0xNDUuNSA0MDZ0LTM2Ni41IDIyMXYyMjhxMjA2IC0zMSAzNzQgLTE1MXQyNjUgLTMwNS41dDk3IC0zOTguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFEMCIgdW5pY29kZT0iJiN4ZjFkMDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE5IDY2MnE4IDIxNyAxMTYgNDA2dDMwNSAzMThoNXEwIC0xIC0xIC0zcS04IC04IC0yOCAtMzMuNXQtNTIgLTc2LjV0LTYwIC0xMTAuNXQtNDQuNSAtMTM1LjV0LTE0IC0xNTAuNXQzOSAtMTU3LjV0MTA4LjUgLTE1NHE1MCAtNTAgMTAyIC02OS41dDkwLjUgLTExLjV0NjkuNSAyMy41dDQ3IDMyLjVsMTYgMTZxMzkgNTEgNTMgMTE2LjV0Ni41IDEyMi41dC0yMSAxMDd0LTI2LjUgODBsLTE0IDI5cS0xMCAyNSAtMzAuNSA0OS41dC00MyA0MQp0LTQzLjUgMjkuNXQtMzUgMTlsLTEzIDZsMTA0IDExNXEzOSAtMTcgNzggLTUydDU5IC02MWwxOSAtMjdxMSA0OCAtMTguNSAxMDMuNXQtNDAuNSA4Ny41bC0yMCAzMWwxNjEgMTgzbDE2MCAtMTgxcS0zMyAtNDYgLTUyLjUgLTEwMi41dC0yMi41IC05MC41bC00IC0zM3EyMiAzNyA2MS41IDcyLjV0NjcuNSA1Mi41bDI4IDE3bDEwMyAtMTE1cS00NCAtMTQgLTg1IC01MHQtNjAgLTY1bC0xOSAtMjlxLTMxIC01NiAtNDggLTEzMy41dC03IC0xNzAKdDU3IC0xNTYuNXEzMyAtNDUgNzcuNSAtNjAuNXQ4NSAtNS41dDc2IDI2LjV0NTcuNSAzMy41bDIxIDE2cTYwIDUzIDk2LjUgMTE1dDQ4LjUgMTIxLjV0MTAgMTIxLjV0LTE4IDExOHQtMzcgMTA3LjV0LTQ1LjUgOTN0LTQ1IDcydC0zNC41IDQ3LjVsLTEzIDE3cS0xNCAxMyAtNyAxM2wxMCAtM3E0MCAtMjkgNjIuNSAtNDZ0NjIgLTUwdDY0IC01OHQ1OC41IC02NXQ1NS41IC03N3Q0NS41IC04OHQzOCAtMTAzdDIzLjUgLTExN3QxMC41IC0xMzYKcTMgLTI1OSAtMTA4IC00NjV0LTMxMiAtMzIxdC00NTYgLTExNXEtMTg1IDAgLTM1MSA3NHQtMjgzLjUgMTk4dC0xODQgMjkzdC02MC41IDM1M3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFEMSIgdW5pY29kZT0iJiN4ZjFkMTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg3NCAtMTAydi02NnEtMjA4IDYgLTM4NSAxMDkuNXQtMjgzIDI3NS41bDU4IDM0cTI5IC00OSA3MyAtOTlsNjUgNTdxMTQ4IC0xNjggMzY4IC0yMTJsLTE3IC04NnE2NSAtMTIgMTIxIC0xM3pNMjc2IDQyOGwtODMgLTI4cTIyIC02MCA0OSAtMTEybC01NyAtMzNxLTk4IDE4MCAtOTggMzg1dDk4IDM4NWw1NyAtMzNxLTMwIC01NiAtNDkgLTExMmw4MiAtMjhxLTM1IC0xMDAgLTM1IC0yMTJxMCAtMTA5IDM2IC0yMTJ6TTE1MjggMjUxCmw1OCAtMzRxLTEwNiAtMTcyIC0yODMgLTI3NS41dC0zODUgLTEwOS41djY2cTU2IDEgMTIxIDEzbC0xNyA4NnEyMjAgNDQgMzY4IDIxMmw2NSAtNTdxNDQgNTAgNzMgOTl6TTEzNzcgODA1bC0yMzMgLTgwcTE0IC00MiAxNCAtODV0LTE0IC04NWwyMzIgLTgwcS0zMSAtOTIgLTk4IC0xNjlsLTE4NSAxNjJxLTU3IC02NyAtMTQ3IC04NWw0OCAtMjQxcS01MiAtMTAgLTk4IC0xMHQtOTggMTBsNDggMjQxcS05MCAxOCAtMTQ3IDg1bC0xODUgLTE2MgpxLTY3IDc3IC05OCAxNjlsMjMyIDgwcS0xNCA0MiAtMTQgODV0MTQgODVsLTIzMyA4MHEzMyA5MyA5OSAxNjlsMTg1IC0xNjJxNTkgNjggMTQ3IDg2bC00OCAyNDBxNDQgMTAgOTggMTB0OTggLTEwbC00OCAtMjQwcTg4IC0xOCAxNDcgLTg2bDE4NSAxNjJxNjYgLTc2IDk5IC0xNjl6TTg3NCAxNDQ4di02NnEtNjUgLTIgLTEyMSAtMTNsMTcgLTg2cS0yMjAgLTQyIC0zNjggLTIxMWwtNjUgNTZxLTM4IC00MiAtNzMgLTk4bC01NyAzMwpxMTA2IDE3MiAyODIgMjc1LjV0Mzg1IDEwOS41ek0xNzA1IDY0MHEwIC0yMDUgLTk4IC0zODVsLTU3IDMzcTI3IDUyIDQ5IDExMmwtODMgMjhxMzYgMTAzIDM2IDIxMnEwIDExMiAtMzUgMjEybDgyIDI4cS0xOSA1NiAtNDkgMTEybDU3IDMzcTk4IC0xODAgOTggLTM4NXpNMTU4NSAxMDYzbC01NyAtMzNxLTM1IDU2IC03MyA5OGwtNjUgLTU2cS0xNDggMTY5IC0zNjggMjExbDE3IDg2cS01NiAxMSAtMTIxIDEzdjY2cTIwOSAtNiAzODUgLTEwOS41CnQyODIgLTI3NS41ek0xNzQ4IDY0MHEwIDE3MyAtNjcuNSAzMzF0LTE4MS41IDI3MnQtMjcyIDE4MS41dC0zMzEgNjcuNXQtMzMxIC02Ny41dC0yNzIgLTE4MS41dC0xODEuNSAtMjcydC02Ny41IC0zMzF0NjcuNSAtMzMxdDE4MS41IC0yNzJ0MjcyIC0xODEuNXQzMzEgLTY3LjV0MzMxIDY3LjV0MjcyIDE4MS41dDE4MS41IDI3MnQ2Ny41IDMzMXpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2IC0xOTF0LTM0OCAtNzEKdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxRDIiIHVuaWNvZGU9IiYjeGYxZDI7IiAKZD0iTTU4MiAyMjhxMCAtNjYgLTkzIC02NnEtMTA3IDAgLTEwNyA2M3EwIDY0IDk4IDY0cTEwMiAwIDEwMiAtNjF6TTU0NiA2OTRxMCAtODUgLTc0IC04NXEtNzcgMCAtNzcgODRxMCA5MCA3NyA5MHEzNiAwIDU1IC0yNS41dDE5IC02My41ek03MTIgNzY5djEyNXEtNzggLTI5IC0xMzUgLTI5cS01MCAyOSAtMTEwIDI5cS04NiAwIC0xNDUgLTU3dC01OSAtMTQzcTAgLTUwIDI5LjUgLTEwMnQ3My41IC02N3YtM3EtMzggLTE3IC0zOCAtODUKcTAgLTUzIDQxIC03N3YtM3EtMTEzIC0zNyAtMTEzIC0xMzlxMCAtNDUgMjAgLTc4LjV0NTQgLTUxdDcyIC0yNS41dDgxIC04cTIyNCAwIDIyNCAxODhxMCA2NyAtNDggOTl0LTEyNiA0NnEtMjcgNSAtNTEuNSAyMC41dC0yNC41IDM5LjVxMCA0NCA0OSA1MnE3NyAxNSAxMjIgNzB0NDUgMTM0cTAgMjQgLTEwIDUycTM3IDkgNDkgMTN6TTc3MSAzNTBoMTM3cS0yIDI3IC0yIDgydjM4N3EwIDQ2IDIgNjloLTEzN3EzIC0yMyAzIC03MXYtMzkyCnEwIC01MCAtMyAtNzV6TTEyODAgMzY2djEyMXEtMzAgLTIxIC02OCAtMjFxLTUzIDAgLTUzIDgydjIyNWg1MnE5IDAgMjYuNSAtMXQyNi41IC0xdjExN2gtMTA1cTAgODIgMyAxMDJoLTE0MHE0IC0yNCA0IC01NXYtNDdoLTYwdi0xMTdxMzYgMyAzNyAzcTMgMCAxMSAtMC41dDEyIC0wLjV2LTJoLTJ2LTIxN3EwIC0zNyAyLjUgLTY0dDExLjUgLTU2LjV0MjQuNSAtNDguNXQ0My41IC0zMXQ2NiAtMTJxNjQgMCAxMDggMjR6TTkyNCAxMDcyCnEwIDM2IC0yNCA2My41dC02MCAyNy41dC02MC41IC0yN3QtMjQuNSAtNjRxMCAtMzYgMjUgLTYyLjV0NjAgLTI2LjV0NTkuNSAyN3QyNC41IDYyek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzOCIgdW5pY29kZT0iJiN4ZjFkMzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTU5NSAyMnEwIDEwMCAtMTY1IDEwMHEtMTU4IDAgLTE1OCAtMTA0cTAgLTEwMSAxNzIgLTEwMXExNTEgMCAxNTEgMTA1ek01MzYgNzc3cTAgNjEgLTMwIDEwMnQtODkgNDFxLTEyNCAwIC0xMjQgLTE0NXEwIC0xMzUgMTI0IC0xMzVxMTE5IDAgMTE5IDEzN3pNODA1IDExMDF2LTIwMnEtMzYgLTEyIC03OSAtMjJxMTYgLTQzIDE2IC04NHEwIC0xMjcgLTczIC0yMTYuNXQtMTk3IC0xMTIuNXEtNDAgLTggLTU5LjUgLTI3dC0xOS41IC01OApxMCAtMzEgMjIuNSAtNTEuNXQ1OCAtMzJ0NzguNSAtMjJ0ODYgLTI1LjV0NzguNSAtMzcuNXQ1OCAtNjR0MjIuNSAtOTguNXEwIC0zMDQgLTM2MyAtMzA0cS02OSAwIC0xMzAgMTIuNXQtMTE2IDQxdC04Ny41IDgydC0zMi41IDEyNy41cTAgMTY1IDE4MiAyMjV2NHEtNjcgNDEgLTY3IDEyNnEwIDEwOSA2MyAxMzd2NHEtNzIgMjQgLTExOS41IDEwOC41dC00Ny41IDE2NS41cTAgMTM5IDk1IDIzMS41dDIzNSA5Mi41cTk2IDAgMTc4IC00NwpxOTggMCAyMTggNDd6TTExMjMgMjIwaC0yMjJxNCA0NSA0IDEzNHY2MDlxMCA5NCAtNCAxMjhoMjIycS00IC0zMyAtNCAtMTI0di02MTNxMCAtODkgNCAtMTM0ek0xNzI0IDQ0MnYtMTk2cS03MSAtMzkgLTE3NCAtMzlxLTYyIDAgLTEwNyAyMHQtNzAgNTB0LTM5LjUgNzh0LTE4LjUgOTJ0LTQgMTAzdjM1MWgydjRxLTcgMCAtMTkgMXQtMTggMXEtMjEgMCAtNTkgLTZ2MTkwaDk2djc2cTAgNTQgLTYgODloMjI3cS02IC00MSAtNiAtMTY1aDE3MQp2LTE5MHEtMTUgMCAtNDMuNSAydC00Mi41IDJoLTg1di0zNjVxMCAtMTMxIDg3IC0xMzFxNjEgMCAxMDkgMzN6TTExNDggMTM4OXEwIC01OCAtMzkgLTEwMS41dC05NiAtNDMuNXEtNTggMCAtOTggNDMuNXQtNDAgMTAxLjVxMCA1OSAzOS41IDEwM3Q5OC41IDQ0cTU4IDAgOTYuNSAtNDQuNXQzOC41IC0xMDIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzOSIgdW5pY29kZT0iJiN4ZjFkNDsiIApkPSJNODA5IDUzMmwyNjYgNDk5aC0xMTJsLTE1NyAtMzEycS0yNCAtNDggLTQ0IC05MmwtNDIgOTJsLTE1NSAzMTJoLTEyMGwyNjMgLTQ5M3YtMzI0aDEwMXYzMTh6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUQ1IiB1bmljb2RlPSImI3hmMWQ1OyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNODQyIDk2NHEwIC04MCAtNTcgLTEzNi41dC0xMzYgLTU2LjVxLTYwIDAgLTExMSAzNXEtNjIgLTY3IC0xMTUgLTE0NnEtMjQ3IC0zNzEgLTIwMiAtODU5cTEgLTIyIC0xMi41IC0zOC41dC0zNC41IC0xOC41aC01cS0yMCAwIC0zNSAxMy41dC0xNyAzMy41cS0xNCAxMjYgLTMuNSAyNDcuNXQyOS41IDIxN3Q1NCAxODZ0NjkgMTU1LjV0NzQgMTI1cTYxIDkwIDEzMiAxNjVxLTE2IDM1IC0xNiA3N3EwIDgwIDU2LjUgMTM2LjV0MTM2LjUgNTYuNQp0MTM2LjUgLTU2LjV0NTYuNSAtMTM2LjV6TTEyMjMgOTUzcTAgLTE1OCAtNzggLTI5MnQtMjEyLjUgLTIxMnQtMjkyLjUgLTc4cS02NCAwIC0xMzEgMTRxLTIxIDUgLTMyLjUgMjMuNXQtNi41IDM5LjVxNSAyMCAyMyAzMS41dDM5IDcuNXE1MSAtMTMgMTA4IC0xM3E5NyAwIDE4NiAzOHQxNTMgMTAydDEwMiAxNTN0MzggMTg2dC0zOCAxODZ0LTEwMiAxNTN0LTE1MyAxMDJ0LTE4NiAzOHQtMTg2IC0zOHQtMTUzIC0xMDJ0LTEwMiAtMTUzCnQtMzggLTE4NnEwIC0xMTQgNTIgLTIxOHExMCAtMjAgMy41IC00MHQtMjUuNSAtMzB0LTM5LjUgLTN0LTMwLjUgMjZxLTY0IDEyMyAtNjQgMjY1cTAgMTE5IDQ2LjUgMjI3dDEyNC41IDE4NnQxODYgMTI0dDIyNiA0NnExNTggMCAyOTIuNSAtNzh0MjEyLjUgLTIxMi41dDc4IC0yOTIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFENiIgdW5pY29kZT0iJiN4ZjFkNjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTI3MCA3MzBxLTggMTkgLTggNTJxMCAyMCAxMSA0OXQyNCA0NXEtMSAyMiA3LjUgNTN0MjIuNSA0M3EwIDEzOSA5Mi41IDI4OC41dDIxNy41IDIwOS41cTEzOSA2NiAzMjQgNjZxMTMzIDAgMjY2IC01NXE0OSAtMjEgOTAgLTQ4dDcxIC01NnQ1NSAtNjh0NDIgLTc0dDMyLjUgLTg0LjV0MjUuNSAtODkuNXQyMiAtOThsMSAtNXE1NSAtODMgNTUgLTE1MHEwIC0xNCAtOSAtNDB0LTkgLTM4cTAgLTEgMS41IC0zLjV0My41IC01dDIgLTMuNQpxNzcgLTExNCAxMjAuNSAtMjE0LjV0NDMuNSAtMjA4LjVxMCAtNDMgLTE5LjUgLTEwMHQtNTUuNSAtNTdxLTkgMCAtMTkuNSA3LjV0LTE5IDE3LjV0LTE5IDI2dC0xNiAyNi41dC0xMy41IDI2dC05IDE3LjVxLTEgMSAtMyAxbC01IC00cS01OSAtMTU0IC0xMzIgLTIyM3EyMCAtMjAgNjEuNSAtMzguNXQ2OSAtNDEuNXQzNS41IC02NXEtMiAtNCAtNCAtMTZ0LTcgLTE4cS02NCAtOTcgLTMwMiAtOTdxLTUzIDAgLTExMC41IDl0LTk4IDIwCnQtMTA0LjUgMzBxLTE1IDUgLTIzIDdxLTE0IDQgLTQ2IDQuNXQtNDAgMS41cS00MSAtNDUgLTEyNy41IC02NXQtMTY4LjUgLTIwcS0zNSAwIC02OSAxLjV0LTkzIDl0LTEwMSAyMC41dC03NC41IDQwdC0zMi41IDY0cTAgNDAgMTAgNTkuNXQ0MSA0OC41cTExIDIgNDAuNSAxM3Q0OS41IDEycTQgMCAxNCAycTIgMiAyIDRsLTIgM3EtNDggMTEgLTEwOCAxMDUuNXQtNzMgMTU2LjVsLTUgM3EtNCAwIC0xMiAtMjBxLTE4IC00MSAtNTQuNSAtNzQuNQp0LTc3LjUgLTM3LjVoLTFxLTQgMCAtNiA0LjV0LTUgNS41cS0yMyA1NCAtMjMgMTAwcTAgMjc1IDI1MiA0NjZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxRDciIHVuaWNvZGU9IiYjeGYxZDc7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik01ODAgMTA3NXEwIDQxIC0yNSA2NnQtNjYgMjVxLTQzIDAgLTc2IC0yNS41dC0zMyAtNjUuNXEwIC0zOSAzMyAtNjQuNXQ3NiAtMjUuNXE0MSAwIDY2IDI0LjV0MjUgNjUuNXpNMTMyMyA1NjhxMCAyOCAtMjUuNSA1MHQtNjUuNSAyMnEtMjcgMCAtNDkuNSAtMjIuNXQtMjIuNSAtNDkuNXEwIC0yOCAyMi41IC01MC41dDQ5LjUgLTIyLjVxNDAgMCA2NS41IDIydDI1LjUgNTF6TTEwODcgMTA3NXEwIDQxIC0yNC41IDY2dC02NS41IDI1CnEtNDMgMCAtNzYgLTI1LjV0LTMzIC02NS41cTAgLTM5IDMzIC02NC41dDc2IC0yNS41cTQxIDAgNjUuNSAyNC41dDI0LjUgNjUuNXpNMTcyMiA1NjhxMCAyOCAtMjYgNTB0LTY1IDIycS0yNyAwIC00OS41IC0yMi41dC0yMi41IC00OS41cTAgLTI4IDIyLjUgLTUwLjV0NDkuNSAtMjIuNXEzOSAwIDY1IDIydDI2IDUxek0xNDU2IDk2NXEtMzEgNCAtNzAgNHEtMTY5IDAgLTMxMSAtNzd0LTIyMy41IC0yMDguNXQtODEuNSAtMjg3LjUKcTAgLTc4IDIzIC0xNTJxLTM1IC0zIC02OCAtM3EtMjYgMCAtNTAgMS41dC01NSA2LjV0LTQ0LjUgN3QtNTQuNSAxMC41dC01MCAxMC41bC0yNTMgLTEyN2w3MiAyMThxLTI5MCAyMDMgLTI5MCA0OTBxMCAxNjkgOTcuNSAzMTF0MjY0IDIyMy41dDM2My41IDgxLjVxMTc2IDAgMzMyLjUgLTY2dDI2MiAtMTgyLjV0MTM2LjUgLTI2MC41ek0yMDQ4IDQwNHEwIC0xMTcgLTY4LjUgLTIyMy41dC0xODUuNSAtMTkzLjVsNTUgLTE4MWwtMTk5IDEwOQpxLTE1MCAtMzcgLTIxOCAtMzdxLTE2OSAwIC0zMTEgNzAuNXQtMjIzLjUgMTkxLjV0LTgxLjUgMjY0dDgxLjUgMjY0dDIyMy41IDE5MS41dDMxMSA3MC41cTE2MSAwIDMwMyAtNzAuNXQyMjcuNSAtMTkydDg1LjUgLTI2My41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQzIiB1bmljb2RlPSImI3hmMWQ4OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc2NCAxNTI1cTMzIC0yNCAyNyAtNjRsLTI1NiAtMTUzNnEtNSAtMjkgLTMyIC00NXEtMTQgLTggLTMxIC04cS0xMSAwIC0yNCA1bC00NTMgMTg1bC0yNDIgLTI5NXEtMTggLTIzIC00OSAtMjNxLTEzIDAgLTIyIDRxLTE5IDcgLTMwLjUgMjMuNXQtMTEuNSAzNi41djM0OWw4NjQgMTA1OWwtMTA2OSAtOTI1bC0zOTUgMTYycS0zNyAxNCAtNDAgNTVxLTIgNDAgMzIgNTlsMTY2NCA5NjBxMTUgOSAzMiA5cTIwIDAgMzYgLTExeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ0IiB1bmljb2RlPSImI3hmMWQ5OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc2NCAxNTI1cTMzIC0yNCAyNyAtNjRsLTI1NiAtMTUzNnEtNSAtMjkgLTMyIC00NXEtMTQgLTggLTMxIC04cS0xMSAwIC0yNCA1bC01MjcgMjE1bC0yOTggLTMyN3EtMTggLTIxIC00NyAtMjFxLTE0IDAgLTIzIDRxLTE5IDcgLTMwIDIzLjV0LTExIDM2LjV2NDUybC00NzIgMTkzcS0zNyAxNCAtNDAgNTVxLTMgMzkgMzIgNTlsMTY2NCA5NjBxMzUgMjEgNjggLTJ6TTE0MjIgMjZsMjIxIDEzMjNsLTE0MzQgLTgyN2wzMzYgLTEzNwpsODYzIDYzOWwtNDc4IC03OTd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NDUiIHVuaWNvZGU9IiYjeGYxZGE7IiAKZD0iTTE1MzYgNjQwcTAgLTE1NiAtNjEgLTI5OHQtMTY0IC0yNDV0LTI0NSAtMTY0dC0yOTggLTYxcS0xNzIgMCAtMzI3IDcyLjV0LTI2NCAyMDQuNXEtNyAxMCAtNi41IDIyLjV0OC41IDIwLjVsMTM3IDEzOHExMCA5IDI1IDlxMTYgLTIgMjMgLTEycTczIC05NSAxNzkgLTE0N3QyMjUgLTUycTEwNCAwIDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5LjUgMTYzLjUKdC0xNjMuNSAxMDkuNXQtMTk4LjUgNDAuNXEtOTggMCAtMTg4IC0zNS41dC0xNjAgLTEwMS41bDEzNyAtMTM4cTMxIC0zMCAxNCAtNjlxLTE3IC00MCAtNTkgLTQwaC00NDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY0NDhxMCA0MiA0MCA1OXEzOSAxNyA2OSAtMTRsMTMwIC0xMjlxMTA3IDEwMSAyNDQuNSAxNTYuNXQyODQuNSA1NS41cTE1NiAwIDI5OCAtNjF0MjQ1IC0xNjR0MTY0IC0yNDV0NjEgLTI5OHpNODk2IDkyOHYtNDQ4cTAgLTE0IC05IC0yMwp0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMjI0djM1MnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ2IiB1bmljb2RlPSImI3hmMWRiOyIgCmQ9Ik03NjggMTI4MHEtMTMwIDAgLTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV0LTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDMKdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ0NyIgdW5pY29kZT0iJiN4ZjFkYzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE2ODIgLTEyOHEtNDQgMCAtMTMyLjUgMy41dC0xMzMuNSAzLjVxLTQ0IDAgLTEzMiAtMy41dC0xMzIgLTMuNXEtMjQgMCAtMzcgMjAuNXQtMTMgNDUuNXEwIDMxIDE3IDQ2dDM5IDE3dDUxIDd0NDUgMTVxMzMgMjEgMzMgMTQwbC0xIDM5MXEwIDIxIC0xIDMxcS0xMyA0IC01MCA0aC02NzVxLTM4IDAgLTUxIC00cS0xIC0xMCAtMSAtMzFsLTEgLTM3MXEwIC0xNDIgMzcgLTE2NHExNiAtMTAgNDggLTEzdDU3IC0zLjV0NDUgLTE1CnQyMCAtNDUuNXEwIC0yNiAtMTIuNSAtNDh0LTM2LjUgLTIycS00NyAwIC0xMzkuNSAzLjV0LTEzOC41IDMuNXEtNDMgMCAtMTI4IC0zLjV0LTEyNyAtMy41cS0yMyAwIC0zNS41IDIxdC0xMi41IDQ1cTAgMzAgMTUuNSA0NXQzNiAxNy41dDQ3LjUgNy41dDQyIDE1cTMzIDIzIDMzIDE0M2wtMSA1N3Y4MTNxMCAzIDAuNSAyNnQwIDM2LjV0LTEuNSAzOC41dC0zLjUgNDJ0LTYuNSAzNi41dC0xMSAzMS41dC0xNiAxOHEtMTUgMTAgLTQ1IDEydC01MyAyCnQtNDEgMTR0LTE4IDQ1cTAgMjYgMTIgNDh0MzYgMjJxNDYgMCAxMzguNSAtMy41dDEzOC41IC0zLjVxNDIgMCAxMjYuNSAzLjV0MTI2LjUgMy41cTI1IDAgMzcuNSAtMjJ0MTIuNSAtNDhxMCAtMzAgLTE3IC00My41dC0zOC41IC0xNC41dC00OS41IC00dC00MyAtMTNxLTM1IC0yMSAtMzUgLTE2MGwxIC0zMjBxMCAtMjEgMSAtMzJxMTMgLTMgMzkgLTNoNjk5cTI1IDAgMzggM3ExIDExIDEgMzJsMSAzMjBxMCAxMzkgLTM1IDE2MApxLTE4IDExIC01OC41IDEyLjV0LTY2IDEzdC0yNS41IDQ5LjVxMCAyNiAxMi41IDQ4dDM3LjUgMjJxNDQgMCAxMzIgLTMuNXQxMzIgLTMuNXE0MyAwIDEyOSAzLjV0MTI5IDMuNXEyNSAwIDM3LjUgLTIydDEyLjUgLTQ4cTAgLTMwIC0xNy41IC00NHQtNDAgLTE0LjV0LTUxLjUgLTN0LTQ0IC0xMi41cS0zNSAtMjMgLTM1IC0xNjFsMSAtOTQzcTAgLTExOSAzNCAtMTQwcTE2IC0xMCA0NiAtMTMuNXQ1My41IC00LjV0NDEuNSAtMTUuNXQxOCAtNDQuNQpxMCAtMjYgLTEyIC00OHQtMzYgLTIyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ4IiB1bmljb2RlPSImI3hmMWRkOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMTI3OCAxMzQ3di03M3EwIC0yOSAtMTguNSAtNjF0LTQyLjUgLTMycS01MCAwIC01NCAtMXEtMjYgLTYgLTMyIC0zMXEtMyAtMTEgLTMgLTY0di0xMTUycTAgLTI1IC0xOCAtNDN0LTQzIC0xOGgtMTA4cS0yNSAwIC00MyAxOHQtMTggNDN2MTIxOGgtMTQzdi0xMjE4cTAgLTI1IC0xNy41IC00M3QtNDMuNSAtMThoLTEwOHEtMjYgMCAtNDMuNSAxOHQtMTcuNSA0M3Y0OTZxLTE0NyAxMiAtMjQ1IDU5cS0xMjYgNTggLTE5MiAxNzkKcS02NCAxMTcgLTY0IDI1OXEwIDE2NiA4OCAyODZxODggMTE4IDIwOSAxNTlxMTExIDM3IDQxNyAzN2g0NzlxMjUgMCA0MyAtMTh0MTggLTQzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ5IiB1bmljb2RlPSImI3hmMWRlOyIgCmQ9Ik0zNTIgMTI4di0xMjhoLTM1MnYxMjhoMzUyek03MDQgMjU2cTI2IDAgNDUgLTE5dDE5IC00NXYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2MjU2cTAgMjYgMTkgNDV0NDUgMTloMjU2ek04NjQgNjQwdi0xMjhoLTg2NHYxMjhoODY0ek0yMjQgMTE1MnYtMTI4aC0yMjR2MTI4aDIyNHpNMTUzNiAxMjh2LTEyOGgtNzM2djEyOGg3MzZ6TTU3NiAxMjgwcTI2IDAgNDUgLTE5dDE5IC00NXYtMjU2CnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnpNMTIxNiA3NjhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0yNTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXYyNTZxMCAyNiAxOSA0NXQ0NSAxOWgyNTZ6TTE1MzYgNjQwdi0xMjhoLTIyNHYxMjhoMjI0ek0xNTM2IDExNTJ2LTEyOGgtODY0djEyOGg4NjR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxRTAiIHVuaWNvZGU9IiYjeGYxZTA7IiAKZD0iTTEyMTYgNTEycTEzMyAwIDIyNi41IC05My41dDkzLjUgLTIyNi41dC05My41IC0yMjYuNXQtMjI2LjUgLTkzLjV0LTIyNi41IDkzLjV0LTkzLjUgMjI2LjVxMCAxMiAyIDM0bC0zNjAgMTgwcS05MiAtODYgLTIxOCAtODZxLTEzMyAwIC0yMjYuNSA5My41dC05My41IDIyNi41dDkzLjUgMjI2LjV0MjI2LjUgOTMuNXExMjYgMCAyMTggLTg2bDM2MCAxODBxLTIgMjIgLTIgMzRxMCAxMzMgOTMuNSAyMjYuNXQyMjYuNSA5My41CnQyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXQtOTMuNSAtMjI2LjV0LTIyNi41IC05My41cS0xMjYgMCAtMjE4IDg2bC0zNjAgLTE4MHEyIC0yMiAyIC0zNHQtMiAtMzRsMzYwIC0xODBxOTIgODYgMjE4IDg2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDUxIiB1bmljb2RlPSImI3hmMWUxOyIgCmQ9Ik0xMjgwIDM0MXEwIDg4IC02Mi41IDE1MXQtMTUwLjUgNjNxLTg0IDAgLTE0NSAtNThsLTI0MSAxMjBxMiAxNiAyIDIzdC0yIDIzbDI0MSAxMjBxNjEgLTU4IDE0NSAtNThxODggMCAxNTAuNSA2M3Q2Mi41IDE1MXQtNjIuNSAxNTAuNXQtMTUwLjUgNjIuNXQtMTUxIC02Mi41dC02MyAtMTUwLjVxMCAtNyAyIC0yM2wtMjQxIC0xMjBxLTYyIDU3IC0xNDUgNTdxLTg4IDAgLTE1MC41IC02Mi41dC02Mi41IC0xNTAuNXQ2Mi41IC0xNTAuNQp0MTUwLjUgLTYyLjVxODMgMCAxNDUgNTdsMjQxIC0xMjBxLTIgLTE2IC0yIC0yM3EwIC04OCA2MyAtMTUwLjV0MTUxIC02Mi41dDE1MC41IDYyLjV0NjIuNSAxNTAuNXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTIiIHVuaWNvZGU9IiYjeGYxZTI7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik01NzEgOTQ3cS0xMCAyNSAtMzQgMzV0LTQ5IDBxLTEwOCAtNDQgLTE5MSAtMTI3dC0xMjcgLTE5MXEtMTAgLTI1IDAgLTQ5dDM1IC0zNHExMyAtNSAyNCAtNXE0MiAwIDYwIDQwcTM0IDg0IDk4LjUgMTQ4LjV0MTQ4LjUgOTguNXEyNSAxMSAzNSAzNXQwIDQ5ek0xNTEzIDEzMDNsNDYgLTQ2bC0yNDQgLTI0M2w2OCAtNjhxMTkgLTE5IDE5IC00NS41dC0xOSAtNDUuNWwtNjQgLTY0cTg5IC0xNjEgODkgLTM0M3EwIC0xNDMgLTU1LjUgLTI3My41CnQtMTUwIC0yMjV0LTIyNSAtMTUwdC0yNzMuNSAtNTUuNXQtMjczLjUgNTUuNXQtMjI1IDE1MHQtMTUwIDIyNXQtNTUuNSAyNzMuNXQ1NS41IDI3My41dDE1MCAyMjV0MjI1IDE1MHQyNzMuNSA1NS41cTE4MiAwIDM0MyAtODlsNjQgNjRxMTkgMTkgNDUuNSAxOXQ0NS41IC0xOWw2OCAtNjh6TTE1MjEgMTM1OXEtMTAgLTEwIC0yMiAtMTBxLTEzIDAgLTIzIDEwbC05MSA5MHEtOSAxMCAtOSAyM3Q5IDIzcTEwIDkgMjMgOXQyMyAtOWw5MCAtOTEKcTEwIC05IDEwIC0yMi41dC0xMCAtMjIuNXpNMTc1MSAxMTI5cS0xMSAtOSAtMjMgLTl0LTIzIDlsLTkwIDkxcS0xMCA5IC0xMCAyMi41dDEwIDIyLjVxOSAxMCAyMi41IDEwdDIyLjUgLTEwbDkxIC05MHE5IC0xMCA5IC0yM3QtOSAtMjN6TTE3OTIgMTMxMnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Q5IDIzdDIzIDloOTZxMTQgMCAyMyAtOXQ5IC0yM3pNMTYwMCAxNTA0di05NnEwIC0xNCAtOSAtMjN0LTIzIC05CnQtMjMgOXQtOSAyM3Y5NnEwIDE0IDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNMTc1MSAxNDQ5bC05MSAtOTBxLTEwIC0xMCAtMjIgLTEwcS0xMyAwIC0yMyAxMHEtMTAgOSAtMTAgMjIuNXQxMCAyMi41bDkwIDkxcTEwIDkgMjMgOXQyMyAtOXE5IC0xMCA5IC0yM3QtOSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTMiIHVuaWNvZGU9IiYjeGYxZTM7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik02MDkgNzIwbDI4NyAyMDhsMjg3IC0yMDhsLTEwOSAtMzM2aC0zNTV6TTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXpNMTUxNSAxODZxMTQ5IDIwMyAxNDkgNDU0djNsLTEwMiAtODlsLTI0MCAyMjRsNjMgMzIzCmwxMzQgLTEycS0xNTAgMjA2IC0zODkgMjgybDUzIC0xMjRsLTI4NyAtMTU5bC0yODcgMTU5bDUzIDEyNHEtMjM5IC03NiAtMzg5IC0yODJsMTM1IDEybDYyIC0zMjNsLTI0MCAtMjI0bC0xMDIgODl2LTNxMCAtMjUxIDE0OSAtNDU0bDMwIDEzMmwzMjYgLTQwbDEzOSAtMjk4bC0xMTYgLTY5cTExNyAtMzkgMjQwIC0zOXQyNDAgMzlsLTExNiA2OWwxMzkgMjk4bDMyNiA0MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ1NCIgdW5pY29kZT0iJiN4ZjFlNDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTQ0OCAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0yNTYgNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNODMyIDIyNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyMwp2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek02NDAgNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNNjYgNzY4cS0yOCAwIC00NyAxOXQtMTkgNDZ2MTI5aDUxNHYtMTI5cTAgLTI3IC0xOSAtNDZ0LTQ2IC0xOWgtMzgzek0xMjE2IDIyNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MgpxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xMDI0IDYwOHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTE2MDAgMjI0di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yMwp6TTE0MDggNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiAxMDE2di0xM2gtNTE0djEwcTAgMTA0IC0zODIgMTAycS0zODIgLTEgLTM4MiAtMTAydi0xMGgtNTE0djEzcTAgMTcgOC41IDQzdDM0IDY0dDY1LjUgNzUuNXQxMTAuNSA3NnQxNjAgNjcuNXQyMjQgNDcuNXQyOTMuNSAxOC41dDI5MyAtMTguNXQyMjQgLTQ3LjUKdDE2MC41IC02Ny41dDExMC41IC03NnQ2NS41IC03NS41dDM0IC02NHQ4LjUgLTQzek0xNzkyIDYwOHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgOTYydi0xMjlxMCAtMjcgLTE5IC00NnQtNDYgLTE5aC0zODRxLTI3IDAgLTQ2IDE5dC0xOSA0NnYxMjloNTE0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDU1IiB1bmljb2RlPSImI3hmMWU1OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNzA0IDEyMTZ2LTc2OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl2LTU3NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djUxMmwyNDkgODczcTcgMjMgMzEgMjNoNDI0ek0xMDI0IDEyMTZ2LTcwNGgtMjU2djcwNGgyNTZ6TTE3OTIgMzIwdi01MTJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXY1NzZxLTI2IDAgLTQ1IDE5dC0xOSA0NXY3NjhoNDI0cTI0IDAgMzEgLTIzegpNNzM2IDE1MDR2LTIyNGgtMzUydjIyNHEwIDE0IDkgMjN0MjMgOWgyODhxMTQgMCAyMyAtOXQ5IC0yM3pNMTQwOCAxNTA0di0yMjRoLTM1MnYyMjRxMCAxNCA5IDIzdDIzIDloMjg4cTE0IDAgMjMgLTl0OSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTYiIHVuaWNvZGU9IiYjeGYxZTY7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzU1IDEwODNxMzcgLTM4IDM3IC05MC41dC0zNyAtOTAuNWwtNDAxIC00MDBsMTUwIC0xNTBsLTE2MCAtMTYwcS0xNjMgLTE2MyAtMzg5LjUgLTE4Ni41dC00MTEuNSAxMDAuNWwtMzYyIC0zNjJoLTE4MXYxODFsMzYyIDM2MnEtMTI0IDE4NSAtMTAwLjUgNDExLjV0MTg2LjUgMzg5LjVsMTYwIDE2MGwxNTAgLTE1MGw0MDAgNDAxcTM4IDM3IDkxIDM3dDkwIC0zN3QzNyAtOTAuNXQtMzcgLTkwLjVsLTQwMCAtNDAxbDIzNCAtMjM0Cmw0MDEgNDAwcTM4IDM3IDkxIDM3dDkwIC0zN3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ1NyIgdW5pY29kZT0iJiN4ZjFlNzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg3MyA3OTZxMCAtODMgLTYzLjUgLTE0Mi41dC0xNTIuNSAtNTkuNXQtMTUyLjUgNTkuNXQtNjMuNSAxNDIuNXEwIDg0IDYzLjUgMTQzdDE1Mi41IDU5dDE1Mi41IC01OXQ2My41IC0xNDN6TTEzNzUgNzk2cTAgLTgzIC02MyAtMTQyLjV0LTE1MyAtNTkuNXEtODkgMCAtMTUyLjUgNTkuNXQtNjMuNSAxNDIuNXEwIDg0IDYzLjUgMTQzdDE1Mi41IDU5cTkwIDAgMTUzIC01OXQ2MyAtMTQzek0xNjAwIDYxNnY2NjdxMCA4NyAtMzIgMTIzLjUKdC0xMTEgMzYuNWgtMTExMnEtODMgMCAtMTEyLjUgLTM0dC0yOS41IC0xMjZ2LTY3M3E0MyAtMjMgODguNSAtNDB0ODEgLTI4dDgxIC0xOC41dDcxIC0xMXQ3MCAtNHQ1OC41IC0wLjV0NTYuNSAydDQ0LjUgMnE2OCAxIDk1IC0yN3E2IC02IDEwIC05cTI2IC0yNSA2MSAtNTFxNyA5MSAxMTggODdxNSAwIDM2LjUgLTEuNXQ0MyAtMnQ0NS41IC0xdDUzIDF0NTQuNSA0LjV0NjEgOC41dDYyIDEzLjV0NjcgMTkuNXQ2Ny41IDI3dDcyIDM0LjV6Ck0xNzYzIDYyMXEtMTIxIC0xNDkgLTM3MiAtMjUycTg0IC0yODUgLTIzIC00NjVxLTY2IC0xMTMgLTE4MyAtMTQ4cS0xMDQgLTMyIC0xODIgMTVxLTg2IDUxIC04MiAxNjRsLTEgMzI2djFxLTggMiAtMjQuNSA2dC0yMy41IDVsLTEgLTMzOHE0IC0xMTQgLTgzIC0xNjRxLTc5IC00NyAtMTgzIC0xNXEtMTE3IDM2IC0xODIgMTUwcS0xMDUgMTgwIC0yMiA0NjNxLTI1MSAxMDMgLTM3MiAyNTJxLTI1IDM3IC00IDYzdDYwIC0xcTQgLTIgMTEuNSAtNwp0MTAuNSAtOHY2OTRxMCA3MiA0NyAxMjN0MTE0IDUxaDEyNTdxNjcgMCAxMTQgLTUxdDQ3IC0xMjN2LTY5NGwyMSAxNXEzOSAyNyA2MCAxdC00IC02M3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ1OCIgdW5pY29kZT0iJiN4ZjFlODsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg5NiAxMTAydi00MzRoLTE0NXY0MzRoMTQ1ek0xMjk0IDExMDJ2LTQzNGgtMTQ1djQzNGgxNDV6TTEyOTQgMzQybDI1MyAyNTR2Nzk1aC0xMTk0di0xMDQ5aDMyNnYtMjE3bDIxNyAyMTdoMzk4ek0xNjkyIDE1MzZ2LTEwMTNsLTQzNCAtNDM0aC0zMjZsLTIxNyAtMjE3aC0yMTd2MjE3aC0zOTh2MTE1OGwxMDkgMjg5aDE0ODN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTkiIHVuaWNvZGU9IiYjeGYxZTk7IiAKZD0iTTc3MyAyMTd2LTEyN3EtMSAtMjkyIC02IC0zMDVxLTEyIC0zMiAtNTEgLTQwcS01NCAtOSAtMTgxLjUgMzh0LTE2Mi41IDg5cS0xMyAxNSAtMTcgMzZxLTEgMTIgNCAyNnE0IDEwIDM0IDQ3dDE4MSAyMTZxMSAwIDYwIDcwcTE1IDE5IDM5LjUgMjQuNXQ0OS41IC0zLjVxMjQgLTEwIDM3LjUgLTI5dDEyLjUgLTQyek02MjQgNDY4cS0zIC01NSAtNTIgLTcwbC0xMjAgLTM5cS0yNzUgLTg4IC0yOTIgLTg4cS0zNSAyIC01NCAzNgpxLTEyIDI1IC0xNyA3NXEtOCA3NiAxIDE2Ni41dDMwIDEyNC41dDU2IDMycTEzIDAgMjAyIC03N3E3MSAtMjkgMTE1IC00N2w4NCAtMzRxMjMgLTkgMzUuNSAtMzAuNXQxMS41IC00OC41ek0xNDUwIDE3MXEtNyAtNTQgLTkxLjUgLTE2MXQtMTM1LjUgLTEyN3EtMzcgLTE0IC02MyA3cS0xNCAxMCAtMTg0IDI4N2wtNDcgNzdxLTE0IDIxIC0xMS41IDQ2dDE5LjUgNDZxMzUgNDMgODMgMjZxMSAtMSAxMTkgLTQwcTIwMyAtNjYgMjQyIC03OS41CnQ0NyAtMjAuNXEyOCAtMjIgMjIgLTYxek03NzggODAzcTUgLTEwMiAtNTQgLTEyMnEtNTggLTE3IC0xMTQgNzFsLTM3OCA1OThxLTggMzUgMTkgNjJxNDEgNDMgMjA3LjUgODkuNXQyMjQuNSAzMS41cTQwIC0xMCA0OSAtNDVxMyAtMTggMjIgLTMwNS41dDI0IC0zNzkuNXpNMTQ0MCA2OTVxMyAtMzkgLTI2IC01OXEtMTUgLTEwIC0zMjkgLTg2cS02NyAtMTUgLTkxIC0yM2wxIDJxLTIzIC02IC00NiA0dC0zNyAzMnEtMzAgNDcgMCA4NwpxMSAxIDc1IDEwMnExMjUgMTcxIDE1MCAyMDR0MzQgMzlxMjggMTkgNjUgMnE0OCAtMjMgMTIzIC0xMzMuNXQ4MSAtMTY3LjV2LTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjAiIHVuaWNvZGU9IiYjeGYxZWE7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xMDI0IDEwMjRoLTM4NHYtMzg0aDM4NHYzODR6TTExNTIgMzg0di0xMjhoLTY0MHYxMjhoNjQwek0xMTUyIDExNTJ2LTY0MGgtNjQwdjY0MGg2NDB6TTE3OTIgMzg0di0xMjhoLTUxMnYxMjhoNTEyek0xNzkyIDY0MHYtMTI4aC01MTJ2MTI4aDUxMnpNMTc5MiA4OTZ2LTEyOGgtNTEydjEyOGg1MTJ6TTE3OTIgMTE1MnYtMTI4aC01MTJ2MTI4aDUxMnpNMjU2IDE5MnY5NjBoLTEyOHYtOTYwcTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTkKdDE5IDQ1ek0xOTIwIDE5MnYxMDg4aC0xNTM2di0xMDg4cTAgLTMzIC0xMSAtNjRoMTQ4M3EyNiAwIDQ1IDE5dDE5IDQ1ek0yMDQ4IDE0MDh2LTEyMTZxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZoLTE2NjRxLTgwIDAgLTEzNiA1NnQtNTYgMTM2djEwODhoMjU2djEyOGgxNzkyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDYxIiB1bmljb2RlPSImI3hmMWViOyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMTAyNCAxM3EtMjAgMCAtOTMgNzMuNXQtNzMgOTMuNXEwIDMyIDYyLjUgNTR0MTAzLjUgMjJ0MTAzLjUgLTIydDYyLjUgLTU0cTAgLTIwIC03MyAtOTMuNXQtOTMgLTczLjV6TTEyOTQgMjg0cS0yIDAgLTQwIDI1dC0xMDEuNSA1MHQtMTI4LjUgMjV0LTEyOC41IC0yNXQtMTAxIC01MHQtNDAuNSAtMjVxLTE4IDAgLTkzLjUgNzV0LTc1LjUgOTNxMCAxMyAxMCAyM3E3OCA3NyAxOTYgMTIxdDIzMyA0NHQyMzMgLTQ0dDE5NiAtMTIxCnExMCAtMTAgMTAgLTIzcTAgLTE4IC03NS41IC05M3QtOTMuNSAtNzV6TTE1NjcgNTU2cS0xMSAwIC0yMyA4cS0xMzYgMTA1IC0yNTIgMTU0LjV0LTI2OCA0OS41cS04NSAwIC0xNzAuNSAtMjJ0LTE0OSAtNTN0LTExMy41IC02MnQtNzkgLTUzdC0zMSAtMjJxLTE3IDAgLTkyIDc1dC03NSA5M3EwIDEyIDEwIDIycTEzMiAxMzIgMzIwIDIwNXQzODAgNzN0MzgwIC03M3QzMjAgLTIwNXExMCAtMTAgMTAgLTIycTAgLTE4IC03NSAtOTN0LTkyIC03NXoKTTE4MzggODI3cS0xMSAwIC0yMiA5cS0xNzkgMTU3IC0zNzEuNSAyMzYuNXQtNDIwLjUgNzkuNXQtNDIwLjUgLTc5LjV0LTM3MS41IC0yMzYuNXEtMTEgLTkgLTIyIC05cS0xNyAwIC05Mi41IDc1dC03NS41IDkzcTAgMTMgMTAgMjNxMTg3IDE4NiA0NDUgMjg4dDUyNyAxMDJ0NTI3IC0xMDJ0NDQ1IC0yODhxMTAgLTEwIDEwIC0yM3EwIC0xOCAtNzUuNSAtOTN0LTkyLjUgLTc1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDYyIiB1bmljb2RlPSImI3hmMWVjOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMzg0IDBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTc2OCAwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0zODQgMzg0cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41CnQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTE1MiAwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek03NjggMzg0cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjUKdDM3LjUgOTAuNXpNMzg0IDc2OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTE1MiAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTc2OCA3NjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjUKdC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNTM2IDB2Mzg0cTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTB2LTM4NHEwIC01MiAzOCAtOTB0OTAgLTM4dDkwIDM4dDM4IDkwek0xMTUyIDc2OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXoKTTE1MzYgMTA4OHYyNTZxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjgwcS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMjU2cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4MHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNTM2IDc2OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTY2NCAxNDA4di0xNTM2cTAgLTUyIC0zOCAtOTB0LTkwIC0zOApoLTE0MDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxNTM2cTAgNTIgMzggOTB0OTAgMzhoMTQwOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjMiIHVuaWNvZGU9IiYjeGYxZWQ7IiAKZD0iTTE1MTkgODkwcTE4IC04NCAtNCAtMjA0cS04NyAtNDQ0IC01NjUgLTQ0NGgtNDRxLTI1IDAgLTQ0IC0xNi41dC0yNCAtNDIuNWwtNCAtMTlsLTU1IC0zNDZsLTIgLTE1cS01IC0yNiAtMjQuNSAtNDIuNXQtNDQuNSAtMTYuNWgtMjUxcS0yMSAwIC0zMyAxNXQtOSAzNnE5IDU2IDI2LjUgMTY4dDI2LjUgMTY4dDI3IDE2Ny41dDI3IDE2Ny41cTUgMzcgNDMgMzdoMTMxcTEzMyAtMiAyMzYgMjFxMTc1IDM5IDI4NyAxNDRxMTAyIDk1IDE1NSAyNDYKcTI0IDcwIDM1IDEzM3ExIDYgMi41IDcuNXQzLjUgMXQ2IC0zLjVxNzkgLTU5IDk4IC0xNjJ6TTEzNDcgMTE3MnEwIC0xMDcgLTQ2IC0yMzZxLTgwIC0yMzMgLTMwMiAtMzE1cS0xMTMgLTQwIC0yNTIgLTQycTAgLTEgLTkwIC0xbC05MCAxcS0xMDAgMCAtMTE4IC05NnEtMiAtOCAtODUgLTUzMHEtMSAtMTAgLTEyIC0xMGgtMjk1cS0yMiAwIC0zNi41IDE2LjV0LTExLjUgMzguNWwyMzIgMTQ3MXE1IDI5IDI3LjUgNDh0NTEuNSAxOWg1OTgKcTM0IDAgOTcuNSAtMTN0MTExLjUgLTMycTEwNyAtNDEgMTYzLjUgLTEyM3Q1Ni41IC0xOTZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjQiIHVuaWNvZGU9IiYjeGYxZWU7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik00NDEgODY0cTMzIDAgNTIgLTI2cTI2NiAtMzY0IDM2MiAtNzc0aC00NDZxLTEyNyA0NDEgLTM2NyA3NDlxLTEyIDE2IC0zIDMzLjV0MjkgMTcuNWgzNzN6TTEwMDAgNTA3cS00OSAtMTk5IC0xMjUgLTM5M3EtNzkgMzEwIC0yNTYgNTk0cTQwIDIyMSA0NCA0NDlxMjExIC0zNDAgMzM3IC02NTB6TTEwOTkgMTIxNnEyMzUgLTMyNCAzODQuNSAtNjk4LjV0MTg0LjUgLTc3My41aC00NTFxLTQxIDY2NSAtNTUzIDE0NzJoNDM1ek0xNzkyIDY0MApxMCAtNDI0IC0xMDEgLTgxMnEtNjcgNTYwIC0zNTkgMTA4M3EtMjUgMzAxIC0xMDYgNTg0cS00IDE2IDUuNSAyOC41dDI1LjUgMTIuNWgzNTlxMjEgMCAzOC41IC0xM3QyMi41IC0zM3ExMTUgLTQwOSAxMTUgLTg1MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFGMCIgdW5pY29kZT0iJiN4ZjFmMDsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTE5NzUgNTQ2aC0xMzhxMTQgMzcgNjYgMTc5bDMgOXE0IDEwIDEwIDI2dDkgMjZsMTIgLTU1ek01MzEgNjExbC01OCAyOTVxLTExIDU0IC03NSA1NGgtMjY4bC0yIC0xM3EzMTEgLTc5IDQwMyAtMzM2ek03MTAgOTYwbC0xNjIgLTQzOGwtMTcgODlxLTI2IDcwIC04NSAxMjkuNXQtMTMxIDg4LjVsMTM1IC01MTBoMTc1bDI2MSA2NDFoLTE3NnpNODQ5IDMxOGgxNjZsMTA0IDY0MmgtMTY2ek0xNjE3IDk0NHEtNjkgMjcgLTE0OSAyNwpxLTEyMyAwIC0yMDEgLTU5dC03OSAtMTUzcS0xIC0xMDIgMTQ1IC0xNzRxNDggLTIzIDY3IC00MXQxOSAtMzlxMCAtMzAgLTMwIC00NnQtNjkgLTE2cS04NiAwIC0xNTYgMzNsLTIyIDExbC0yMyAtMTQ0cTc0IC0zNCAxODUgLTM0cTEzMCAtMSAyMDguNSA1OXQ4MC41IDE2MHEwIDEwNiAtMTQwIDE3NHEtNDkgMjUgLTcxIDQydC0yMiAzOHEwIDIyIDI0LjUgMzguNXQ3MC41IDE2LjVxNzAgMSAxMjQgLTI0bDE1IC04ek0yMDQyIDk2MGgtMTI4CnEtNjUgMCAtODcgLTU0bC0yNDYgLTU4OGgxNzRsMzUgOTZoMjEycTUgLTIyIDIwIC05NmgxNTR6TTIzMDQgMTI4MHYtMTI4MHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTIwNDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxMjgwcTAgNTIgMzggOTB0OTAgMzhoMjA0OHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjYiIHVuaWNvZGU9IiYjeGYxZjE7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik0xMTE5IDExOTVxLTEyOCA4NSAtMjgxIDg1cS0xMDMgMCAtMTk3LjUgLTQwLjV0LTE2Mi41IC0xMDguNXQtMTA4LjUgLTE2MnQtNDAuNSAtMTk3cTAgLTEwNCA0MC41IC0xOTh0MTA4LjUgLTE2MnQxNjIgLTEwOC41dDE5OCAtNDAuNXExNTMgMCAyODEgODVxLTEzMSAxMDcgLTE3OCAyNjUuNXQwLjUgMzE2LjV0MTc3LjUgMjY1ek0xMTUyIDExNzFxLTEyNiAtOTkgLTE3MiAtMjQ5LjV0LTAuNSAtMzAwLjV0MTcyLjUgLTI0OQpxMTI3IDk5IDE3Mi41IDI0OXQtMC41IDMwMC41dC0xNzIgMjQ5LjV6TTExODUgMTE5NXExMzAgLTEwNyAxNzcuNSAtMjY1LjV0MC41IC0zMTd0LTE3OCAtMjY0LjVxMTI4IC04NSAyODEgLTg1cTEwNCAwIDE5OCA0MC41dDE2MiAxMDguNXQxMDguNSAxNjJ0NDAuNSAxOThxMCAxMDMgLTQwLjUgMTk3dC0xMDguNSAxNjJ0LTE2Mi41IDEwOC41dC0xOTcuNSA0MC41cS0xNTMgMCAtMjgxIC04NXpNMTkyNiA0NzNoN3YzaC0xN3YtM2g3di0xN2gzdjE3egpNMTk1NSA0NTZoNHYyMGgtNWwtNiAtMTNsLTYgMTNoLTV2LTIwaDN2MTVsNiAtMTNoNGw1IDEzdi0xNXpNMTk0NyAxNnYtMmgtMmgtM3YzaDNoMnYtMXpNMTk0NyA3aDNsLTQgNWgybDEgMXExIDEgMSAzdC0xIDNsLTEgMWgtM2gtNnYtMTNoM3Y1aDF6TTY4NSA3NXEwIDE5IDExIDMxdDMwIDEycTE4IDAgMjkgLTEyLjV0MTEgLTMwLjVxMCAtMTkgLTExIC0zMXQtMjkgLTEycS0xOSAwIC0zMCAxMnQtMTEgMzF6TTExNTggMTE5cTMwIDAgMzUgLTMyCmgtNzBxNSAzMiAzNSAzMnpNMTUxNCA3NXEwIDE5IDExIDMxdDI5IDEydDI5LjUgLTEyLjV0MTEuNSAtMzAuNXEwIC0xOSAtMTEgLTMxdC0zMCAtMTJxLTE4IDAgLTI5IDEydC0xMSAzMXpNMTc4NiA3NXEwIDE4IDExLjUgMzAuNXQyOS41IDEyLjV0MjkuNSAtMTIuNXQxMS41IC0zMC41cTAgLTE5IC0xMS41IC0zMXQtMjkuNSAtMTJ0LTI5LjUgMTIuNXQtMTEuNSAzMC41ek0xOTQ0IDNxLTIgMCAtNCAxcS0xIDAgLTMgMnQtMiAzcS0xIDIgLTEgNApxMCAzIDEgNHEwIDIgMiA0bDEgMXEyIDAgMiAxcTIgMSA0IDFxMyAwIDQgLTFsNCAtMmwyIC00di0xcTEgLTIgMSAtM2wtMSAtMXYtM3QtMSAtMWwtMSAtMnEtMiAtMiAtNCAtMnEtMSAtMSAtNCAtMXpNNTk5IDdoMzB2ODVxMCAyNCAtMTQuNSAzOC41dC0zOS41IDE1LjVxLTMyIDAgLTQ3IC0yNHEtMTQgMjQgLTQ1IDI0cS0yNCAwIC0zOSAtMjB2MTZoLTMwdi0xMzVoMzB2NzVxMCAzNiAzMyAzNnEzMCAwIDMwIC0zNnYtNzVoMjl2NzUKcTAgMzYgMzMgMzZxMzAgMCAzMCAtMzZ2LTc1ek03NjUgN2gyOXY2OHY2N2gtMjl2LTE2cS0xNyAyMCAtNDMgMjBxLTI5IDAgLTQ4IC0yMHQtMTkgLTUxdDE5IC01MXQ0OCAtMjBxMjggMCA0MyAyMHYtMTd6TTk0MyA0OHEwIDM0IC00NyA0MGwtMTQgMnEtMjMgNCAtMjMgMTRxMCAxNSAyNSAxNXEyMyAwIDQzIC0xMWwxMiAyNHEtMjIgMTQgLTU1IDE0cS0yNiAwIC00MSAtMTJ0LTE1IC0zMnEwIC0zMyA0NyAtMzlsMTMgLTJxMjQgLTQgMjQgLTE0CnEwIC0xNyAtMzEgLTE3cS0yNSAwIC00NSAxNGwtMTMgLTIzcTI1IC0xNyA1OCAtMTdxMjkgMCA0NS41IDEydDE2LjUgMzJ6TTEwNzMgMTRsLTggMjVxLTEzIC03IC0yNiAtN3EtMTkgMCAtMTkgMjJ2NjFoNDh2MjdoLTQ4djQxaC0zMHYtNDFoLTI4di0yN2gyOHYtNjFxMCAtNTAgNDcgLTUwcTIxIDAgMzYgMTB6TTExNTkgMTQ2cS0yOSAwIC00OCAtMjB0LTE5IC01MXEwIC0zMiAxOS41IC01MS41dDQ5LjUgLTE5LjVxMzMgMCA1NSAxOWwtMTQgMjIKcS0xOCAtMTUgLTM5IC0xNXEtMzQgMCAtNDEgMzNoMTAxdjEycTAgMzIgLTE4IDUxLjV0LTQ2IDE5LjV6TTEzMTggMTQ2cS0yMyAwIC0zNSAtMjB2MTZoLTMwdi0xMzVoMzB2NzZxMCAzNSAyOSAzNXExMCAwIDE4IC00bDkgMjhxLTkgNCAtMjEgNHpNMTM0OCA3NXEwIC0zMSAxOS41IC01MXQ1Mi41IC0yMHEyOSAwIDQ4IDE2bC0xNCAyNHEtMTggLTEzIC0zNSAtMTJxLTE4IDAgLTI5LjUgMTJ0LTExLjUgMzF0MTEuNSAzMXQyOS41IDEyCnExOSAwIDM1IC0xMmwxNCAyNHEtMjAgMTYgLTQ4IDE2cS0zMyAwIC01Mi41IC0yMHQtMTkuNSAtNTF6TTE1OTMgN2gzMHY2OHY2N2gtMzB2LTE2cS0xNSAyMCAtNDIgMjBxLTI5IDAgLTQ4LjUgLTIwdC0xOS41IC01MXQxOS41IC01MXQ0OC41IC0yMHEyOCAwIDQyIDIwdi0xN3pNMTcyNiAxNDZxLTIzIDAgLTM1IC0yMHYxNmgtMjl2LTEzNWgyOXY3NnEwIDM1IDI5IDM1cTEwIDAgMTggLTRsOSAyOHEtOCA0IC0yMSA0ek0xODY2IDdoMjl2Njh2MTIyCmgtMjl2LTcxcS0xNSAyMCAtNDMgMjB0LTQ3LjUgLTIwLjV0LTE5LjUgLTUwLjV0MTkuNSAtNTAuNXQ0Ny41IC0yMC41cTI5IDAgNDMgMjB2LTE3ek0xOTQ0IDI3bC0yIC0xaC0zcS0yIC0xIC00IC0zcS0zIC0xIC0zIC00cS0xIC0yIC0xIC02cTAgLTMgMSAtNXEwIC0yIDMgLTRxMiAtMiA0IC0zdDUgLTFxNCAwIDYgMXEwIDEgMiAybDIgMXExIDEgMyA0cTEgMiAxIDVxMCA0IC0xIDZxLTEgMSAtMyA0cTAgMSAtMiAybC0yIDFxLTEgMCAtMyAwLjUKdC0zIDAuNXpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2NyIgdW5pY29kZT0iJiN4ZjFmMjsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTMxMyA3NTlxMCAtNTEgLTM2IC04NHEtMjkgLTI2IC04OSAtMjZoLTE3djIyMGgxN3E2MSAwIDg5IC0yN3EzNiAtMzEgMzYgLTgzek0yMDg5IDgyNHEwIC01MiAtNjQgLTUyaC0xOXYxMDFoMjBxNjMgMCA2MyAtNDl6TTM4MCA3NTlxMCA3NCAtNTAgMTIwLjV0LTEyOSA0Ni41aC05NXYtMzMzaDk1cTc0IDAgMTE5IDM4cTYwIDUxIDYwIDEyOHpNNDEwIDU5M2g2NXYzMzNoLTY1di0zMzN6TTczMCA2OTRxMCA0MCAtMjAuNSA2MnQtNzUuNSA0MgpxLTI5IDEwIC0zOS41IDE5dC0xMC41IDIzcTAgMTYgMTMuNSAyNi41dDM0LjUgMTAuNXEyOSAwIDUzIC0yN2wzNCA0NHEtNDEgMzcgLTk4IDM3cS00NCAwIC03NCAtMjcuNXQtMzAgLTY3LjVxMCAtMzUgMTggLTU1LjV0NjQgLTM2LjVxMzcgLTEzIDQ1IC0xOXExOSAtMTIgMTkgLTM0cTAgLTIwIC0xNCAtMzMuNXQtMzYgLTEzLjVxLTQ4IDAgLTcxIDQ0bC00MiAtNDBxNDQgLTY0IDExNSAtNjRxNTEgMCA4MyAzMC41dDMyIDc5LjV6TTEwMDggNjA0CnY3N3EtMzcgLTM3IC03OCAtMzdxLTQ5IDAgLTgwLjUgMzIuNXQtMzEuNSA4Mi41cTAgNDggMzEuNSA4MS41dDc3LjUgMzMuNXE0MyAwIDgxIC0zOHY3N3EtNDAgMjAgLTgwIDIwcS03NCAwIC0xMjUuNSAtNTAuNXQtNTEuNSAtMTIzLjV0NTEgLTEyMy41dDEyNSAtNTAuNXE0MiAwIDgxIDE5ek0yMjQwIDB2NTI3cS02NSAtNDAgLTE0NC41IC04NHQtMjM3LjUgLTExN3QtMzI5LjUgLTEzNy41dC00MTcuNSAtMTM0LjV0LTUwNCAtMTE4aDE1NjkKcTI2IDAgNDUgMTl0MTkgNDV6TTEzODkgNzU3cTAgNzUgLTUzIDEyOHQtMTI4IDUzdC0xMjggLTUzdC01MyAtMTI4dDUzIC0xMjh0MTI4IC01M3QxMjggNTN0NTMgMTI4ek0xNTQxIDU4NGwxNDQgMzQyaC03MWwtOTAgLTIyNGwtODkgMjI0aC03MWwxNDIgLTM0MmgzNXpNMTcxNCA1OTNoMTg0djU2aC0xMTl2OTBoMTE1djU2aC0xMTV2NzRoMTE5djU3aC0xODR2LTMzM3pNMjEwNSA1OTNoODBsLTEwNSAxNDBxNzYgMTYgNzYgOTRxMCA0NyAtMzEgNzMKdC04NyAyNmgtOTd2LTMzM2g2NXYxMzNoOXpNMjMwNCAxMjc0di0xMjY4cTAgLTU2IC0zOC41IC05NXQtOTMuNSAtMzloLTIwNDBxLTU1IDAgLTkzLjUgMzl0LTM4LjUgOTV2MTI2OHEwIDU2IDM4LjUgOTV0OTMuNSAzOWgyMDQwcTU1IDAgOTMuNSAtMzl0MzguNSAtOTV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxZjMiIHVuaWNvZGU9IiYjeGYxZjM7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik0xMTkgODU0aDg5bC00NSAxMDh6TTc0MCAzMjhsNzQgNzlsLTcwIDc5aC0xNjN2LTQ5aDE0MnYtNTVoLTE0MnYtNTRoMTU5ek04OTggNDA2bDk5IC0xMTB2MjE3ek0xMTg2IDQ1M3EwIDMzIC00MCAzM2gtODR2LTY5aDgzcTQxIDAgNDEgMzZ6TTE0NzUgNDU3cTAgMjkgLTQyIDI5aC04MnYtNjFoODFxNDMgMCA0MyAzMnpNMTE5NyA5MjNxMCAyOSAtNDIgMjloLTgydi02MGg4MXE0MyAwIDQzIDMxek0xNjU2IDg1NGg4OWwtNDQgMTA4egpNNjk5IDEwMDl2LTI3MWgtNjZ2MjEybC05NCAtMjEyaC01N2wtOTQgMjEydi0yMTJoLTEzMmwtMjUgNjBoLTEzNWwtMjUgLTYwaC03MGwxMTYgMjcxaDk2bDExMCAtMjU3djI1N2gxMDZsODUgLTE4NGw3NyAxODRoMTA4ek0xMjU1IDQ1M3EwIC0yMCAtNS41IC0zNXQtMTQgLTI1dC0yMi41IC0xNi41dC0yNiAtMTB0LTMxLjUgLTQuNXQtMzEuNSAtMXQtMzIuNSAwLjV0LTI5LjUgMC41di05MWgtMTI2bC04MCA5MGwtODMgLTkwaC0yNTZ2MjcxaDI2MApsODAgLTg5bDgyIDg5aDIwN3ExMDkgMCAxMDkgLTg5ek05NjQgNzk0di01NmgtMjE3djI3MWgyMTd2LTU3aC0xNTJ2LTQ5aDE0OHYtNTVoLTE0OHYtNTRoMTUyek0yMzA0IDIzNXYtMjI5cTAgLTU1IC0zOC41IC05NC41dC05My41IC0zOS41aC0yMDQwcS01NSAwIC05My41IDM5LjV0LTM4LjUgOTQuNXY2NzhoMTExbDI1IDYxaDU1bDI1IC02MWgyMTh2NDZsMTkgLTQ2aDExM2wyMCA0N3YtNDdoNTQxdjk5bDEwIDFxMTAgMCAxMCAtMTR2LTg2aDI3OQp2MjNxMjMgLTEyIDU1IC0xOHQ1Mi41IC02LjV0NjMgMC41dDUxLjUgMWwyNSA2MWg1NmwyNSAtNjFoMjI3djU4bDM0IC01OGgxODJ2Mzc4aC0xODB2LTQ0bC0yNSA0NGgtMTg1di00NGwtMjMgNDRoLTI0OXEtNjkgMCAtMTA5IC0yMnYyMmgtMTcydi0yMnEtMjQgMjIgLTczIDIyaC02MjhsLTQzIC05N2wtNDMgOTdoLTE5OHYtNDRsLTIyIDQ0aC0xNjlsLTc4IC0xNzl2MzkxcTAgNTUgMzguNSA5NC41dDkzLjUgMzkuNWgyMDQwCnE1NSAwIDkzLjUgLTM5LjV0MzguNSAtOTQuNXYtNjc4aC0xMjBxLTUxIDAgLTgxIC0yMnYyMmgtMTc3cS01NSAwIC03OCAtMjJ2MjJoLTMxNnYtMjJxLTMxIDIyIC04NyAyMmgtMjA5di0yMnEtMjMgMjIgLTkxIDIyaC0yMzRsLTU0IC01OGwtNTAgNThoLTM0OXYtMzc4aDM0M2w1NSA1OWw1MiAtNTloMjExdjg5aDIxcTU5IDAgOTAgMTN2LTEwMmgxNzR2OTloOHE4IDAgMTAgLTJ0MiAtMTB2LTg3aDUyOXE1NyAwIDg4IDI0di0yNGgxNjgKcTYwIDAgOTUgMTd6TTE1NDYgNDY5cTAgLTIzIC0xMiAtNDN0LTM0IC0yOXEyNSAtOSAzNCAtMjZ0OSAtNDZ2LTU0aC02NXY0NXEwIDMzIC0xMiA0My41dC00NiAxMC41aC02OXYtOTloLTY1djI3MWgxNTRxNDggMCA3NyAtMTV0MjkgLTU4ek0xMjY5IDkzNnEwIC0yNCAtMTIuNSAtNDR0LTMzLjUgLTI5cTI2IC05IDM0LjUgLTI1LjV0OC41IC00Ni41di01M2gtNjVxMCA5IDAuNSAyNi41dDAgMjV0LTMgMTguNXQtOC41IDE2dC0xNy41IDguNQp0LTI5LjUgMy41aC03MHYtOThoLTY0djI3MWwxNTMgLTFxNDkgMCA3OCAtMTQuNXQyOSAtNTcuNXpNMTc5OCAzMjd2LTU2aC0yMTZ2MjcxaDIxNnYtNTZoLTE1MXYtNDloMTQ4di01NWgtMTQ4di01NHpNMTM3MiAxMDA5di0yNzFoLTY2djI3MWg2NnpNMjA2NSAzNTdxMCAtODYgLTEwMiAtODZoLTEyNnY1OGgxMjZxMzQgMCAzNCAyNXEwIDE2IC0xNyAyMXQtNDEuNSA1dC00OS41IDMuNXQtNDIgMjIuNXQtMTcgNTVxMCAzOSAyNiA2MHQ2NiAyMQpoMTMwdi01N2gtMTE5cS0zNiAwIC0zNiAtMjVxMCAtMTYgMTcuNSAtMjAuNXQ0MiAtNHQ0OSAtMi41dDQyIC0yMS41dDE3LjUgLTU0LjV6TTIzMDQgNDA3di0xMDFxLTI0IC0zNSAtODggLTM1aC0xMjV2NThoMTI1cTMzIDAgMzMgMjVxMCAxMyAtMTIuNSAxOXQtMzEgNS41dC00MCAydC00MCA4dC0zMSAyNHQtMTIuNSA0OC41cTAgMzkgMjYuNSA2MHQ2Ni41IDIxaDEyOXYtNTdoLTExOHEtMzYgMCAtMzYgLTI1cTAgLTIwIDI5IC0yMnQ2OC41IC01CnQ1Ni41IC0yNnpNMjEzOSAxMDA4di0yNzBoLTkybC0xMjIgMjAzdi0yMDNoLTEzMmwtMjYgNjBoLTEzNGwtMjUgLTYwaC03NXEtMTI5IDAgLTEyOSAxMzNxMCAxMzggMTMzIDEzOGg2M3YtNTlxLTcgMCAtMjggMXQtMjguNSAwLjV0LTIzIC0ydC0yMS41IC02LjV0LTE0LjUgLTEzLjV0LTExLjUgLTIzdC0zIC0zMy41cTAgLTM4IDEzLjUgLTU4dDQ5LjUgLTIwaDI5bDkyIDIxM2g5N2wxMDkgLTI1NnYyNTZoOTlsMTE0IC0xODh2MTg4aDY2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDY5IiB1bmljb2RlPSImI3hmMWY0OyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNNzQ1IDYzMHEwIC0zNyAtMjUuNSAtNjEuNXQtNjIuNSAtMjQuNXEtMjkgMCAtNDYuNSAxNnQtMTcuNSA0NHEwIDM3IDI1IDYyLjV0NjIgMjUuNXEyOCAwIDQ2LjUgLTE2LjV0MTguNSAtNDUuNXpNMTUzMCA3NzlxMCAtNDIgLTIyIC01N3QtNjYgLTE1bC0zMiAtMWwxNyAxMDdxMiAxMSAxMyAxMWgxOHEyMiAwIDM1IC0ydDI1IC0xMi41dDEyIC0zMC41ek0xODgxIDYzMHEwIC0zNiAtMjUuNSAtNjF0LTYxLjUgLTI1cS0yOSAwIC00NyAxNgp0LTE4IDQ0cTAgMzcgMjUgNjIuNXQ2MiAyNS41cTI4IDAgNDYuNSAtMTYuNXQxOC41IC00NS41ek01MTMgODAxcTAgNTkgLTM4LjUgODUuNXQtMTAwLjUgMjYuNWgtMTYwcS0xOSAwIC0yMSAtMTlsLTY1IC00MDhxLTEgLTYgMyAtMTF0MTAgLTVoNzZxMjAgMCAyMiAxOWwxOCAxMTBxMSA4IDcgMTN0MTUgNi41dDE3IDEuNXQxOSAtMXQxNCAtMXE4NiAwIDEzNSA0OC41dDQ5IDEzNC41ek04MjIgNDg5bDQxIDI2MXExIDYgLTMgMTF0LTEwIDVoLTc2CnEtMTQgMCAtMTcgLTMzcS0yNyA0MCAtOTUgNDBxLTcyIDAgLTEyMi41IC01NHQtNTAuNSAtMTI3cTAgLTU5IDM0LjUgLTk0dDkyLjUgLTM1cTI4IDAgNTggMTJ0NDggMzJxLTQgLTEyIC00IC0yMXEwIC0xNiAxMyAtMTZoNjlxMTkgMCAyMiAxOXpNMTI2OSA3NTJxMCA1IC00IDkuNXQtOSA0LjVoLTc3cS0xMSAwIC0xOCAtMTBsLTEwNiAtMTU2bC00NCAxNTBxLTUgMTYgLTIyIDE2aC03NXEtNSAwIC05IC00LjV0LTQgLTkuNXEwIC0yIDE5LjUgLTU5CnQ0MiAtMTIzdDIzLjUgLTcwcS04MiAtMTEyIC04MiAtMTIwcTAgLTEzIDEzIC0xM2g3N3ExMSAwIDE4IDEwbDI1NSAzNjhxMiAyIDIgN3pNMTY0OSA4MDFxMCA1OSAtMzguNSA4NS41dC0xMDAuNSAyNi41aC0xNTlxLTIwIDAgLTIyIC0xOWwtNjUgLTQwOHEtMSAtNiAzIC0xMXQxMCAtNWg4MnExMiAwIDE2IDEzbDE4IDExNnExIDggNyAxM3QxNSA2LjV0MTcgMS41dDE5IC0xdDE0IC0xcTg2IDAgMTM1IDQ4LjV0NDkgMTM0LjV6TTE5NTggNDg5Cmw0MSAyNjFxMSA2IC0zIDExdC0xMCA1aC03NnEtMTQgMCAtMTcgLTMzcS0yNiA0MCAtOTUgNDBxLTcyIDAgLTEyMi41IC01NHQtNTAuNSAtMTI3cTAgLTU5IDM0LjUgLTk0dDkyLjUgLTM1cTI5IDAgNTkgMTJ0NDcgMzJxMCAtMSAtMiAtOXQtMiAtMTJxMCAtMTYgMTMgLTE2aDY5cTE5IDAgMjIgMTl6TTIxNzYgODk4djFxMCAxNCAtMTMgMTRoLTc0cS0xMSAwIC0xMyAtMTFsLTY1IC00MTZsLTEgLTJxMCAtNSA0IC05LjV0MTAgLTQuNWg2NgpxMTkgMCAyMSAxOXpNMzkyIDc2NHEtNSAtMzUgLTI2IC00NnQtNjAgLTExbC0zMyAtMWwxNyAxMDdxMiAxMSAxMyAxMWgxOXE0MCAwIDU4IC0xMS41dDEyIC00OC41ek0yMzA0IDEyODB2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0yMDQ4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwdDkwIDM4aDIwNDhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDcwIiB1bmljb2RlPSImI3hmMWY1OyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMTU5NyA2MzNxMCAtNjkgLTIxIC0xMDZxLTE5IC0zNSAtNTIgLTM1cS0yMyAwIC00MSA5djIyNHEyOSAzMCA1NyAzMHE1NyAwIDU3IC0xMjJ6TTIwMzUgNjY5aC0xMTBxNiA5OCA1NiA5OHE1MSAwIDU0IC05OHpNNDc2IDUzNHEwIDU5IC0zMyA5MS41dC0xMDEgNTcuNXEtMzYgMTMgLTUyIDI0dC0xNiAyNXEwIDI2IDM4IDI2cTU4IDAgMTI0IC0zM2wxOCAxMTJxLTY3IDMyIC0xNDkgMzJxLTc3IDAgLTEyMyAtMzhxLTQ4IC0zOSAtNDggLTEwOQpxMCAtNTggMzIuNSAtOTAuNXQ5OS41IC01Ni41cTM5IC0xNCA1NC41IC0yNS41dDE1LjUgLTI3LjVxMCAtMzEgLTQ4IC0zMXEtMjkgMCAtNzAgMTIuNXQtNzIgMzAuNWwtMTggLTExM3E3MiAtNDEgMTY4IC00MXE4MSAwIDEyOSAzN3E1MSA0MSA1MSAxMTd6TTc3MSA3NDlsMTkgMTExaC05NnYxMzVsLTEyOSAtMjFsLTE4IC0xMTRsLTQ2IC04bC0xNyAtMTAzaDYydi0yMTlxMCAtODQgNDQgLTEyMHEzOCAtMzAgMTExIC0zMHEzMiAwIDc5IDExdjExOApxLTMyIC03IC00NCAtN3EtNDIgMCAtNDIgNTB2MTk3aDc3ek0xMDg3IDcyNHYxMzlxLTE1IDMgLTI4IDNxLTMyIDAgLTU1LjUgLTE2dC0zMy41IC00NmwtMTAgNTZoLTEzMXYtNDcxaDE1MHYzMDZxMjYgMzEgODIgMzFxMTYgMCAyNiAtMnpNMTEyNCAzODloMTUwdjQ3MWgtMTUwdi00NzF6TTE3NDYgNjM4cTAgMTIyIC00NSAxNzlxLTQwIDUyIC0xMTEgNTJxLTY0IDAgLTExNyAtNTZsLTggNDdoLTEzMnYtNjQ1bDE1MCAyNXYxNTEKcTM2IC0xMSA2OCAtMTFxODMgMCAxMzQgNTZxNjEgNjUgNjEgMjAyek0xMjc4IDk4NnEwIDMzIC0yMyA1NnQtNTYgMjN0LTU2IC0yM3QtMjMgLTU2dDIzIC01Ni41dDU2IC0yMy41dDU2IDIzLjV0MjMgNTYuNXpNMjE3NiA2MjlxMCAxMTMgLTQ4IDE3NnEtNTAgNjQgLTE0NCA2NHEtOTYgMCAtMTUxLjUgLTY2dC01NS41IC0xODBxMCAtMTI4IDYzIC0xODhxNTUgLTU1IDE2MSAtNTVxMTAxIDAgMTYwIDQwbC0xNiAxMDNxLTU3IC0zMSAtMTI4IC0zMQpxLTQzIDAgLTYzIDE5cS0yMyAxOSAtMjggNjZoMjQ4cTIgMTQgMiA1MnpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3MSIgdW5pY29kZT0iJiN4ZjFmNjsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTE1NTggNjg0cTYxIC0zNTYgMjk4IC01NTZxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC00NDhxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODAuNSA3NC41dC03NS41IDE4MC41ek0xMDI0IC0xNzZxMTYgMCAxNiAxNnQtMTYgMTZxLTU5IDAgLTEwMS41IDQyLjV0LTQyLjUgMTAxLjVxMCAxNiAtMTYgMTZ0LTE2IC0xNnEwIC03MyA1MS41IC0xMjQuNXQxMjQuNSAtNTEuNXpNMjAyNiAxNDI0cTggLTEwIDcuNSAtMjMuNXQtMTAuNSAtMjIuNQpsLTE4NzIgLTE2MjJxLTEwIC04IC0yMy41IC03dC0yMS41IDExbC04NCA5NnEtOCAxMCAtNy41IDIzLjV0MTAuNSAyMS41bDE4NiAxNjFxLTE5IDMyIC0xOSA2NnE1MCA0MiA5MSA4OHQ4NSAxMTkuNXQ3NC41IDE1OC41dDUwIDIwNnQxOS41IDI2MHEwIDE1MiAxMTcgMjgyLjV0MzA3IDE1OC41cS04IDE5IC04IDM5cTAgNDAgMjggNjh0NjggMjh0NjggLTI4dDI4IC02OHEwIC0yMCAtOCAtMzlxMTI0IC0xOCAyMTkgLTgyLjV0MTQ4IC0xNTcuNQpsNDE4IDM2M3ExMCA4IDIzLjUgN3QyMS41IC0xMXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3MiIgdW5pY29kZT0iJiN4ZjFmNzsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTEwNDAgLTE2MHEwIDE2IC0xNiAxNnEtNTkgMCAtMTAxLjUgNDIuNXQtNDIuNSAxMDEuNXEwIDE2IC0xNiAxNnQtMTYgLTE2cTAgLTczIDUxLjUgLTEyNC41dDEyNC41IC01MS41cTE2IDAgMTYgMTZ6TTUwMyAzMTVsODc3IDc2MHEtNDIgODggLTEzMi41IDE0Ni41dC0yMjMuNSA1OC41cS05MyAwIC0xNjkuNSAtMzEuNXQtMTIxLjUgLTgwLjV0LTY5IC0xMDN0LTI0IC0xMDVxMCAtMzg0IC0xMzcgLTY0NXpNMTg1NiAxMjgKcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNDQ4cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgwLjUgNzQuNXQtNzUuNSAxODAuNWwxNDkgMTI5aDc1N3EtMTY2IDE4NyAtMjI3IDQ1OWwxMTEgOTdxNjEgLTM1NiAyOTggLTU1NnpNMTk0MiAxNTIwbDg0IC05NnE4IC0xMCA3LjUgLTIzLjV0LTEwLjUgLTIyLjVsLTE4NzIgLTE2MjJxLTEwIC04IC0yMy41IC03dC0yMS41IDExbC04NCA5NnEtOCAxMCAtNy41IDIzLjV0MTAuNSAyMS41bDE4NiAxNjEKcS0xOSAzMiAtMTkgNjZxNTAgNDIgOTEgODh0ODUgMTE5LjV0NzQuNSAxNTguNXQ1MCAyMDZ0MTkuNSAyNjBxMCAxNTIgMTE3IDI4Mi41dDMwNyAxNTguNXEtOCAxOSAtOCAzOXEwIDQwIDI4IDY4dDY4IDI4dDY4IC0yOHQyOCAtNjhxMCAtMjAgLTggLTM5cTEyNCAtMTggMjE5IC04Mi41dDE0OCAtMTU3LjVsNDE4IDM2M3ExMCA4IDIzLjUgN3QyMS41IC0xMXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3MyIgdW5pY29kZT0iJiN4ZjFmODsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTUxMiAxNjB2NzA0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTcwNHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNNzY4IDE2MHY3MDRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNzA0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0xMDI0IDE2MHY3MDRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNzA0CnEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNNDgwIDExNTJoNDQ4bC00OCAxMTdxLTcgOSAtMTcgMTFoLTMxN3EtMTAgLTIgLTE3IC0xMXpNMTQwOCAxMTIwdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTQ4cTAgLTgzIC00NyAtMTQzLjV0LTExMyAtNjAuNWgtODMycS02NiAwIC0xMTMgNTguNXQtNDcgMTQxLjV2OTUyaC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgzMDlsNzAgMTY3CnExNSAzNyA1NCA2M3Q3OSAyNmgzMjBxNDAgMCA3OSAtMjZ0NTQgLTYzbDcwIC0xNjdoMzA5cTE0IDAgMjMgLTl0OSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzQiIHVuaWNvZGU9IiYjeGYxZjk7IiAKZD0iTTExNTAgNDYydi0xMDlxMCAtNTAgLTM2LjUgLTg5dC05NCAtNjAuNXQtMTE4IC0zMi41dC0xMTcuNSAtMTFxLTIwNSAwIC0zNDIuNSAxMzl0LTEzNy41IDM0NnEwIDIwMyAxMzYgMzM5dDMzOSAxMzZxMzQgMCA3NS41IC00LjV0OTMgLTE4dDkyLjUgLTM0dDY5IC01Ni41dDI4IC04MXYtMTA5cTAgLTE2IC0xNiAtMTZoLTExOHEtMTYgMCAtMTYgMTZ2NzBxMCA0MyAtNjUuNSA2Ny41dC0xMzcuNSAyNC41cS0xNDAgMCAtMjI4LjUgLTkxLjUKdC04OC41IC0yMzcuNXEwIC0xNTEgOTEuNSAtMjQ5LjV0MjMzLjUgLTk4LjVxNjggMCAxMzggMjR0NzAgNjZ2NzBxMCA3IDQuNSAxMS41dDEwLjUgNC41aDExOXE2IDAgMTEgLTQuNXQ1IC0xMS41ek03NjggMTI4MHEtMTMwIDAgLTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjUKdC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3NSIgdW5pY29kZT0iJiN4ZjFmYTsiIApkPSJNOTcyIDc2MXEwIDEwOCAtNTMuNSAxNjl0LTE0Ny41IDYxcS02MyAwIC0xMjQgLTMwLjV0LTExMCAtODQuNXQtNzkuNSAtMTM3dC0zMC41IC0xODBxMCAtMTEyIDUzLjUgLTE3M3QxNTAuNSAtNjFxOTYgMCAxNzYgNjYuNXQxMjIuNSAxNjZ0NDIuNSAyMDMuNXpNMTUzNiA2NDBxMCAtMTExIC0zNyAtMTk3dC05OC41IC0xMzV0LTEzMS41IC03NC41dC0xNDUgLTI3LjVxLTYgMCAtMTUuNSAtMC41dC0xNi41IC0wLjVxLTk1IDAgLTE0MiA1MwpxLTI4IDMzIC0zMyA4M3EtNTIgLTY2IC0xMzEuNSAtMTEwdC0xNzMuNSAtNDRxLTE2MSAwIC0yNDkuNSA5NS41dC04OC41IDI2OS41cTAgMTU3IDY2IDI5MHQxNzkgMjEwLjV0MjQ2IDc3LjVxODcgMCAxNTUgLTM1LjV0MTA2IC05OS41bDIgMTlsMTEgNTZxMSA2IDUuNSAxMnQ5LjUgNmgxMThxNSAwIDEzIC0xMXE1IC01IDMgLTE2bC0xMjAgLTYxNHEtNSAtMjQgLTUgLTQ4cTAgLTM5IDEyLjUgLTUydDQ0LjUgLTEzcTI4IDEgNTcgNS41dDczIDI0CnQ3NyA1MHQ1NyA4OS41dDI0IDEzN3EwIDI5MiAtMTc0IDQ2NnQtNDY2IDE3NHEtMTMwIDAgLTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxcTIyOCAwIDQwNSAxNDRxMTEgOSAyNCA4dDIxIC0xMmw0MSAtNDlxOCAtMTIgNyAtMjRxLTIgLTEzIC0xMiAtMjJxLTEwMiAtODMgLTIyNy41IC0xMjh0LTI1OC41IC00NXEtMTU2IDAgLTI5OCA2MQp0LTI0NSAxNjR0LTE2NCAyNDV0LTYxIDI5OHQ2MSAyOTh0MTY0IDI0NXQyNDUgMTY0dDI5OCA2MXEzNDQgMCA1NTYgLTIxMnQyMTIgLTU1NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3NiIgdW5pY29kZT0iJiN4ZjFmYjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE2OTggMTQ0MnE5NCAtOTQgOTQgLTIyNi41dC05NCAtMjI1LjVsLTIyNSAtMjIzbDEwNCAtMTA0cTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMjEwIC0yMTBxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTA1IDEwNWwtNjAzIC02MDNxLTM3IC0zNyAtOTAgLTM3aC0yMDNsLTI1NiAtMTI4bC02NCA2NGwxMjggMjU2djIwM3EwIDUzIDM3IDkwbDYwMyA2MDNsLTEwNSAxMDVxLTEwIDEwIC0xMCAyM3QxMCAyM2wyMTAgMjEwcTEwIDEwIDIzIDEwCnQyMyAtMTBsMTA0IC0xMDRsMjIzIDIyNXE5MyA5NCAyMjUuNSA5NHQyMjYuNSAtOTR6TTUxMiA2NGw1NzYgNTc2bC0xOTIgMTkybC01NzYgLTU3NnYtMTkyaDE5MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjFmYyIgdW5pY29kZT0iJiN4ZjFmYzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE2MTUgMTUzNnE3MCAwIDEyMi41IC00Ni41dDUyLjUgLTExNi41cTAgLTYzIC00NSAtMTUxcS0zMzIgLTYyOSAtNDY1IC03NTJxLTk3IC05MSAtMjE4IC05MXEtMTI2IDAgLTIxNi41IDkyLjV0LTkwLjUgMjE5LjVxMCAxMjggOTIgMjEybDYzOCA1NzlxNTkgNTQgMTMwIDU0ek03MDYgNTAycTM5IC03NiAxMDYuNSAtMTMwdDE1MC41IC03NmwxIC03MXE0IC0yMTMgLTEyOS41IC0zNDd0LTM0OC41IC0xMzRxLTEyMyAwIC0yMTggNDYuNQp0LTE1Mi41IDEyNy41dC04Ni41IDE4M3QtMjkgMjIwcTcgLTUgNDEgLTMwdDYyIC00NC41dDU5IC0zNi41dDQ2IC0xN3E0MSAwIDU1IDM3cTI1IDY2IDU3LjUgMTEyLjV0NjkuNSA3NnQ4OCA0Ny41dDEwMyAyNS41dDEyNSAxMC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDc4IiB1bmljb2RlPSImI3hmMWZkOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc5MiAxMjh2LTM4NGgtMTc5MnYzODRxNDUgMCA4NSAxNHQ1OSAyNy41dDQ3IDM3LjVxMzAgMjcgNTEuNSAzOHQ1Ni41IDExcTI0IDAgNDQgLTd0MzEgLTE1dDMzIC0yN3EyOSAtMjUgNDcgLTM4dDU4IC0yN3Q4NiAtMTRxNDUgMCA4NSAxNC41dDU4IDI3dDQ4IDM3LjVxMjEgMTkgMzIuNSAyN3QzMSAxNXQ0My41IDdxMzUgMCA1Ni41IC0xMXQ1MS41IC0zOHEyOCAtMjQgNDcgLTM3LjV0NTkgLTI3LjV0ODUgLTE0dDg1IDE0dDU5IDI3LjUKdDQ3IDM3LjVxMzAgMjcgNTEuNSAzOHQ1Ni41IDExcTM0IDAgNTUuNSAtMTF0NTEuNSAtMzhxMjggLTI0IDQ3IC0zNy41dDU5IC0yNy41dDg1IC0xNHpNMTc5MiA0NDh2LTE5MnEtMjQgMCAtNDQgN3QtMzEgMTV0LTMzIDI3cS0yOSAyNSAtNDcgMzh0LTU4IDI3dC04NSAxNHEtNDYgMCAtODYgLTE0dC01OCAtMjd0LTQ3IC0zOHEtMjIgLTE5IC0zMyAtMjd0LTMxIC0xNXQtNDQgLTdxLTM1IDAgLTU2LjUgMTF0LTUxLjUgMzhxLTI5IDI1IC00NyAzOAp0LTU4IDI3dC04NiAxNHEtNDUgMCAtODUgLTE0LjV0LTU4IC0yN3QtNDggLTM3LjVxLTIxIC0xOSAtMzIuNSAtMjd0LTMxIC0xNXQtNDMuNSAtN3EtMzUgMCAtNTYuNSAxMXQtNTEuNSAzOHEtMjggMjQgLTQ3IDM3LjV0LTU5IDI3LjV0LTg1IDE0cS00NiAwIC04NiAtMTR0LTU4IC0yN3QtNDcgLTM4cS0zMCAtMjcgLTUxLjUgLTM4dC01Ni41IC0xMXYxOTJxMCA4MCA1NiAxMzZ0MTM2IDU2aDY0djQ0OGgyNTZ2LTQ0OGgyNTZ2NDQ4aDI1NnYtNDQ4CmgyNTZ2NDQ4aDI1NnYtNDQ4aDY0cTgwIDAgMTM2IC01NnQ1NiAtMTM2ek01MTIgMTMxMnEwIC03NyAtMzYgLTExOC41dC05MiAtNDEuNXEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjVxMCAyOSA5LjUgNTF0MjMuNSAzNHQzMSAyOHQzMSAzMS41dDIzLjUgNDQuNXQ5LjUgNjdxMzggMCA4MyAtNzR0NDUgLTE1MHpNMTAyNCAxMzEycTAgLTc3IC0zNiAtMTE4LjV0LTkyIC00MS41cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNQpxMCAyOSA5LjUgNTF0MjMuNSAzNHQzMSAyOHQzMSAzMS41dDIzLjUgNDQuNXQ5LjUgNjdxMzggMCA4MyAtNzR0NDUgLTE1MHpNMTUzNiAxMzEycTAgLTc3IC0zNiAtMTE4LjV0LTkyIC00MS41cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXEwIDI5IDkuNSA1MXQyMy41IDM0dDMxIDI4dDMxIDMxLjV0MjMuNSA0NC41dDkuNSA2N3EzOCAwIDgzIC03NHQ0NSAtMTUweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDc5IiB1bmljb2RlPSImI3hmMWZlOyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMjA0OCAwdi0xMjhoLTIwNDh2MTUzNmgxMjh2LTE0MDhoMTkyMHpNMTY2NCAxMDI0bDI1NiAtODk2aC0xNjY0djU3Nmw0NDggNTc2bDU3NiAtNTc2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDgwIiB1bmljb2RlPSImI3hmMjAwOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNzY4IDY0Nmw1NDYgLTU0NnEtMTA2IC0xMDggLTI0Ny41IC0xNjh0LTI5OC41IC02MHEtMjA5IDAgLTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdi03NjJ6TTk1NSA2NDBoNzczcTAgLTE1NyAtNjAgLTI5OC41dC0xNjggLTI0Ny41ek0xNjY0IDc2OGgtNzY4djc2OHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDgxIiB1bmljb2RlPSImI3hmMjAxOyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMjA0OCAwdi0xMjhoLTIwNDh2MTUzNmgxMjh2LTE0MDhoMTkyMHpNMTkyMCAxMjQ4di00MzVxMCAtMjEgLTE5LjUgLTI5LjV0LTM1LjUgNy41bC0xMjEgMTIxbC02MzMgLTYzM3EtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0yMzMgMjMzbC00MTYgLTQxNmwtMTkyIDE5Mmw1ODUgNTg1cTEwIDEwIDIzIDEwdDIzIC0xMGwyMzMgLTIzM2w0NjQgNDY0bC0xMjEgMTIxcS0xNiAxNiAtNy41IDM1LjV0MjkuNSAxOS41aDQzNXExNCAwIDIzIC05CnQ5IC0yM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4MiIgdW5pY29kZT0iJiN4ZjIwMjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTEyOTIgODMycTAgLTYgMTAgLTQxcTEwIC0yOSAyNSAtNDkuNXQ0MSAtMzR0NDQgLTIwdDU1IC0xNi41cTMyNSAtOTEgMzI1IC0zMzJxMCAtMTQ2IC0xMDUuNSAtMjQyLjV0LTI1NC41IC05Ni41cS01OSAwIC0xMTEuNSAxOC41dC05MS41IDQ1LjV0LTc3IDc0LjV0LTYzIDg3LjV0LTUzLjUgMTAzLjV0LTQzLjUgMTAzdC0zOS41IDEwNi41dC0zNS41IDk1cS0zMiA4MSAtNjEuNSAxMzMuNXQtNzMuNSA5Ni41dC0xMDQgNjR0LTE0MiAyMApxLTk2IDAgLTE4MyAtNTUuNXQtMTM4IC0xNDQuNXQtNTEgLTE4NXEwIC0xNjAgMTA2LjUgLTI3OS41dDI2My41IC0xMTkuNXExNzcgMCAyNTggOTVxNTYgNjMgODMgMTE2bDg0IC0xNTJxLTE1IC0zNCAtNDQgLTcwbDEgLTFxLTEzMSAtMTUyIC0zODggLTE1MnEtMTQ3IDAgLTI2OS41IDc5dC0xOTAuNSAyMDcuNXQtNjggMjc0LjVxMCAxMDUgNDMuNSAyMDZ0MTE2IDE3Ni41dDE3MiAxMjEuNXQyMDQuNSA0NnE4NyAwIDE1OSAtMTl0MTIzLjUgLTUwCnQ5NSAtODB0NzIuNSAtOTl0NTguNSAtMTE3dDUwLjUgLTEyNC41dDUwIC0xMzAuNXQ1NSAtMTI3cTk2IC0yMDAgMjMzIC0yMDBxODEgMCAxMzguNSA0OC41dDU3LjUgMTI4LjVxMCA0MiAtMTkgNzJ0LTUwLjUgNDZ0LTcyLjUgMzEuNXQtODQuNSAyN3QtODcuNSAzNHQtODEgNTJ0LTY1IDgydC0zOSAxMjIuNXEtMyAxNiAtMyAzM3EwIDExMCA4Ny41IDE5MnQxOTguNSA3OHE3OCAtMyAxMjAuNSAtMTQuNXQ5MC41IC01My41aC0xCnExMiAtMTEgMjMgLTI0LjV0MjYgLTM2dDE5IC0yNy41bC0xMjkgLTk5cS0yNiA0OSAtNTQgNzB2MXEtMjMgMjEgLTk3IDIxcS00OSAwIC04NCAtMzN0LTM1IC04M3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4MyIgdW5pY29kZT0iJiN4ZjIwMzsiIApkPSJNMTQzMiA0ODRxMCAxNzMgLTIzNCAyMzlxLTM1IDEwIC01MyAxNi41dC0zOCAyNXQtMjkgNDYuNXEwIDIgLTIgOC41dC0zIDEydC0xIDcuNXEwIDM2IDI0LjUgNTkuNXQ2MC41IDIzLjVxNTQgMCA3MSAtMTVoLTFxMjAgLTE1IDM5IC01MWw5MyA3MXEtMzkgNTQgLTQ5IDY0cS0zMyAyOSAtNjcuNSAzOXQtODUuNSAxMHEtODAgMCAtMTQyIC01Ny41dC02MiAtMTM3LjVxMCAtNyAyIC0yM3ExNiAtOTYgNjQuNSAtMTQwdDE0OC41IC03MwpxMjkgLTggNDkgLTE1LjV0NDUgLTIxLjV0MzguNSAtMzQuNXQxMy41IC00Ni41di01cTEgLTU4IC00MC41IC05M3QtMTAwLjUgLTM1cS05NyAwIC0xNjcgMTQ0cS0yMyA0NyAtNTEuNSAxMjEuNXQtNDggMTI1LjV0LTU0IDExMC41dC03NCA5NS41dC0xMDMuNSA2MC41dC0xNDcgMjQuNXEtMTAxIDAgLTE5MiAtNTZ0LTE0NCAtMTQ4dC01MCAtMTkydi0xcTQgLTEwOCA1MC41IC0xOTl0MTMzLjUgLTE0Ny41dDE5NiAtNTYuNXExODYgMCAyNzkgMTEwCnEyMCAyNyAzMSA1MWwtNjAgMTA5cS00MiAtODAgLTk5IC0xMTZ0LTE0NiAtMzZxLTExNSAwIC0xOTEgODd0LTc2IDIwNHEwIDEwNSA4MiAxODl0MTg2IDg0cTExMiAwIDE3MCAtNTMuNXQxMDQgLTE3Mi41cTggLTIxIDI1LjUgLTY4LjV0MjguNSAtNzYuNXQzMS41IC03NC41dDM4LjUgLTc0dDQ1LjUgLTYyLjV0NTUuNSAtNTMuNXQ2NiAtMzN0ODAgLTEzLjVxMTA3IDAgMTgzIDY5LjV0NzYgMTc0LjV6TTE1MzYgMTEyMHYtOTYwCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4NCIgdW5pY29kZT0iJiN4ZjIwNDsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTExNTIgNjQwcTAgMTA0IC00MC41IDE5OC41dC0xMDkuNSAxNjMuNXQtMTYzLjUgMTA5LjV0LTE5OC41IDQwLjV0LTE5OC41IC00MC41dC0xNjMuNSAtMTA5LjV0LTEwOS41IC0xNjMuNXQtNDAuNSAtMTk4LjV0NDAuNSAtMTk4LjV0MTA5LjUgLTE2My41dDE2My41IC0xMDkuNXQxOTguNSAtNDAuNXQxOTguNSA0MC41dDE2My41IDEwOS41dDEwOS41IDE2My41dDQwLjUgMTk4LjV6TTE5MjAgNjQwcTAgMTA0IC00MC41IDE5OC41CnQtMTA5LjUgMTYzLjV0LTE2My41IDEwOS41dC0xOTguNSA0MC41aC0zODZxMTE5IC05MCAxODguNSAtMjI0dDY5LjUgLTI4OHQtNjkuNSAtMjg4dC0xODguNSAtMjI0aDM4NnExMDQgMCAxOTguNSA0MC41dDE2My41IDEwOS41dDEwOS41IDE2My41dDQwLjUgMTk4LjV6TTIwNDggNjQwcTAgLTEzMCAtNTEgLTI0OC41dC0xMzYuNSAtMjA0dC0yMDQgLTEzNi41dC0yNDguNSAtNTFoLTc2OHEtMTMwIDAgLTI0OC41IDUxdC0yMDQgMTM2LjUKdC0xMzYuNSAyMDR0LTUxIDI0OC41dDUxIDI0OC41dDEzNi41IDIwNHQyMDQgMTM2LjV0MjQ4LjUgNTFoNzY4cTEzMCAwIDI0OC41IC01MXQyMDQgLTEzNi41dDEzNi41IC0yMDR0NTEgLTI0OC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDg1IiB1bmljb2RlPSImI3hmMjA1OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMCA2NDBxMCAxMzAgNTEgMjQ4LjV0MTM2LjUgMjA0dDIwNCAxMzYuNXQyNDguNSA1MWg3NjhxMTMwIDAgMjQ4LjUgLTUxdDIwNCAtMTM2LjV0MTM2LjUgLTIwNHQ1MSAtMjQ4LjV0LTUxIC0yNDguNXQtMTM2LjUgLTIwNHQtMjA0IC0xMzYuNXQtMjQ4LjUgLTUxaC03NjhxLTEzMCAwIC0yNDguNSA1MXQtMjA0IDEzNi41dC0xMzYuNSAyMDR0LTUxIDI0OC41ek0xNDA4IDEyOHExMDQgMCAxOTguNSA0MC41dDE2My41IDEwOS41CnQxMDkuNSAxNjMuNXQ0MC41IDE5OC41dC00MC41IDE5OC41dC0xMDkuNSAxNjMuNXQtMTYzLjUgMTA5LjV0LTE5OC41IDQwLjV0LTE5OC41IC00MC41dC0xNjMuNSAtMTA5LjV0LTEwOS41IC0xNjMuNXQtNDAuNSAtMTk4LjV0NDAuNSAtMTk4LjV0MTA5LjUgLTE2My41dDE2My41IC0xMDkuNXQxOTguNSAtNDAuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4NiIgdW5pY29kZT0iJiN4ZjIwNjsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTc2MiAzODRoLTMxNHEtNDAgMCAtNTcuNSAzNXQ2LjUgNjdsMTg4IDI1MXEtNjUgMzEgLTEzNyAzMXEtMTMyIDAgLTIyNiAtOTR0LTk0IC0yMjZ0OTQgLTIyNnQyMjYgLTk0cTExNSAwIDIwMyA3Mi41dDExMSAxODMuNXpNNTc2IDUxMmgxODZxLTE4IDg1IC03NSAxNDh6TTEwNTYgNTEybDI4OCAzODRoLTQ4MGwtOTkgLTEzMnExMDUgLTEwMyAxMjYgLTI1MmgxNjV6TTIxNzYgNDQ4cTAgMTMyIC05NCAyMjZ0LTIyNiA5NApxLTYwIDAgLTEyMSAtMjRsMTc0IC0yNjBxMTUgLTIzIDEwIC00OXQtMjcgLTQwcS0xNSAtMTEgLTM2IC0xMXEtMzUgMCAtNTMgMjlsLTE3NCAyNjBxLTkzIC05NSAtOTMgLTIyNXEwIC0xMzIgOTQgLTIyNnQyMjYgLTk0dDIyNiA5NHQ5NCAyMjZ6TTIzMDQgNDQ4cTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDk3IDM5LjUgMTgzLjV0MTA5LjUgMTQ5LjVsLTY1IDk4bC0zNTMgLTQ2OQpxLTE4IC0yNiAtNTEgLTI2aC0xOTdxLTIzIC0xNjQgLTE0OSAtMjc0dC0yOTQgLTExMHEtMTg1IDAgLTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXQxMzEuNSAzMTYuNXQzMTYuNSAxMzEuNXExMTQgMCAyMTUgLTU1bDEzNyAxODNoLTIyNHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDM4NHYtMTI4aDQzNWwtODUgMTI4aC0yMjJxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZxMzMgMCA1MyAtMjhsMjY3IC00MDAKcTkxIDQ0IDE5MiA0NHExODUgMCAzMTYuNSAtMTMxLjV0MTMxLjUgLTMxNi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDg3IiB1bmljb2RlPSImI3hmMjA3OyIgCmQ9Ik0zODQgMzIwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNDA4IDMyMHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTM2MiA3MTZsLTcyIDM4NHEtNSAyMyAtMjIuNSAzNy41dC00MC41IDE0LjUKaC05MThxLTIzIDAgLTQwLjUgLTE0LjV0LTIyLjUgLTM3LjVsLTcyIC0zODRxLTUgLTMwIDE0IC01M3Q0OSAtMjNoMTA2MnEzMCAwIDQ5IDIzdDE0IDUzek0xMTM2IDEzMjhxMCAyMCAtMTQgMzR0LTM0IDE0aC02NDBxLTIwIDAgLTM0IC0xNHQtMTQgLTM0dDE0IC0zNHQzNCAtMTRoNjQwcTIwIDAgMzQgMTR0MTQgMzR6TTE1MzYgNjAzdi02MDNoLTEyOHYtMTI4cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjUKdC0zNy41IDkwLjV2MTI4aC03Njh2LTEyOHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV2MTI4aC0xMjh2NjAzcTAgMTEyIDI1IDIyM2wxMDMgNDU0cTkgNzggOTcuNSAxMzd0MjMwIDg5dDMxMi41IDMwdDMxMi41IC0zMHQyMzAgLTg5dDk3LjUgLTEzN2wxMDUgLTQ1NHEyMyAtMTAyIDIzIC0yMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80ODgiIHVuaWNvZGU9IiYjeGYyMDg7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xNDYzIDcwNHEwIC0zNSAtMjUgLTYwLjV0LTYxIC0yNS41aC03MDJxLTM2IDAgLTYxIDI1LjV0LTI1IDYwLjV0MjUgNjAuNXQ2MSAyNS41aDcwMnEzNiAwIDYxIC0yNS41dDI1IC02MC41ek0xNjc3IDcwNHEwIDg2IC0yMyAxNzBoLTk4MnEtMzYgMCAtNjEgMjV0LTI1IDYwcTAgMzYgMjUgNjF0NjEgMjVoOTA4cS04OCAxNDMgLTIzNSAyMjd0LTMyMCA4NHEtMTc3IDAgLTMyNy41IC04Ny41dC0yMzggLTIzNy41dC04Ny41IC0zMjcKcTAgLTg2IDIzIC0xNzBoOTgycTM2IDAgNjEgLTI1dDI1IC02MHEwIC0zNiAtMjUgLTYxdC02MSAtMjVoLTkwOHE4OCAtMTQzIDIzNS41IC0yMjd0MzIwLjUgLTg0cTEzMiAwIDI1MyA1MS41dDIwOCAxMzl0MTM5IDIwOHQ1MiAyNTMuNXpNMjA0OCA5NTlxMCAtMzUgLTI1IC02MHQtNjEgLTI1aC0xMzFxMTcgLTg1IDE3IC0xNzBxMCAtMTY3IC02NS41IC0zMTkuNXQtMTc1LjUgLTI2M3QtMjYyLjUgLTE3NnQtMzE5LjUgLTY1LjUKcS0yNDYgMCAtNDQ4LjUgMTMzdC0zMDEuNSAzNTBoLTE4OXEtMzYgMCAtNjEgMjV0LTI1IDYxcTAgMzUgMjUgNjB0NjEgMjVoMTMycS0xNyA4NSAtMTcgMTcwcTAgMTY3IDY1LjUgMzE5LjV0MTc1LjUgMjYzdDI2Mi41IDE3NnQzMjAuNSA2NS41cTI0NSAwIDQ0Ny41IC0xMzN0MzAxLjUgLTM1MGgxODhxMzYgMCA2MSAtMjV0MjUgLTYxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDg5IiB1bmljb2RlPSImI3hmMjA5OyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNOTUzIDExNThsLTExNCAtMzI4bDExNyAtMjFxMTY1IDQ1MSAxNjUgNTE4cTAgNTYgLTM4IDU2cS01NyAwIC0xMzAgLTIyNXpNNjU0IDQ3MWwzMyAtODhxMzcgNDIgNzEgNjdsLTMzIDUuNXQtMzguNSA3dC0zMi41IDguNXpNMzYyIDEzNjdxMCAtOTggMTU5IC01MjFxMTcgMTAgNDkgMTBxMTUgMCA3NSAtNWwtMTIxIDM1MXEtNzUgMjIwIC0xMjMgMjIwcS0xOSAwIC0yOSAtMTcuNXQtMTAgLTM3LjV6TTI4MyA2MDhxMCAtMzYgNTEuNSAtMTE5CnQxMTcuNSAtMTUzdDEwMCAtNzBxMTQgMCAyNS41IDEzdDExLjUgMjdxMCAyNCAtMzIgMTAycS0xMyAzMiAtMzIgNzJ0LTQ3LjUgODl0LTYxLjUgODF0LTYyIDMycS0yMCAwIC00NS41IC0yN3QtMjUuNSAtNDd6TTEyNSAyNzNxMCAtNDEgMjUgLTEwNHE1OSAtMTQ1IDE4My41IC0yMjd0MjgxLjUgLTgycTIyNyAwIDM4MiAxNzBxMTUyIDE2OSAxNTIgNDI3cTAgNDMgLTEgNjd0LTExLjUgNjJ0LTMwLjUgNTZxLTU2IDQ5IC0yMTEuNSA3NS41CnQtMjcwLjUgMjYuNXEtMzcgMCAtNDkgLTExcS0xMiAtNSAtMTIgLTM1cTAgLTM0IDIxLjUgLTYwdDU1LjUgLTQwdDc3LjUgLTIzLjV0ODcuNSAtMTEuNXQ4NSAtNHQ3MCAwaDIzcTI0IDAgNDAgLTE5cTE1IC0xOSAxOSAtNTVxLTI4IC0yOCAtOTYgLTU0cS02MSAtMjIgLTkzIC00NnEtNjQgLTQ2IC0xMDguNSAtMTE0dC00NC41IC0xMzdxMCAtMzEgMTguNSAtODguNXQxOC41IC04Ny41bC0zIC0xMnEtNCAtMTIgLTQgLTE0CnEtMTM3IDEwIC0xNDYgMjE2cS04IC0yIC00MSAtMnEyIC03IDIgLTIxcTAgLTUzIC00MC41IC04OS41dC05NC41IC0zNi41cS04MiAwIC0xNjYuNSA3OHQtODQuNSAxNTlxMCAzNCAzMyA2N3E1MiAtNjQgNjAgLTc2cTc3IC0xMDQgMTMzIC0xMDRxMTIgMCAyNi41IDguNXQxNC41IDIwLjVxMCAzNCAtODcuNSAxNDV0LTExNi41IDExMXEtNDMgMCAtNzAgLTQ0LjV0LTI3IC05MC41ek0xMSAyNjRxMCAxMDEgNDIuNSAxNjN0MTM2LjUgODgKcS0yOCA3NCAtMjggMTA0cTAgNjIgNjEgMTIzdDEyMiA2MXEyOSAwIDcwIC0xNXEtMTYzIDQ2MiAtMTYzIDU2N3EwIDgwIDQxIDEzMC41dDExOSA1MC41cTEzMSAwIDMyNSAtNTgxcTYgLTE3IDggLTIzcTYgMTYgMjkgNzkuNXQ0My41IDExOC41dDU0IDEyNy41dDY0LjUgMTIzdDcwLjUgODYuNXQ3Ni41IDM2cTcxIDAgMTEyIC00OXQ0MSAtMTIycTAgLTEwOCAtMTU5IC01NTBxNjEgLTE1IDEwMC41IC00NnQ1OC41IC03OHQyNiAtOTMuNQp0NyAtMTEwLjVxMCAtMTUwIC00NyAtMjgwdC0xMzIgLTIyNXQtMjExIC0xNTB0LTI3OCAtNTVxLTExMSAwIC0yMjMgNDJxLTE0OSA1NyAtMjU4IDE5MS41dC0xMDkgMjg2LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTAiIHVuaWNvZGU9IiYjeGYyMGE7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik03ODUgNTI4aDIwN3EtMTQgLTE1OCAtOTguNSAtMjQ4LjV0LTIxNC41IC05MC41cS0xNjIgMCAtMjU0LjUgMTE2dC05Mi41IDMxNnEwIDE5NCA5MyAzMTEuNXQyMzMgMTE3LjVxMTQ4IDAgMjMyIC04N3Q5NyAtMjQ3aC0yMDNxLTUgNjQgLTM1LjUgOTl0LTgxLjUgMzVxLTU3IDAgLTg4LjUgLTYwLjV0LTMxLjUgLTE3Ny41cTAgLTQ4IDUgLTg0dDE4IC02OS41dDQwIC01MS41dDY2IC0xOHE5NSAwIDEwOSAxMzl6TTE0OTcgNTI4aDIwNgpxLTE0IC0xNTggLTk4IC0yNDguNXQtMjE0IC05MC41cS0xNjIgMCAtMjU0LjUgMTE2dC05Mi41IDMxNnEwIDE5NCA5MyAzMTEuNXQyMzMgMTE3LjVxMTQ4IDAgMjMyIC04N3Q5NyAtMjQ3aC0yMDRxLTQgNjQgLTM1IDk5dC04MSAzNXEtNTcgMCAtODguNSAtNjAuNXQtMzEuNSAtMTc3LjVxMCAtNDggNSAtODR0MTggLTY5LjV0MzkuNSAtNTEuNXQ2NS41IC0xOHE0OSAwIDc2LjUgMzh0MzMuNSAxMDF6TTE4NTYgNjQ3cTAgMjA3IC0xNS41IDMwNwp0LTYwLjUgMTYxcS02IDggLTEzLjUgMTR0LTIxLjUgMTV0LTE2IDExcS04NiA2MyAtNjk3IDYzcS02MjUgMCAtNzEwIC02M3EtNSAtNCAtMTcuNSAtMTEuNXQtMjEgLTE0dC0xNC41IC0xNC41cS00NSAtNjAgLTYwIC0xNTkuNXQtMTUgLTMwOC41cTAgLTIwOCAxNSAtMzA3LjV0NjAgLTE2MC41cTYgLTggMTUgLTE1dDIwLjUgLTE0dDE3LjUgLTEycTQ0IC0zMyAyMzkuNSAtNDl0NDcwLjUgLTE2cTYxMCAwIDY5NyA2NXE1IDQgMTcgMTF0MjAuNSAxNAp0MTMuNSAxNnE0NiA2MCA2MSAxNTl0MTUgMzA5ek0yMDQ4IDE0MDh2LTE1MzZoLTIwNDh2MTUzNmgyMDQ4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDkxIiB1bmljb2RlPSImI3hmMjBiOyIgCmQ9Ik05OTIgOTEydi00OTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTYwcS0xNCAwIC0yMyA5dC05IDIzdjQ5NnEwIDExMiAtODAgMTkydC0xOTIgODBoLTI3MnYtMTE1MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNjBxLTE0IDAgLTIzIDl0LTkgMjN2MTM0NHEwIDE0IDkgMjN0MjMgOWg0NjRxMTM1IDAgMjQ5IC02Ni41dDE4MC41IC0xODAuNXQ2Ni41IC0yNDl6TTEzNzYgMTM3NnYtODgwcTAgLTEzNSAtNjYuNSAtMjQ5dC0xODAuNSAtMTgwLjUKdC0yNDkgLTY2LjVoLTQ2NHEtMTQgMCAtMjMgOXQtOSAyM3Y5NjBxMCAxNCA5IDIzdDIzIDloMTYwcTE0IDAgMjMgLTl0OSAtMjN2LTc2OGgyNzJxMTEyIDAgMTkyIDgwdDgwIDE5MnY4ODBxMCAxNCA5IDIzdDIzIDloMTYwcTE0IDAgMjMgLTl0OSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTIiIHVuaWNvZGU9IiYjeGYyMGM7IiAKZD0iTTEzMTEgNjk0di0xMTRxMCAtMjQgLTEzLjUgLTM4dC0zNy41IC0xNGgtMjAycS0yNCAwIC0zOCAxNHQtMTQgMzh2MTE0cTAgMjQgMTQgMzh0MzggMTRoMjAycTI0IDAgMzcuNSAtMTR0MTMuNSAtMzh6TTgyMSA0NjR2MjUwcTAgNTMgLTMyLjUgODUuNXQtODUuNSAzMi41aC0xMzNxLTY4IDAgLTk2IC01MnEtMjggNTIgLTk2IDUyaC0xMzBxLTUzIDAgLTg1LjUgLTMyLjV0LTMyLjUgLTg1LjV2LTI1MHEwIC0yMiAyMSAtMjJoNTUKcTIyIDAgMjIgMjJ2MjMwcTAgMjQgMTMuNSAzOHQzOC41IDE0aDk0cTI0IDAgMzggLTE0dDE0IC0zOHYtMjMwcTAgLTIyIDIxIC0yMmg1NHEyMiAwIDIyIDIydjIzMHEwIDI0IDE0IDM4dDM4IDE0aDk3cTI0IDAgMzcuNSAtMTR0MTMuNSAtMzh2LTIzMHEwIC0yMiAyMiAtMjJoNTVxMjEgMCAyMSAyMnpNMTQxMCA1NjB2MTU0cTAgNTMgLTMzIDg1LjV0LTg2IDMyLjVoLTI2NHEtNTMgMCAtODYgLTMyLjV0LTMzIC04NS41di00MTAKcTAgLTIxIDIyIC0yMWg1NXEyMSAwIDIxIDIxdjE4MHEzMSAtNDIgOTQgLTQyaDE5MXE1MyAwIDg2IDMyLjV0MzMgODUuNXpNMTUzNiAxMTc2di0xMDcycTAgLTk2IC02OCAtMTY0dC0xNjQgLTY4aC0xMDcycS05NiAwIC0xNjQgNjh0LTY4IDE2NHYxMDcycTAgOTYgNjggMTY0dDE2NCA2OGgxMDcycTk2IDAgMTY0IC02OHQ2OCAtMTY0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDkzIiB1bmljb2RlPSImI3hmMjBkOyIgCmQ9Ik05MTUgNDUwaC0yOTRsMTQ3IDU1MXpNMTAwMSAxMjhoMzExbC0zMjQgMTAyNGgtNDQwbC0zMjQgLTEwMjRoMzExbDM4MyAzMTR6TTE1MzYgMTEyMHYtOTYwcTAgLTExOCAtODUgLTIwM3QtMjAzIC04NWgtOTYwcS0xMTggMCAtMjAzIDg1dC04NSAyMDN2OTYwcTAgMTE4IDg1IDIwM3QyMDMgODVoOTYwcTExOCAwIDIwMyAtODV0ODUgLTIwM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5NCIgdW5pY29kZT0iJiN4ZjIwZTsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTIwNDggNjQxcTAgLTIxIC0xMyAtMzYuNXQtMzMgLTE5LjVsLTIwNSAtMzU2cTMgLTkgMyAtMThxMCAtMjAgLTEyLjUgLTM1LjV0LTMyLjUgLTE5LjVsLTE5MyAtMzM3cTMgLTggMyAtMTZxMCAtMjMgLTE2LjUgLTQwdC00MC41IC0xN3EtMjUgMCAtNDEgMThoLTQwMHEtMTcgLTIwIC00MyAtMjB0LTQzIDIwaC0zOTlxLTE3IC0yMCAtNDMgLTIwcS0yMyAwIC00MCAxNi41dC0xNyA0MC41cTAgOCA0IDIwbC0xOTMgMzM1CnEtMjAgNCAtMzIuNSAxOS41dC0xMi41IDM1LjVxMCA5IDMgMThsLTIwNiAzNTZxLTIwIDUgLTMyLjUgMjAuNXQtMTIuNSAzNS41cTAgMjEgMTMuNSAzNi41dDMzLjUgMTkuNWwxOTkgMzQ0cTAgMSAtMC41IDN0LTAuNSAzcTAgMzYgMzQgNTFsMjA5IDM2M3EtNCAxMCAtNCAxOHEwIDI0IDE3IDQwLjV0NDAgMTYuNXEyNiAwIDQ0IC0yMWgzOTZxMTYgMjEgNDMgMjF0NDMgLTIxaDM5OHExOCAyMSA0NCAyMXEyMyAwIDQwIC0xNi41dDE3IC00MC41CnEwIC02IC00IC0xOGwyMDcgLTM1OHEyMyAtMSAzOSAtMTcuNXQxNiAtMzguNXEwIC0xMyAtNyAtMjdsMTg3IC0zMjRxMTkgLTQgMzEuNSAtMTkuNXQxMi41IC0zNS41ek0xMDYzIC0xNThoMzg5bC0zNDIgMzU0aC0xNDNsLTM0MiAtMzU0aDM2MHExOCAxNiAzOSAxNnQzOSAtMTZ6TTExMiA2NTRxMSAtNCAxIC0xM3EwIC0xMCAtMiAtMTVsMjA4IC0zNjBsMTUgLTZsMTg4IDE5OXYzNDdsLTE4NyAxOTRxLTEzIC04IC0yOSAtMTB6TTk4NiAxNDM4CmgtMzg4bDE5MCAtMjAwbDU1NCAyMDBoLTI4MHEtMTYgLTE2IC0zOCAtMTZ0LTM4IDE2ek0xNjg5IDIyNnExIDYgNSAxMWwtNjQgNjhsLTE3IC03OWg3NnpNMTU4MyAyMjZsMjIgMTA1bC0yNTIgMjY2bC0yOTYgLTMwN2w2MyAtNjRoNDYzek0xNDk1IC0xNDJsMTYgMjhsNjUgMzEwaC00MjdsMzMzIC0zNDNxOCA0IDEzIDV6TTU3OCAtMTU4aDVsMzQyIDM1NGgtMzczdi0zMzVsNCAtNnExNCAtNSAyMiAtMTN6TTU1MiAyMjZoNDAybDY0IDY2CmwtMzA5IDMyMWwtMTU3IC0xNjZ2LTIyMXpNMzU5IDIyNmgxNjN2MTg5bC0xNjggLTE3N3E0IC04IDUgLTEyek0zNTggMTA1MXEwIC0xIDAuNSAtMnQwLjUgLTJxMCAtMTYgLTggLTI5bDE3MSAtMTc3djI2OXpNNTUyIDExMjF2LTMxMWwxNTMgLTE1N2wyOTcgMzE0bC0yMjMgMjM2ek01NTYgMTQyNWwtNCAtOHYtMjY0bDIwNSA3NGwtMTkxIDIwMXEtNiAtMiAtMTAgLTN6TTE0NDcgMTQzOGgtMTZsLTYyMSAtMjI0bDIxMyAtMjI1ek0xMDIzIDk0NgpsLTI5NyAtMzE1bDMxMSAtMzE5bDI5NiAzMDd6TTY4OCA2MzRsLTEzNiAxNDF2LTI4NHpNMTAzOCAyNzBsLTQyIC00NGg4NXpNMTM3NCA2MThsMjM4IC0yNTFsMTMyIDYyNGwtMyA1bC0xIDF6TTE3MTggMTAxOHEtOCAxMyAtOCAyOXYybC0yMTYgMzc2cS01IDEgLTEzIDVsLTQzNyAtNDYzbDMxMCAtMzI3ek01MjIgMTE0MnYyMjNsLTE2MyAtMjgyek01MjIgMTk2aC0xNjNsMTYzIC0yODN2Mjgzek0xNjA3IDE5NmwtNDggLTIyN2wxMzAgMjI3aC04Mgp6TTE3MjkgMjY2bDIwNyAzNjFxLTIgMTAgLTIgMTRxMCAxIDMgMTZsLTE3MSAyOTZsLTEyOSAtNjEybDc3IC04MnE1IDMgMTUgN3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjIxMCIgdW5pY29kZT0iJiN4ZjIxMDsiIApkPSJNMCA4NTZxMCAxMzEgOTEuNSAyMjYuNXQyMjIuNSA5NS41aDc0MmwzNTIgMzU4di0xNDcwcTAgLTEzMiAtOTEuNSAtMjI3dC0yMjIuNSAtOTVoLTc4MHEtMTMxIDAgLTIyMi41IDk1dC05MS41IDIyN3Y3OTB6TTEyMzIgMTAybC0xNzYgMTgwdjQyNXEwIDQ2IC0zMiA3OXQtNzggMzNoLTQ4NHEtNDYgMCAtNzggLTMzdC0zMiAtNzl2LTQ5MnEwIC00NiAzMi41IC03OS41dDc3LjUgLTMzLjVoNzcweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDk2IiB1bmljb2RlPSImI3hmMjExOyIgCmQ9Ik05MzQgMTM4NnEtMzE3IC0xMjEgLTU1NiAtMzYyLjV0LTM1OCAtNTYwLjVxLTIwIDg5IC0yMCAxNzZxMCAyMDggMTAyLjUgMzg0LjV0Mjc4LjUgMjc5dDM4NCAxMDIuNXE4MiAwIDE2OSAtMTl6TTEyMDMgMTI2N3E5MyAtNjUgMTY0IC0xNTVxLTM4OSAtMTEzIC02NzQuNSAtNDAwLjV0LTM5Ni41IC02NzYuNXEtOTMgNzIgLTE1NSAxNjJxMTEyIDM4NiAzOTUgNjcxdDY2NyAzOTl6TTQ3MCAtNjdxMTE1IDM1NiAzNzkuNSA2MjJ0NjE5LjUgMzg0CnE0MCAtOTIgNTQgLTE5NXEtMjkyIC0xMjAgLTUxNiAtMzQ1dC0zNDMgLTUxOHEtMTAzIDE0IC0xOTQgNTJ6TTE1MzYgLTEyNXEtMTkzIDUwIC0zNjcgMTE1cS0xMzUgLTg0IC0yOTAgLTEwN3ExMDkgMjA1IDI3NCAzNzAuNXQzNjkgMjc1LjVxLTIxIC0xNTIgLTEwMSAtMjg0cTY1IC0xNzUgMTE1IC0zNzB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImYyMTIiIHVuaWNvZGU9IiYjeGYyMTI7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xODkzIDExNDRsMTU1IC0xMjcycS0xMzEgMCAtMjU3IDU3cS0yMDAgOTEgLTM5MyA5MXEtMjI2IDAgLTM3NCAtMTQ4cS0xNDggMTQ4IC0zNzQgMTQ4cS0xOTMgMCAtMzkzIC05MXEtMTI4IC01NyAtMjUyIC01N2gtNWwxNTUgMTI3MnEyMjQgMTI3IDQ4MiAxMjdxMjMzIDAgMzg3IC0xMDZxMTU0IDEwNiAzODcgMTA2cTI1OCAwIDQ4MiAtMTI3ek0xMzk4IDE1N3ExMjkgMCAyMzIgLTI4LjV0MjYwIC05My41bC0xMjQgMTAyMQpxLTE3MSA3OCAtMzY4IDc4cS0yMjQgMCAtMzc0IC0xNDFxLTE1MCAxNDEgLTM3NCAxNDFxLTE5NyAwIC0zNjggLTc4bC0xMjQgLTEwMjFxMTA1IDQzIDE2NS41IDY1dDE0OC41IDM5LjV0MTc4IDE3LjVxMjAyIDAgMzc0IC0xMDhxMTcyIDEwOCAzNzQgMTA4ek0xNDM4IDE5MWwtNTUgOTA3cS0yMTEgLTQgLTM1OSAtMTU1cS0xNTIgMTU1IC0zNzQgMTU1cS0xNzYgMCAtMzM2IC02NmwtMTE0IC05NDFxMTI0IDUxIDIyOC41IDc2dDIyMS41IDI1CnEyMDkgMCAzNzQgLTEwMnExNzIgMTA3IDM3NCAxMDJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTgiIHVuaWNvZGU9IiYjeGYyMTM7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xNTAwIDE2NXY3MzNxMCAyMSAtMTUgMzZ0LTM1IDE1aC05M3EtMjAgMCAtMzUgLTE1dC0xNSAtMzZ2LTczM3EwIC0yMCAxNSAtMzV0MzUgLTE1aDkzcTIwIDAgMzUgMTV0MTUgMzV6TTEyMTYgMTY1djUzMXEwIDIwIC0xNSAzNXQtMzUgMTVoLTEwMXEtMjAgMCAtMzUgLTE1dC0xNSAtMzV2LTUzMXEwIC0yMCAxNSAtMzV0MzUgLTE1aDEwMXEyMCAwIDM1IDE1dDE1IDM1ek05MjQgMTY1djQyOXEwIDIwIC0xNSAzNXQtMzUgMTVoLTEwMQpxLTIwIDAgLTM1IC0xNXQtMTUgLTM1di00MjlxMCAtMjAgMTUgLTM1dDM1IC0xNWgxMDFxMjAgMCAzNSAxNXQxNSAzNXpNNjMyIDE2NXYzNjJxMCAyMCAtMTUgMzV0LTM1IDE1aC0xMDFxLTIwIDAgLTM1IC0xNXQtMTUgLTM1di0zNjJxMCAtMjAgMTUgLTM1dDM1IC0xNWgxMDFxMjAgMCAzNSAxNXQxNSAzNXpNMjA0OCAzMTFxMCAtMTY2IC0xMTggLTI4NHQtMjg0IC0xMThoLTEyNDRxLTE2NiAwIC0yODQgMTE4dC0xMTggMjg0CnEwIDExNiA2MyAyMTQuNXQxNjggMTQ4LjVxLTEwIDM0IC0xMCA3M3EwIDExMyA4MC41IDE5My41dDE5My41IDgwLjVxMTAyIDAgMTgwIC02N3E0NSAxODMgMTk0IDMwMHQzMzggMTE3cTE0OSAwIDI3NSAtNzMuNXQxOTkuNSAtMTk5LjV0NzMuNSAtMjc1cTAgLTY2IC0xNCAtMTIycTEzNSAtMzMgMjIxIC0xNDIuNXQ4NiAtMjQ3LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTkiIHVuaWNvZGU9IiYjeGYyMTQ7IiAKZD0iTTAgMTUzNmgxNTM2di0xMzkybC03NzYgLTMzOGwtNzYwIDMzOHYxMzkyek0xNDM2IDIwOXY5MjZoLTEzMzZ2LTkyNmw2NjEgLTI5NHpNMTQzNiAxMjM1djIwMWgtMTMzNnYtMjAxaDEzMzZ6TTE4MSA5Mzd2LTExNWgtMzd2MTE1aDM3ek0xODEgNzg5di0xMTVoLTM3djExNWgzN3pNMTgxIDY0MXYtMTE1aC0zN3YxMTVoMzd6TTE4MSA0OTN2LTExNWgtMzd2MTE1aDM3ek0xODEgMzQ1di0xMTVoLTM3djExNWgzN3pNMjA3IDIwMmwxNSAzNApsMTA1IC00N2wtMTUgLTMzek0zNDMgMTQybDE1IDM0bDEwNSAtNDZsLTE1IC0zNHpNNDc4IDgybDE1IDM0bDEwNSAtNDZsLTE1IC0zNHpNNjE0IDIzbDE1IDMzbDEwNCAtNDZsLTE1IC0zNHpNNzk3IDEwbDEwNSA0NmwxNSAtMzNsLTEwNSAtNDd6TTkzMiA3MGwxMDUgNDZsMTUgLTM0bC0xMDUgLTQ2ek0xMDY4IDEzMGwxMDUgNDZsMTUgLTM0bC0xMDUgLTQ2ek0xMjAzIDE4OWwxMDUgNDdsMTUgLTM0bC0xMDUgLTQ2ek0yNTkgMTM4OXYtMzZoLTExNAp2MzZoMTE0ek00MjEgMTM4OXYtMzZoLTExNXYzNmgxMTV6TTU4MyAxMzg5di0zNmgtMTE1djM2aDExNXpNNzQ0IDEzODl2LTM2aC0xMTR2MzZoMTE0ek05MDYgMTM4OXYtMzZoLTExNHYzNmgxMTR6TTEwNjggMTM4OXYtMzZoLTExNXYzNmgxMTV6TTEyMzAgMTM4OXYtMzZoLTExNXYzNmgxMTV6TTEzOTEgMTM4OXYtMzZoLTExNHYzNmgxMTR6TTE4MSAxMDQ5di03OWgtMzd2MTE1aDExNXYtMzZoLTc4ek00MjEgMTA4NXYtMzZoLTExNXYzNmgxMTV6Ck01ODMgMTA4NXYtMzZoLTExNXYzNmgxMTV6TTc0NCAxMDg1di0zNmgtMTE0djM2aDExNHpNOTA2IDEwODV2LTM2aC0xMTR2MzZoMTE0ek0xMDY4IDEwODV2LTM2aC0xMTV2MzZoMTE1ek0xMjMwIDEwODV2LTM2aC0xMTV2MzZoMTE1ek0xMzU1IDk3MHY3OWgtNzh2MzZoMTE1di0xMTVoLTM3ek0xMzU1IDgyMnYxMTVoMzd2LTExNWgtMzd6TTEzNTUgNjc0djExNWgzN3YtMTE1aC0zN3pNMTM1NSA1MjZ2MTE1aDM3di0xMTVoLTM3ek0xMzU1IDM3OAp2MTE1aDM3di0xMTVoLTM3ek0xMzU1IDIzMHYxMTVoMzd2LTExNWgtMzd6TTc2MCAyNjVxLTEyOSAwIC0yMjEgOTEuNXQtOTIgMjIxLjVxMCAxMjkgOTIgMjIxdDIyMSA5MnExMzAgMCAyMjEuNSAtOTJ0OTEuNSAtMjIxcTAgLTEzMCAtOTEuNSAtMjIxLjV0LTIyMS41IC05MS41ek01OTUgNjQ2cTAgLTM2IDE5LjUgLTU2LjV0NDkuNSAtMjV0NjQgLTd0NjQgLTJ0NDkuNSAtOXQxOS41IC0zMC41cTAgLTQ5IC0xMTIgLTQ5cS05NyAwIC0xMjMgNTEKaC0zbC0zMSAtNjNxNjcgLTQyIDE2MiAtNDJxMjkgMCA1Ni41IDV0NTUuNSAxNnQ0NS41IDMzdDE3LjUgNTNxMCA0NiAtMjcuNSA2OS41dC02Ny41IDI3dC03OS41IDN0LTY3IDV0LTI3LjUgMjUuNXEwIDIxIDIwLjUgMzN0NDAuNSAxNXQ0MSAzcTM0IDAgNzAuNSAtMTF0NTEuNSAtMzRoM2wzMCA1OHEtMyAxIC0yMSA4LjV0LTIyLjUgOXQtMTkuNSA3dC0yMiA3dC0yMCA0LjV0LTI0IDR0LTIzIDFxLTI5IDAgLTU2LjUgLTV0LTU0IC0xNi41CnQtNDMgLTM0dC0xNi41IC01My41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTAwIiB1bmljb2RlPSImI3hmMjE1OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNODYzIDUwNHEwIDExMiAtNzkuNSAxOTEuNXQtMTkxLjUgNzkuNXQtMTkxIC03OS41dC03OSAtMTkxLjV0NzkgLTE5MXQxOTEgLTc5dDE5MS41IDc5dDc5LjUgMTkxek0xNzI2IDUwNXEwIDExMiAtNzkgMTkxdC0xOTEgNzl0LTE5MS41IC03OXQtNzkuNSAtMTkxcTAgLTExMyA3OS41IC0xOTJ0MTkxLjUgLTc5dDE5MSA3OS41dDc5IDE5MS41ek0yMDQ4IDEzMTR2LTEzNDhxMCAtNDQgLTMxLjUgLTc1LjV0LTc2LjUgLTMxLjVoLTE4MzIKcS00NSAwIC03Ni41IDMxLjV0LTMxLjUgNzUuNXYxMzQ4cTAgNDQgMzEuNSA3NS41dDc2LjUgMzEuNWg0MzFxNDQgMCA3NiAtMzEuNXQzMiAtNzUuNXYtMTYxaDc1NHYxNjFxMCA0NCAzMiA3NS41dDc2IDMxLjVoNDMxcTQ1IDAgNzYuNSAtMzEuNXQzMS41IC03NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTAxIiB1bmljb2RlPSImI3hmMjE2OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMTQzMCA5NTN6TTE2OTAgNzQ5cTE0OCAwIDI1MyAtOTguNXQxMDUgLTI0NC41cTAgLTE1NyAtMTA5IC0yNjEuNXQtMjY3IC0xMDQuNXEtODUgMCAtMTYyIDI3LjV0LTEzOCA3My41dC0xMTggMTA2dC0xMDkgMTI2dC0xMDMuNSAxMzIuNXQtMTA4LjUgMTI2LjV0LTExNyAxMDZ0LTEzNiA3My41dC0xNTkgMjcuNXEtMTU0IDAgLTI1MS41IC05MS41dC05Ny41IC0yNDQuNXEwIC0xNTcgMTA0IC0yNTB0MjYzIC05M3ExMDAgMCAyMDggMzcuNQp0MTkzIDk4LjVxNSA0IDIxIDE4LjV0MzAgMjR0MjIgOS41cTE0IDAgMjQuNSAtMTAuNXQxMC41IC0yNC41cTAgLTI0IC02MCAtNzdxLTEwMSAtODggLTIzNC41IC0xNDJ0LTI2MC41IC01NHEtMTMzIDAgLTI0NS41IDU4dC0xODAgMTY1dC02Ny41IDI0MXEwIDIwNSAxNDEuNSAzNDF0MzQ3LjUgMTM2cTEyMCAwIDIyNi41IC00My41dDE4NS41IC0xMTN0MTUxLjUgLTE1M3QxMzkgLTE2Ny41dDEzMy41IC0xNTMuNXQxNDkuNSAtMTEzCnQxNzIuNSAtNDMuNXExMDIgMCAxNjguNSA2MS41dDY2LjUgMTYyLjVxMCA5NSAtNjQuNSAxNTl0LTE1OS41IDY0cS0zMCAwIC04MS41IC0xOC41dC02OC41IC0xOC41cS0yMCAwIC0zNS41IDE1dC0xNS41IDM1cTAgMTggOC41IDU3dDguNSA1OXEwIDE1OSAtMTA3LjUgMjYzdC0yNjYuNSAxMDRxLTU4IDAgLTExMS41IC0xOC41dC04NCAtNDAuNXQtNTUuNSAtNDAuNXQtMzMgLTE4LjVxLTE1IDAgLTI1LjUgMTAuNXQtMTAuNSAyNS41CnEwIDE5IDI1IDQ2cTU5IDY3IDE0NyAxMDMuNXQxODIgMzYuNXExOTEgMCAzMTggLTEyNS41dDEyNyAtMzE1LjVxMCAtMzcgLTQgLTY2cTU3IDE1IDExNSAxNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUwMiIgdW5pY29kZT0iJiN4ZjIxNzsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTEyMTYgODMycTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4djEyOHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1di0xMjhoLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOWgxMjh2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1djEyOGgxMjhxMjYgMCA0NSAxOXQxOSA0NXpNNjQwIDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41CnQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTUzNiAwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTY2NCAxMDg4di01MTJxMCAtMjQgLTE2IC00Mi41dC00MSAtMjEuNWwtMTA0NCAtMTIycTEgLTcgNC41IC0yMS41dDYgLTI2LjV0Mi41IC0yMnEwIC0xNiAtMjQgLTY0aDkyMApxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOWgtMTAyNHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTQgMTEgMzkuNXQyOS41IDU5LjV0MjAuNSAzOGwtMTc3IDgyM2gtMjA0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMjU2cTE2IDAgMjguNSAtNi41dDIwIC0xNS41dDEzIC0yNC41dDcuNSAtMjYuNXQ1LjUgLTI5LjV0NC41IC0yNS41aDEyMDFxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTAzIiB1bmljb2RlPSImI3hmMjE4OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTlsLTE0NyAtMTQ2djI5M3EwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1di0yOTNsLTE0NyAxNDZxLTE5IDE5IC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1bDI1NiAtMjU2cTE5IC0xOSA0NSAtMTl0NDUgMTlsMjU2IDI1NnExOSAxOSAxOSA0NXpNNjQwIDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41CnQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTUzNiAwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTY2NCAxMDg4di01MTJxMCAtMjQgLTE2IC00Mi41dC00MSAtMjEuNWwtMTA0NCAtMTIycTEgLTcgNC41IC0yMS41dDYgLTI2LjV0Mi41IC0yMnEwIC0xNiAtMjQgLTY0aDkyMApxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOWgtMTAyNHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTQgMTEgMzkuNXQyOS41IDU5LjV0MjAuNSAzOGwtMTc3IDgyM2gtMjA0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMjU2cTE2IDAgMjguNSAtNi41dDIwIC0xNS41dDEzIC0yNC41dDcuNSAtMjYuNXQ1LjUgLTI5LjV0NC41IC0yNS41aDEyMDFxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA0IiB1bmljb2RlPSImI3hmMjE5OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMjEyIDc2OGw2MjMgLTY2NWwtMzAwIDY2NWgtMzIzek0xMDI0IC00bDM0OSA3NzJoLTY5OHpNNTM4IDg5NmwyMDQgMzg0aC0yNjJsLTI4OCAtMzg0aDM0NnpNMTIxMyAxMDNsNjIzIDY2NWgtMzIzek02ODMgODk2aDY4MmwtMjA0IDM4NGgtMjc0ek0xNTEwIDg5NmgzNDZsLTI4OCAzODRoLTI2MnpNMTY1MSAxMzgybDM4NCAtNTEycTE0IC0xOCAxMyAtNDEuNXQtMTcgLTQwLjVsLTk2MCAtMTAyNHEtMTggLTIwIC00NyAtMjB0LTQ3IDIwCmwtOTYwIDEwMjRxLTE2IDE3IC0xNyA0MC41dDEzIDQxLjVsMzg0IDUxMnExOCAyNiA1MSAyNmgxMTUycTMzIDAgNTEgLTI2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA1IiB1bmljb2RlPSImI3hmMjFhOyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMTgxMSAtMTlxMTkgMTkgNDUgMTl0NDUgLTE5bDEyOCAtMTI4bC05MCAtOTBsLTgzIDgzbC04MyAtODNxLTE4IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzCnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTEyOCAxMjhsOTAgOTBsODMgLTgzbDgzIDgzcTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODNsODMgODNxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M2w4MyA4M3ExOSAxOSA0NSAxOXQ0NSAtMTlsODMgLTgzbDgzIDgzcTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODNsODMgODNxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M2w4MyA4MwpxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M3pNMjM3IDE5cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTEyOCAxMjhsOTAgOTBsODMgLTgybDgzIDgycTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODJsNjQgNjR2MjkzbC0yMTAgMzE0cS0xNyAyNiAtNyA1Ni41dDQwIDQwLjVsMTc3IDU4djI5OWgxMjh2MTI4aDI1NnYxMjhoMjU2di0xMjhoMjU2di0xMjhoMTI4di0yOTlsMTc3IC01OHEzMCAtMTAgNDAgLTQwLjV0LTcgLTU2LjVsLTIxMCAtMzE0CnYtMjkzbDE5IDE4cTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODJsODMgODJxMTkgMTkgNDUgMTl0NDUgLTE5bDEyOCAtMTI4bC05MCAtOTBsLTgzIDgzbC04MyAtODNxLTE4IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04MwpxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M3pNNjQwIDExNTJ2LTEyOGwzODQgMTI4bDM4NCAtMTI4djEyOGgtMTI4djEyOGgtNTEydi0xMjhoLTEyOHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUwNiIgdW5pY29kZT0iJiN4ZjIxYjsiIApkPSJNNTc2IDBsOTYgNDQ4bC05NiAxMjhsLTEyOCA2NHpNODMyIDBsMTI4IDY0MGwtMTI4IC02NGwtOTYgLTEyOHpNOTkyIDEwMTBxLTIgNCAtNCA2cS0xMCA4IC05NiA4cS03MCAwIC0xNjcgLTE5cS03IC0yIC0yMSAtMnQtMjEgMnEtOTcgMTkgLTE2NyAxOXEtODYgMCAtOTYgLThxLTIgLTIgLTQgLTZxMiAtMTggNCAtMjdxMiAtMyA3LjUgLTYuNXQ3LjUgLTEwLjVxMiAtNCA3LjUgLTIwLjV0NyAtMjAuNXQ3LjUgLTE3dDguNSAtMTd0OSAtMTQKdDEyIC0xMy41dDE0IC05LjV0MTcuNSAtOHQyMC41IC00dDI0LjUgLTJxMzYgMCA1OSAxMi41dDMyLjUgMzB0MTQuNSAzNC41dDExLjUgMjkuNXQxNy41IDEyLjVoMTJxMTEgMCAxNy41IC0xMi41dDExLjUgLTI5LjV0MTQuNSAtMzQuNXQzMi41IC0zMHQ1OSAtMTIuNXExMyAwIDI0LjUgMnQyMC41IDR0MTcuNSA4dDE0IDkuNXQxMiAxMy41dDkgMTR0OC41IDE3dDcuNSAxN3Q3IDIwLjV0Ny41IDIwLjVxMiA3IDcuNSAxMC41dDcuNSA2LjUKcTIgOSA0IDI3ek0xNDA4IDEzMXEwIC0xMjEgLTczIC0xOTB0LTE5NCAtNjloLTg3NHEtMTIxIDAgLTE5NCA2OXQtNzMgMTkwcTAgNjEgNC41IDExOHQxOSAxMjUuNXQzNy41IDEyMy41dDYzLjUgMTAzLjV0OTMuNSA3NC41bC05MCAyMjBoMjE0cS0yMiA2NCAtMjIgMTI4cTAgMTIgMiAzMnEtMTk0IDQwIC0xOTQgOTZxMCA1NyAyMTAgOTlxMTcgNjIgNTEuNSAxMzR0NzAuNSAxMTRxMzIgMzcgNzYgMzdxMzAgMCA4NCAtMzF0ODQgLTMxdDg0IDMxCnQ4NCAzMXE0NCAwIDc2IC0zN3EzNiAtNDIgNzAuNSAtMTE0dDUxLjUgLTEzNHEyMTAgLTQyIDIxMCAtOTlxMCAtNTYgLTE5NCAtOTZxNyAtODEgLTIwIC0xNjBoMjE0bC04MiAtMjI1cTYzIC0zMyAxMDcuNSAtOTYuNXQ2NS41IC0xNDMuNXQyOSAtMTUxLjV0OCAtMTQ4LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDciIHVuaWNvZGU9IiYjeGYyMWM7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik0yMzAxIDUwMHExMiAtMTAzIC0yMiAtMTk4LjV0LTk5IC0xNjMuNXQtMTU4LjUgLTEwNnQtMTk2LjUgLTMxcS0xNjEgMTEgLTI3OS41IDEyNXQtMTM0LjUgMjc0cS0xMiAxMTEgMjcuNSAyMTAuNXQxMTguNSAxNzAuNWwtNzEgMTA3cS05NiAtODAgLTE1MSAtMTk0dC01NSAtMjQ0cTAgLTI3IC0xOC41IC00Ni41dC00NS41IC0xOS41aC0yNTZoLTY5cS0yMyAtMTY0IC0xNDkgLTI3NHQtMjk0IC0xMTBxLTE4NSAwIC0zMTYuNSAxMzEuNQp0LTEzMS41IDMxNi41dDEzMS41IDMxNi41dDMxNi41IDEzMS41cTc2IDAgMTUyIC0yN2wyNCA0NXEtMTIzIDExMCAtMzA0IDExMGgtNjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgxMjhxNzggMCAxNDUgLTEzLjV0MTE2LjUgLTM4LjV0NzEuNSAtMzkuNXQ1MSAtMzYuNWg1MTJoMTE1bC04NSAxMjhoLTIyMnEtMzAgMCAtNDkgMjIuNXQtMTQgNTIuNXE0IDIzIDIzIDM4dDQzIDE1aDI1M3EzMyAwIDUzIC0yOGw3MCAtMTA1CmwxMTQgMTE0cTE5IDE5IDQ2IDE5aDEwMXEyNiAwIDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE3OWwxMTUgLTE3MnExMzEgNjMgMjc1IDM2cTE0MyAtMjYgMjQ0IC0xMzQuNXQxMTggLTI1My41ek00NDggMTI4cTExNSAwIDIwMyA3Mi41dDExMSAxODMuNWgtMzE0cS0zNSAwIC01NSAzMXEtMTggMzIgLTEgNjNsMTQ3IDI3N3EtNDcgMTMgLTkxIDEzcS0xMzIgMCAtMjI2IC05NHQtOTQgLTIyNnQ5NCAtMjI2CnQyMjYgLTk0ek0xODU2IDEyOHExMzIgMCAyMjYgOTR0OTQgMjI2dC05NCAyMjZ0LTIyNiA5NHEtNjAgMCAtMTIxIC0yNGwxNzQgLTI2MHExNSAtMjMgMTAgLTQ5dC0yNyAtNDBxLTE1IC0xMSAtMzYgLTExcS0zNSAwIC01MyAyOWwtMTc0IDI2MHEtOTMgLTk1IC05MyAtMjI1cTAgLTEzMiA5NCAtMjI2dDIyNiAtOTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDgiIHVuaWNvZGU9IiYjeGYyMWQ7IiAKZD0iTTE0MDggMHEwIC02MyAtNjEuNSAtMTEzLjV0LTE2NCAtODF0LTIyNSAtNDZ0LTI1My41IC0xNS41dC0yNTMuNSAxNS41dC0yMjUgNDZ0LTE2NCA4MXQtNjEuNSAxMTMuNXEwIDQ5IDMzIDg4LjV0OTEgNjYuNXQxMTggNDQuNXQxMzEgMjkuNXEyNiA1IDQ4IC0xMC41dDI2IC00MS41cTUgLTI2IC0xMC41IC00OHQtNDEuNSAtMjZxLTU4IC0xMCAtMTA2IC0yMy41dC03Ni41IC0yNS41dC00OC41IC0yMy41dC0yNy41IC0xOS41dC04LjUgLTEyCnEzIC0xMSAyNyAtMjYuNXQ3MyAtMzN0MTE0IC0zMi41dDE2MC41IC0yNXQyMDEuNSAtMTB0MjAxLjUgMTB0MTYwLjUgMjV0MTE0IDMzdDczIDMzLjV0MjcgMjcuNXEtMSA0IC04LjUgMTF0LTI3LjUgMTl0LTQ4LjUgMjMuNXQtNzYuNSAyNXQtMTA2IDIzLjVxLTI2IDQgLTQxLjUgMjZ0LTEwLjUgNDhxNCAyNiAyNiA0MS41dDQ4IDEwLjVxNzEgLTEyIDEzMSAtMjkuNXQxMTggLTQ0LjV0OTEgLTY2LjV0MzMgLTg4LjV6TTEwMjQgODk2di0zODQKcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNjR2LTM4NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NGgtNjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYzODRxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDM4NHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNOTI4IDEyODBxMCAtOTMgLTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNXQtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjUKdDE1OC41IC02NS41dDY1LjUgLTE1OC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA5IiB1bmljb2RlPSImI3hmMjFlOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTI4MCA1MTJoMzA1cS01IC02IC0xMCAtMTAuNXQtOSAtNy41bC0zIC00bC02MjMgLTYwMHEtMTggLTE4IC00NCAtMTh0LTQ0IDE4bC02MjQgNjAycS01IDIgLTIxIDIwaDM2OXEyMiAwIDM5LjUgMTMuNXQyMi41IDM0LjVsNzAgMjgxbDE5MCAtNjY3cTYgLTIwIDIzIC0zM3QzOSAtMTNxMjEgMCAzOCAxM3QyMyAzM2wxNDYgNDg1bDU2IC0xMTJxMTggLTM1IDU3IC0zNXpNMTc5MiA5NDBxMCAtMTQ1IC0xMDMgLTMwMGgtMzY5bC0xMTEgMjIxCnEtOCAxNyAtMjUuNSAyN3QtMzYuNSA4cS00NSAtNSAtNTYgLTQ2bC0xMjkgLTQzMGwtMTk2IDY4NnEtNiAyMCAtMjMuNSAzM3QtMzkuNSAxM3QtMzkgLTEzLjV0LTIyIC0zNC41bC0xMTYgLTQ2NGgtNDIzcS0xMDMgMTU1IC0xMDMgMzAwcTAgMjIwIDEyNyAzNDR0MzUxIDEyNHE2MiAwIDEyNi41IC0yMS41dDEyMCAtNTh0OTUuNSAtNjguNXQ3NiAtNjhxMzYgMzYgNzYgNjh0OTUuNSA2OC41dDEyMCA1OHQxMjYuNSAyMS41cTIyNCAwIDM1MSAtMTI0CnQxMjcgLTM0NHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idmVudXMiIHVuaWNvZGU9IiYjeGYyMjE7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMTUyIDk2MHEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di0yNjBoMjI0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTIyNHYtMjI0cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjIyNGgtMjI0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDIyNHYyNjBxLTE1MCAxNiAtMjcxLjUgMTAzdC0xODYgMjI0dC01Mi41IDI5MgpxMTEgMTM0IDgwLjUgMjQ5dDE4MiAxODh0MjQ1LjUgODhxMTcwIDE5IDMxOSAtNTR0MjM2IC0yMTJ0ODcgLTMwNnpNMTI4IDk2MHEwIC0xODUgMTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxMSIgdW5pY29kZT0iJiN4ZjIyMjsiIApkPSJNMTQ3MiAxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXYtNDE2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjI2MmwtMzgyIC0zODNxMTI2IC0xNTYgMTI2IC0zNTlxMCAtMTE3IC00NS41IC0yMjMuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjMuNSAtNDUuNXQtMjIzLjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjMuNXQ0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyM3QyMjMuNSA0NS41CnEyMDMgMCAzNTkgLTEyNmwzODIgMzgyaC0yNjFxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNDE2ek01NzYgMHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTEyIiB1bmljb2RlPSImI3hmMjIzOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNODMwIDEyMjBxMTQ1IC03MiAyMzMuNSAtMjEwLjV0ODguNSAtMzA1LjVxMCAtMjIxIC0xNDcuNSAtMzg0LjV0LTM2NC41IC0xODcuNXYtMTMyaDk2cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTk2di05NnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3Y5NmgtOTZxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloOTZ2MTMycS0yMTcgMjQgLTM2NC41IDE4Ny41CnQtMTQ3LjUgMzg0LjVxMCAxNjcgODguNSAzMDUuNXQyMzMuNSAyMTAuNXEtMTY1IDk2IC0yMjggMjczcS02IDE2IDMuNSAyOS41dDI2LjUgMTMuNWg2OXEyMSAwIDI5IC0yMHE0NCAtMTA2IDE0MCAtMTcxdDIxNCAtNjV0MjE0IDY1dDE0MCAxNzFxOCAyMCAzNyAyMGg2MXExNyAwIDI2LjUgLTEzLjV0My41IC0yOS41cS02MyAtMTc3IC0yMjggLTI3M3pNNTc2IDI1NnExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjUKdC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxMyIgdW5pY29kZT0iJiN4ZjIyNDsiIApkPSJNMTAyNCAxNTA0cTAgMTQgOSAyM3QyMyA5aDI4OHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI4OHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMzRsLTI1NCAtMjU1cTEyNiAtMTU4IDEyNiAtMzU5cTAgLTIyMSAtMTQ3LjUgLTM4NC41dC0zNjQuNSAtMTg3LjV2LTEzMmg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjQKcS0xNCAwIC0yMyA5dC05IDIzdjk2aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnYxMzJxLTE0OSAxNiAtMjcwLjUgMTAzdC0xODYuNSAyMjMuNXQtNTMgMjkxLjVxMTYgMjA0IDE2MCAzNTMuNXQzNDcgMTcyLjVxMTE4IDE0IDIyOCAtMTl0MTk4IC0xMDNsMjU1IDI1NGgtMTM0cS0xNCAwIC0yMyA5dC05IDIzdjY0ek01NzYgMjU2cTE4NSAwIDMxNi41IDEzMS41dDEzMS41IDMxNi41dC0xMzEuNSAzMTYuNQp0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE0IiB1bmljb2RlPSImI3hmMjI1OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTI4MCAxNTA0cTAgMTQgOSAyM3QyMyA5aDI4OHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI4OHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMzRsLTI1NCAtMjU1cTEyNiAtMTU4IDEyNiAtMzU5cTAgLTIyMSAtMTQ3LjUgLTM4NC41dC0zNjQuNSAtMTg3LjV2LTEzMmg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjQKcS0xNCAwIC0yMyA5dC05IDIzdjk2aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnYxMzJxLTIxNyAyNCAtMzY0LjUgMTg3LjV0LTE0Ny41IDM4NC41cTAgMjAxIDEyNiAzNTlsLTUyIDUzbC0xMDEgLTExMXEtOSAtMTAgLTIyIC0xMC41dC0yMyA3LjVsLTQ4IDQ0cS0xMCA4IC0xMC41IDIxLjV0OC41IDIzLjVsMTA1IDExNWwtMTExIDExMnYtMTM0cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5CnQtOSAyM3YyODhxMCAyNiAxOSA0NXQ0NSAxOWgyODhxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTMzbDEwNiAtMTA3bDg2IDk0cTkgMTAgMjIgMTAuNXQyMyAtNy41bDQ4IC00NHExMCAtOCAxMC41IC0yMS41dC04LjUgLTIzLjVsLTkwIC05OWw1NyAtNTZxMTU4IDEyNiAzNTkgMTI2dDM1OSAtMTI2bDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHpNODMyIDI1NnExODUgMCAzMTYuNSAxMzEuNQp0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxNSIgdW5pY29kZT0iJiN4ZjIyNjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTAgMTAwN3ExMiAtMTU1IC01Mi41IC0yOTJ0LTE4NiAtMjI0dC0yNzEuNSAtMTAzdi0yNjBoMjI0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTIyNHYtMjI0cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjIyNGgtNTEydi0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzCnQyMyA5aDIyNHYyNjBxLTE1MCAxNiAtMjcxLjUgMTAzdC0xODYgMjI0dC01Mi41IDI5MnExNyAyMDYgMTY0LjUgMzU2LjV0MzUyLjUgMTY5LjVxMjA2IDIxIDM3NyAtOTRxMTcxIDExNSAzNzcgOTRxMjA1IC0xOSAzNTIuNSAtMTY5LjV0MTY0LjUgLTM1Ni41ek04OTYgNjQ3cTEyOCAxMzEgMTI4IDMxM3QtMTI4IDMxM3EtMTI4IC0xMzEgLTEyOCAtMzEzdDEyOCAtMzEzek01NzYgNTEycTExNSAwIDIxOCA1N3EtMTU0IDE2NSAtMTU0IDM5MQpxMCAyMjQgMTU0IDM5MXEtMTAzIDU3IC0yMTggNTdxLTE4NSAwIC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41ek0xMTUyIDEyOHYyNjBxLTEzNyAxNSAtMjU2IDk0cS0xMTkgLTc5IC0yNTYgLTk0di0yNjBoNTEyek0xMjE2IDUxMnExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41cS0xMTUgMCAtMjE4IC01N3ExNTQgLTE2NyAxNTQgLTM5MQpxMCAtMjI2IC0xNTQgLTM5MXExMDMgLTU3IDIxOCAtNTd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MTYiIHVuaWNvZGU9IiYjeGYyMjc7IiBob3Jpei1hZHYteD0iMTkyMCIgCmQ9Ik0xNTM2IDExMjBxMCAxNCA5IDIzdDIzIDloMjg4cTI2IDAgNDUgLTE5dDE5IC00NXYtMjg4cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjEzNGwtMjU0IC0yNTVxNzYgLTk1IDEwNy41IC0yMTR0OS41IC0yNDdxLTMxIC0xODIgLTE2NiAtMzEydC0zMTggLTE1NnEtMjEwIC0yOSAtMzg0LjUgODB0LTI0MS41IDMwMHEtMTE3IDYgLTIyMSA1Ny41dC0xNzcuNSAxMzN0LTExMy41IDE5Mi41dC0zMiAyMzAKcTkgMTM1IDc4IDI1MnQxODIgMTkxLjV0MjQ4IDg5LjVxMTE4IDE0IDIyNy41IC0xOXQxOTguNSAtMTAzbDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXE1OSAtNzQgOTMgLTE2OXExODIgLTkgMzI4IC0xMjRsMjU1IDI1NGgtMTM0cS0xNCAwIC0yMyA5CnQtOSAyM3Y2NHpNMTAyNCA3MDRxMCAyMCAtNCA1OHEtMTYyIC0yNSAtMjcxIC0xNTB0LTEwOSAtMjkycTAgLTIwIDQgLTU4cTE2MiAyNSAyNzEgMTUwdDEwOSAyOTJ6TTEyOCA3MDRxMCAtMTY4IDExMSAtMjk0dDI3NiAtMTQ5cS0zIDI5IC0zIDU5cTAgMjEwIDEzNSAzNjkuNXQzMzggMTk2LjVxLTUzIDEyMCAtMTYzLjUgMTkzdC0yNDUuNSA3M3EtMTg1IDAgLTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41ek0xMDg4IC0xMjgKcTE4NSAwIDMxNi41IDEzMS41dDEzMS41IDMxNi41cTAgMTY4IC0xMTEgMjk0dC0yNzYgMTQ5cTMgLTI4IDMgLTU5cTAgLTIxMCAtMTM1IC0zNjkuNXQtMzM4IC0xOTYuNXE1MyAtMTIwIDE2My41IC0xOTN0MjQ1LjUgLTczeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE3IiB1bmljb2RlPSImI3hmMjI4OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMTY2NCAxNTA0cTAgMTQgOSAyM3QyMyA5aDI4OHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI4OHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMzRsLTI1NCAtMjU1cTc2IC05NSAxMDcuNSAtMjE0dDkuNSAtMjQ3cS0zMiAtMTgwIC0xNjQuNSAtMzEwdC0zMTMuNSAtMTU3cS0yMjMgLTM0IC00MDkgOTBxLTExNyAtNzggLTI1NiAtOTN2LTEzMmg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjMKdC0yMyAtOWgtOTZ2LTk2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjk2aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnYxMzJxLTE1NSAxNyAtMjc5LjUgMTA5LjV0LTE4NyAyMzcuNXQtMzkuNSAzMDdxMjUgMTg3IDE1OS41IDMyMi41dDMyMC41IDE2NC41cTIyNCAzNCA0MTAgLTkwcTE0NiA5NyAzMjAgOTdxMjAxIDAgMzU5IC0xMjZsMjU1IDI1NGgtMTM0cS0xNCAwIC0yMyA5CnQtOSAyM3Y2NHpNODk2IDM5MXExMjggMTMxIDEyOCAzMTN0LTEyOCAzMTNxLTEyOCAtMTMxIC0xMjggLTMxM3QxMjggLTMxM3pNMTI4IDcwNHEwIC0xODUgMTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXExMTcgMCAyMTggNTdxLTE1NCAxNjcgLTE1NCAzOTF0MTU0IDM5MXEtMTAxIDU3IC0yMTggNTdxLTE4NSAwIC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXpNMTIxNiAyNTZxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjUKdC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjVxLTExNyAwIC0yMTggLTU3cTE1NCAtMTY3IDE1NCAtMzkxdC0xNTQgLTM5MXExMDEgLTU3IDIxOCAtNTd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MTgiIHVuaWNvZGU9IiYjeGYyMjk7IiAKZD0iTTE0NzIgMTQwOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTQxNnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YyNjJsLTIxMyAtMjE0bDE0MCAtMTQwcTkgLTEwIDkgLTIzdC05IC0yMmwtNDYgLTQ2cS05IC05IC0yMiAtOXQtMjMgOWwtMTQwIDE0MWwtNzggLTc5cTEyNiAtMTU2IDEyNiAtMzU5cTAgLTExNyAtNDUuNSAtMjIzLjV0LTEyMyAtMTg0dC0xODQgLTEyM3QtMjIzLjUgLTQ1LjV0LTIyMy41IDQ1LjUKdC0xODQgMTIzdC0xMjMgMTg0dC00NS41IDIyMy41dDQ1LjUgMjIzLjV0MTIzIDE4NHQxODQgMTIzdDIyMy41IDQ1LjVxMjAzIDAgMzU5IC0xMjZsNzggNzhsLTE3MiAxNzJxLTkgMTAgLTkgMjN0OSAyMmw0NiA0NnE5IDkgMjIgOXQyMyAtOWwxNzIgLTE3MmwyMTMgMjEzaC0yNjFxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNDE2ek01NzYgMHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjUKdC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxOSIgdW5pY29kZT0iJiN4ZjIyYTsiIGhvcml6LWFkdi14PSIxMjgwIiAKZD0iTTY0MCA4OTJxMjE3IC0yNCAzNjQuNSAtMTg3LjV0MTQ3LjUgLTM4NC41cTAgLTE2NyAtODcgLTMwNnQtMjM2IC0yMTJ0LTMxOSAtNTRxLTEzMyAxNSAtMjQ1LjUgODh0LTE4MiAxODh0LTgwLjUgMjQ5cS0xMiAxNTUgNTIuNSAyOTJ0MTg2IDIyNHQyNzEuNSAxMDN2MTMyaC0xNjBxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTYwdjE2NWwtOTIgLTkycS0xMCAtOSAtMjMgLTl0LTIyIDlsLTQ2IDQ2cS05IDkgLTkgMjIKdDkgMjNsMjAyIDIwMXExOSAxOSA0NSAxOXQ0NSAtMTlsMjAyIC0yMDFxOSAtMTAgOSAtMjN0LTkgLTIybC00NiAtNDZxLTkgLTkgLTIyIC05dC0yMyA5bC05MiA5MnYtMTY1aDE2MHExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNjB2LTEzMnpNNTc2IC0xMjhxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjUKdDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjAiIHVuaWNvZGU9IiYjeGYyMmI7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xOTAxIDYyMXExOSAtMTkgMTkgLTQ1dC0xOSAtNDVsLTI5NCAtMjk0cS05IC0xMCAtMjIuNSAtMTB0LTIyLjUgMTBsLTQ1IDQ1cS0xMCA5IC0xMCAyMi41dDEwIDIyLjVsMTg1IDE4NWgtMjk0di0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0xMzJxLTI0IC0yMTcgLTE4Ny41IC0zNjQuNXQtMzg0LjUgLTE0Ny41cS0xNjcgMCAtMzA2IDg3dC0yMTIgMjM2dC01NCAzMTlxMTUgMTMzIDg4IDI0NS41CnQxODggMTgydDI0OSA4MC41cTE1NSAxMiAyOTIgLTUyLjV0MjI0IC0xODZ0MTAzIC0yNzEuNWgxMzJ2MjI0cTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN2LTIyNGgyOTRsLTE4NSAxODVxLTEwIDkgLTEwIDIyLjV0MTAgMjIuNWw0NSA0NXE5IDEwIDIyLjUgMTB0MjIuNSAtMTB6TTU3NiAxMjhxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41CnQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjEiIHVuaWNvZGU9IiYjeGYyMmM7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMTUyIDk2MHEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di02MTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2NjEycS0yMTcgMjQgLTM2NC41IDE4Ny41dC0xNDcuNSAzODQuNXEwIDExNyA0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyM3QyMjMuNSA0NS41dDIyMy41IC00NS41dDE4NCAtMTIzdDEyMyAtMTg0dDQ1LjUgLTIyMy41ek01NzYgNTEycTE4NSAwIDMxNi41IDEzMS41CnQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTIyIiB1bmljb2RlPSImI3hmMjJkOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMTAyNCA1NzZxMCAxODUgLTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXpNMTE1MiA1NzZxMCAtMTE3IC00NS41IC0yMjMuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjMuNSAtNDUuNXQtMjIzLjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjMuNXQ0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyMwp0MjIzLjUgNDUuNXQyMjMuNSAtNDUuNXQxODQgLTEyM3QxMjMgLTE4NHQ0NS41IC0yMjMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyMyIgdW5pY29kZT0iJiN4ZjIyZTsiIGhvcml6LWFkdi14PSIxNzkyIiAKIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyNCIgdW5pY29kZT0iJiN4ZjIyZjsiIGhvcml6LWFkdi14PSIxNzkyIiAKIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyNSIgdW5pY29kZT0iJiN4ZjIzMDsiIApkPSJNMTQ1MSAxNDA4cTM1IDAgNjAgLTI1dDI1IC02MHYtMTM2NnEwIC0zNSAtMjUgLTYwdC02MCAtMjVoLTM5MXY1OTVoMTk5bDMwIDIzMmgtMjI5djE0OHEwIDU2IDIzLjUgODR0OTEuNSAyOGwxMjIgMXYyMDdxLTYzIDkgLTE3OCA5cS0xMzYgMCAtMjE3LjUgLTgwdC04MS41IC0yMjZ2LTE3MWgtMjAwdi0yMzJoMjAwdi01OTVoLTczNXEtMzUgMCAtNjAgMjV0LTI1IDYwdjEzNjZxMCAzNSAyNSA2MHQ2MCAyNWgxMzY2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTI2IiB1bmljb2RlPSImI3hmMjMxOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNMCA5MzlxMCAxMDggMzcuNSAyMDMuNXQxMDMuNSAxNjYuNXQxNTIgMTIzdDE4NSA3OHQyMDIgMjZxMTU4IDAgMjk0IC02Ni41dDIyMSAtMTkzLjV0ODUgLTI4N3EwIC05NiAtMTkgLTE4OHQtNjAgLTE3N3QtMTAwIC0xNDkuNXQtMTQ1IC0xMDN0LTE4OSAtMzguNXEtNjggMCAtMTM1IDMydC05NiA4OHEtMTAgLTM5IC0yOCAtMTEyLjV0LTIzLjUgLTk1dC0yMC41IC03MXQtMjYgLTcxdC0zMiAtNjIuNXQtNDYgLTc3LjV0LTYyIC04Ni41CmwtMTQgLTVsLTkgMTBxLTE1IDE1NyAtMTUgMTg4cTAgOTIgMjEuNSAyMDYuNXQ2Ni41IDI4Ny41dDUyIDIwM3EtMzIgNjUgLTMyIDE2OXEwIDgzIDUyIDE1NnQxMzIgNzNxNjEgMCA5NSAtNDAuNXQzNCAtMTAyLjVxMCAtNjYgLTQ0IC0xOTF0LTQ0IC0xODdxMCAtNjMgNDUgLTEwNC41dDEwOSAtNDEuNXE1NSAwIDEwMiAyNXQ3OC41IDY4dDU2IDk1dDM4IDExMC41dDIwIDExMXQ2LjUgOTkuNXEwIDE3MyAtMTA5LjUgMjY5LjV0LTI4NS41IDk2LjUKcS0yMDAgMCAtMzM0IC0xMjkuNXQtMTM0IC0zMjguNXEwIC00NCAxMi41IC04NXQyNyAtNjV0MjcgLTQ1LjV0MTIuNSAtMzAuNXEwIC0yOCAtMTUgLTczdC0zNyAtNDVxLTIgMCAtMTcgM3EtNTEgMTUgLTkwLjUgNTZ0LTYxIDk0LjV0LTMyLjUgMTA4dC0xMSAxMDYuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyNyIgdW5pY29kZT0iJiN4ZjIzMjsiIApkPSJNOTg1IDU2MnExMyAwIDk3LjUgLTQ0dDg5LjUgLTUzcTIgLTUgMiAtMTVxMCAtMzMgLTE3IC03NnEtMTYgLTM5IC03MSAtNjUuNXQtMTAyIC0yNi41cS01NyAwIC0xOTAgNjJxLTk4IDQ1IC0xNzAgMTE4dC0xNDggMTg1cS03MiAxMDcgLTcxIDE5NHY4cTMgOTEgNzQgMTU4cTI0IDIyIDUyIDIycTYgMCAxOCAtMS41dDE5IC0xLjVxMTkgMCAyNi41IC02LjV0MTUuNSAtMjcuNXE4IC0yMCAzMyAtODh0MjUgLTc1cTAgLTIxIC0zNC41IC01Ny41CnQtMzQuNSAtNDYuNXEwIC03IDUgLTE1cTM0IC03MyAxMDIgLTEzN3E1NiAtNTMgMTUxIC0xMDFxMTIgLTcgMjIgLTdxMTUgMCA1NCA0OC41dDUyIDQ4LjV6TTc4MiAzMnExMjcgMCAyNDMuNSA1MHQyMDAuNSAxMzR0MTM0IDIwMC41dDUwIDI0My41dC01MCAyNDMuNXQtMTM0IDIwMC41dC0yMDAuNSAxMzR0LTI0My41IDUwdC0yNDMuNSAtNTB0LTIwMC41IC0xMzR0LTEzNCAtMjAwLjV0LTUwIC0yNDMuNXEwIC0yMDMgMTIwIC0zNjhsLTc5IC0yMzMKbDI0MiA3N3ExNTggLTEwNCAzNDUgLTEwNHpNNzgyIDE0MTRxMTUzIDAgMjkyLjUgLTYwdDI0MC41IC0xNjF0MTYxIC0yNDAuNXQ2MCAtMjkyLjV0LTYwIC0yOTIuNXQtMTYxIC0yNDAuNXQtMjQwLjUgLTE2MXQtMjkyLjUgLTYwcS0xOTUgMCAtMzY1IDk0bC00MTcgLTEzNGwxMzYgNDA1cS0xMDggMTc4IC0xMDggMzg5cTAgMTUzIDYwIDI5Mi41dDE2MSAyNDAuNXQyNDAuNSAxNjF0MjkyLjUgNjB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjgiIHVuaWNvZGU9IiYjeGYyMzM7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMjggMTI4aDEwMjR2MTI4aC0xMDI0di0xMjh6TTEyOCA2NDBoMTAyNHYxMjhoLTEwMjR2LTEyOHpNMTY5NiAxOTJxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek0xMjggMTE1MmgxMDI0djEyOGgtMTAyNHYtMTI4ek0xNjk2IDcwNHEwIDQwIC0yOCA2OHQtNjggMjh0LTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh0NjggMjh0MjggNjh6TTE2OTYgMTIxNgpxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek0xNzkyIDM4NHYtMzg0aC0xNzkydjM4NGgxNzkyek0xNzkyIDg5NnYtMzg0aC0xNzkydjM4NGgxNzkyek0xNzkyIDE0MDh2LTM4NGgtMTc5MnYzODRoMTc5MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyOSIgdW5pY29kZT0iJiN4ZjIzNDsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTcwNCA2NDBxLTE1OSAwIC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41dDExMi41IC0yNzEuNXQtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjV6TTE2NjQgNTEyaDM1MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTM1MnYtMzUycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTkycS0xMyAwIC0yMi41IDkuNQp0LTkuNSAyMi41djM1MmgtMzUycS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzUydjM1MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTM1MnpNOTI4IDI4OHEwIC01MiAzOCAtOTB0OTAgLTM4aDI1NnYtMjM4cS02OCAtNTAgLTE3MSAtNTBoLTg3NHEtMTIxIDAgLTE5NCA2OXQtNzMgMTkwcTAgNTMgMy41IDEwMy41dDE0IDEwOXQyNi41IDEwOC41CnQ0MyA5Ny41dDYyIDgxdDg1LjUgNTMuNXQxMTEuNSAyMHExOSAwIDM5IC0xN3E3OSAtNjEgMTU0LjUgLTkxLjV0MTY0LjUgLTMwLjV0MTY0LjUgMzAuNXQxNTQuNSA5MS41cTIwIDE3IDM5IDE3cTEzMiAwIDIxNyAtOTZoLTIyM3EtNTIgMCAtOTAgLTM4dC0zOCAtOTB2LTE5MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzMCIgdW5pY29kZT0iJiN4ZjIzNTsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTcwNCA2NDBxLTE1OSAwIC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41dDExMi41IC0yNzEuNXQtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjV6TTE3ODEgMzIwbDI0OSAtMjQ5cTkgLTkgOSAtMjNxMCAtMTMgLTkgLTIybC0xMzYgLTEzNnEtOSAtOSAtMjIgLTlxLTE0IDAgLTIzIDlsLTI0OSAyNDlsLTI0OSAtMjQ5cS05IC05IC0yMyAtOXEtMTMgMCAtMjIgOWwtMTM2IDEzNgpxLTkgOSAtOSAyMnEwIDE0IDkgMjNsMjQ5IDI0OWwtMjQ5IDI0OXEtOSA5IC05IDIzcTAgMTMgOSAyMmwxMzYgMTM2cTkgOSAyMiA5cTE0IDAgMjMgLTlsMjQ5IC0yNDlsMjQ5IDI0OXE5IDkgMjMgOXExMyAwIDIyIC05bDEzNiAtMTM2cTkgLTkgOSAtMjJxMCAtMTQgLTkgLTIzek0xMjgzIDMyMGwtMTgxIC0xODFxLTM3IC0zNyAtMzcgLTkxcTAgLTUzIDM3IC05MGw4MyAtODNxLTIxIC0zIC00NCAtM2gtODc0cS0xMjEgMCAtMTk0IDY5CnQtNzMgMTkwcTAgNTMgMy41IDEwMy41dDE0IDEwOXQyNi41IDEwOC41dDQzIDk3LjV0NjIgODF0ODUuNSA1My41dDExMS41IDIwcTE5IDAgMzkgLTE3cTE1NCAtMTIyIDMxOSAtMTIydDMxOSAxMjJxMjAgMTcgMzkgMTdxMjggMCA1NyAtNnEtMjggLTI3IC00MSAtNTB0LTEzIC01NnEwIC01NCAzNyAtOTF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzEiIHVuaWNvZGU9IiYjeGYyMzY7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0yNTYgNTEyaDE3MjhxMjYgMCA0NSAtMTl0MTkgLTQ1di00NDhoLTI1NnYyNTZoLTE1MzZ2LTI1NmgtMjU2djEyMTZxMCAyNiAxOSA0NXQ0NSAxOWgxMjhxMjYgMCA0NSAtMTl0MTkgLTQ1di03MDR6TTgzMiA4MzJxMCAxMDYgLTc1IDE4MXQtMTgxIDc1dC0xODEgLTc1dC03NSAtMTgxdDc1IC0xODF0MTgxIC03NXQxODEgNzV0NzUgMTgxek0yMDQ4IDU3NnY2NHEwIDE1OSAtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41aC03MDQKcS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMzg0aDExNTJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzIiIHVuaWNvZGU9IiYjeGYyMzc7IiAKZD0iTTE1MzYgMTUzNmwtMTkyIC00NDhoMTkydi0xOTJoLTI3NGwtNTUgLTEyOGgzMjl2LTE5MmgtNDExbC0zNTcgLTgzMmwtMzU3IDgzMmgtNDExdjE5MmgzMjlsLTU1IDEyOGgtMjc0djE5MmgxOTJsLTE5MiA0NDhoMjU2bDMyMyAtNzY4aDM3OGwzMjMgNzY4aDI1NnpNNzY4IDMyMGwxMDggMjU2aC0yMTZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzMiIHVuaWNvZGU9IiYjeGYyMzg7IiAKZD0iTTEwODggMTUzNnExODUgMCAzMTYuNSAtOTMuNXQxMzEuNSAtMjI2LjV2LTg5NnEwIC0xMzAgLTEyNS41IC0yMjJ0LTMwNS41IC05N2wyMTMgLTIwMnExNiAtMTUgOCAtMzV0LTMwIC0yMGgtMTA1NnEtMjIgMCAtMzAgMjB0OCAzNWwyMTMgMjAycS0xODAgNSAtMzA1LjUgOTd0LTEyNS41IDIyMnY4OTZxMCAxMzMgMTMxLjUgMjI2LjV0MzE2LjUgOTMuNWg2NDB6TTc2OCAxOTJxODAgMCAxMzYgNTZ0NTYgMTM2dC01NiAxMzZ0LTEzNiA1Ngp0LTEzNiAtNTZ0LTU2IC0xMzZ0NTYgLTEzNnQxMzYgLTU2ek0xMzQ0IDc2OHY1MTJoLTExNTJ2LTUxMmgxMTUyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTM0IiB1bmljb2RlPSImI3hmMjM5OyIgCmQ9Ik0xMDg4IDE1MzZxMTg1IDAgMzE2LjUgLTkzLjV0MTMxLjUgLTIyNi41di04OTZxMCAtMTMwIC0xMjUuNSAtMjIydC0zMDUuNSAtOTdsMjEzIC0yMDJxMTYgLTE1IDggLTM1dC0zMCAtMjBoLTEwNTZxLTIyIDAgLTMwIDIwdDggMzVsMjEzIDIwMnEtMTgwIDUgLTMwNS41IDk3dC0xMjUuNSAyMjJ2ODk2cTAgMTMzIDEzMS41IDIyNi41dDMxNi41IDkzLjVoNjQwek0yODggMjI0cTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDcKdC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3pNNzA0IDc2OHY1MTJoLTU0NHYtNTEyaDU0NHpNMTI0OCAyMjRxNjYgMCAxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3QtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd6TTE0MDggNzY4djUxMmgtNTc2di01MTJoNTc2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTM1IiB1bmljb2RlPSImI3hmMjNhOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNTk3IDExMTV2LTExNzNxMCAtMjUgLTEyLjUgLTQyLjV0LTM2LjUgLTE3LjVxLTE3IDAgLTMzIDhsLTQ2NSAyMzNxLTIxIDEwIC0zNS41IDMzLjV0LTE0LjUgNDYuNXYxMTQwcTAgMjAgMTAgMzR0MjkgMTRxMTQgMCA0NCAtMTVsNTExIC0yNTZxMyAtMyAzIC01ek02NjEgMTAxNGw1MzQgLTg2NmwtNTM0IDI2NnY2MDB6TTE3OTIgOTk2di0xMDU0cTAgLTI1IC0xNCAtNDAuNXQtMzggLTE1LjV0LTQ3IDEzbC00NDEgMjIwek0xNzg5IDExMTYKcTAgLTMgLTI1Ni41IC00MTkuNXQtMzAwLjUgLTQ4Ny41bC0zOTAgNjM0bDMyNCA1MjdxMTcgMjggNTIgMjhxMTQgMCAyNiAtNmw1NDEgLTI3MHE0IC0yIDQgLTZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzYiIHVuaWNvZGU9IiYjeGYyM2I7IiAKZD0iTTgwOSA1MzJsMjY2IDQ5OWgtMTEybC0xNTcgLTMxMnEtMjQgLTQ4IC00NCAtOTJsLTQyIDkybC0xNTUgMzEyaC0xMjBsMjYzIC00OTN2LTMyNGgxMDF2MzE4ek0xNTM2IDE0MDh2LTE1MzZoLTE1MzZ2MTUzNmgxNTM2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTM3IiB1bmljb2RlPSImI3hmMjNjOyIgaG9yaXotYWR2LXg9IjIyOTYiIApkPSJNNDc4IC0xMzlxLTggLTE2IC0yNyAtMzQuNXQtMzcgLTI1LjVxLTI1IC05IC01MS41IDMuNXQtMjguNSAzMS41cS0xIDIyIDQwIDU1dDY4IDM4cTIzIDQgMzQgLTIxLjV0MiAtNDYuNXpNMTgxOSAtMTM5cTcgLTE2IDI2IC0zNC41dDM4IC0yNS41cTI1IC05IDUxLjUgMy41dDI3LjUgMzEuNXEyIDIyIC0zOS41IDU1dC02OC41IDM4cS0yMiA0IC0zMyAtMjEuNXQtMiAtNDYuNXpNMTg2NyAtMzBxMTMgLTI3IDU2LjUgLTU5LjV0NzcuNSAtNDEuNQpxNDUgLTEzIDgyIDQuNXQzNyA1MC41cTAgNDYgLTY3LjUgMTAwLjV0LTExNS41IDU5LjVxLTQwIDUgLTYzLjUgLTM3LjV0LTYuNSAtNzYuNXpNNDI4IC0zMHEtMTMgLTI3IC01NiAtNTkuNXQtNzcgLTQxLjVxLTQ1IC0xMyAtODIgNC41dC0zNyA1MC41cTAgNDYgNjcuNSAxMDAuNXQxMTUuNSA1OS41cTQwIDUgNjMgLTM3LjV0NiAtNzYuNXpNMTE1OCAxMDk0aDFxLTQxIDAgLTc2IC0xNXEyNyAtOCA0NCAtMzAuNXQxNyAtNDkuNQpxMCAtMzUgLTI3IC02MHQtNjUgLTI1cS01MiAwIC04MCA0M3EtNSAtMjMgLTUgLTQycTAgLTc0IDU2IC0xMjYuNXQxMzUgLTUyLjVxODAgMCAxMzYgNTIuNXQ1NiAxMjYuNXQtNTYgMTI2LjV0LTEzNiA1Mi41ek0xNDYyIDEzMTJxLTk5IDEwOSAtMjIwLjUgMTMxLjV0LTI0NS41IC00NC41cTI3IDYwIDgyLjUgOTYuNXQxMTggMzkuNXQxMjEuNSAtMTd0OTkuNSAtNzQuNXQ0NC41IC0xMzEuNXpNMjIxMiA3M3E4IC0xMSAtMTEgLTQyCnE3IC0yMyA3IC00MHExIC01NiAtNDQuNSAtMTEyLjV0LTEwOS41IC05MS41dC0xMTggLTM3cS00OCAtMiAtOTIgMjEuNXQtNjYgNjUuNXEtNjg3IC0yNSAtMTI1OSAwcS0yMyAtNDEgLTY2LjUgLTY1dC05Mi41IC0yMnEtODYgMyAtMTc5LjUgODAuNXQtOTIuNSAxNjAuNXEyIDIyIDcgNDBxLTE5IDMxIC0xMSA0MnE2IDEwIDMxIDFxMTQgMjIgNDEgNTFxLTcgMjkgMiAzOHExMSAxMCAzOSAtNHEyOSAyMCA1OSAzNHEwIDI5IDEzIDM3CnEyMyAxMiA1MSAtMTZxMzUgNSA2MSAtMnExOCAtNCAzOCAtMTl2NzNxLTExIDAgLTE4IDJxLTUzIDEwIC05NyA0NC41dC01NSA4Ny41cS05IDM4IDAgODFxMTUgNjIgOTMgOTVxMiAxNyAxOSAzNS41dDM2IDIzLjV0MzMgLTcuNXQxOSAtMzAuNWgxM3E0NiAtNSA2MCAtMjNxMyAtMyA1IC03cTEwIDEgMzAuNSAzLjV0MzAuNSAzLjVxLTE1IDExIC0zMCAxN3EtMjMgNDAgLTkxIDQzcTAgNiAxIDEwcS02MiAyIC0xMTguNSAxOC41dC04NC41IDQ3LjUKcS0zMiAzNiAtNDIuNSA5MnQtMi41IDExMnExNiAxMjYgOTAgMTc5cTIzIDE2IDUyIDQuNXQzMiAtNDAuNXEwIC0xIDEuNSAtMTR0Mi41IC0yMXQzIC0yMHQ1LjUgLTE5dDguNSAtMTBxMjcgLTE0IDc2IC0xMnE0OCA0NiA5OCA3NHEtNDAgNCAtMTYyIC0xNGw0NyA0NnE2MSA1OCAxNjMgMTExcTE0NSA3MyAyODIgODZxLTIwIDggLTQxIDE1LjV0LTQ3IDE0dC00Mi41IDEwLjV0LTQ3LjUgMTF0LTQzIDEwcTU5NSAxMjYgOTA0IC0xMzkKcTk4IC04NCAxNTggLTIyMnE4NSAtMTAgMTIxIDloMXE1IDMgOC41IDEwdDUuNSAxOXQzIDE5LjV0MyAyMS41bDEgMTRxMyAyOCAzMiA0MHQ1MiAtNXE3MyAtNTIgOTEgLTE3OHE3IC01NyAtMy41IC0xMTN0LTQyLjUgLTkxcS0yOCAtMzIgLTgzLjUgLTQ4LjV0LTExNS41IC0xOC41di0xMHEtNzEgLTIgLTk1IC00M3EtMTQgLTUgLTMxIC0xN3ExMSAtMSAzMiAtMy41dDMwIC0zLjVxMSA1IDUgOHExNiAxOCA2MCAyM2gxM3E1IDE4IDE5IDMwdDMzIDgKdDM2IC0yM3QxOSAtMzZxNzkgLTMyIDkzIC05NXE5IC00MCAxIC04MXEtMTIgLTUzIC01NiAtODh0LTk3IC00NHEtMTAgLTIgLTE3IC0ycTAgLTQ5IC0xIC03M3EyMCAxNSAzOCAxOXEyNiA3IDYxIDJxMjggMjggNTEgMTZxMTQgLTkgMTQgLTM3cTMzIC0xNiA1OSAtMzRxMjcgMTMgMzggNHExMCAtMTAgMiAtMzhxMjggLTMwIDQxIC01MXEyMyA4IDMxIC0xek0xOTM3IDEwMjVxMCAtMjkgLTkgLTU0cTgyIC0zMiAxMTIgLTEzMgpxNCAzNyAtOS41IDk4LjV0LTQxLjUgOTAuNXEtMjAgMTkgLTM2IDE3dC0xNiAtMjB6TTE4NTkgOTI1cTM1IC00MiA0Ny41IC0xMDguNXQtMC41IC0xMjQuNXE2NyAxMyA5NyA0NXExMyAxNCAxOCAyOHEtMyA2NCAtMzEgMTE0LjV0LTc5IDY2LjVxLTE1IC0xNSAtNTIgLTIxek0xODIyIDkyMXEtMzAgMCAtNDQgMXE0MiAtMTE1IDUzIC0yMzlxMjEgMCA0MyAzcTE2IDY4IDEgMTM1dC01MyAxMDB6TTI1OCA4MzlxMzAgMTAwIDExMiAxMzIKcS05IDI1IC05IDU0cTAgMTggLTE2LjUgMjB0LTM1LjUgLTE3cS0yOCAtMjkgLTQxLjUgLTkwLjV0LTkuNSAtOTguNXpNMjk0IDczN3EyOSAtMzEgOTcgLTQ1cS0xMyA1OCAtMC41IDEyNC41dDQ3LjUgMTA4LjV2MHEtMzcgNiAtNTIgMjFxLTUxIC0xNiAtNzguNSAtNjZ0LTMxLjUgLTExNXE5IC0xNyAxOCAtMjh6TTQ3MSA2ODNxMTQgMTI0IDczIDIzNXEtMTkgLTQgLTU1IC0xOGwtNDUgLTE5djFxLTQ2IC04OSAtMjAgLTE5NnEyNSAtMyA0NyAtM3oKTTE0MzQgNjQ0cTggLTM4IDE2LjUgLTEwOC41dDExLjUgLTg5LjVxMyAtMTggOS41IC0yMS41dDIzLjUgNC41cTQwIDIwIDYyIDg1LjV0MjMgMTI1LjVxLTI0IDIgLTE0NiA0ek0xMTUyIDEyODVxLTExNiAwIC0xOTkgLTgyLjV0LTgzIC0xOTguNXEwIC0xMTcgODMgLTE5OS41dDE5OSAtODIuNXQxOTkgODIuNXQ4MyAxOTkuNXEwIDExNiAtODMgMTk4LjV0LTE5OSA4Mi41ek0xMzgwIDY0NnEtMTA1IDIgLTIxMSAwdjFxLTEgLTI3IDIuNSAtODYKdDEzLjUgLTY2cTI5IC0xNCA5My41IC0xNC41dDk1LjUgMTAuNXE5IDMgMTEgMzl0LTAuNSA2OS41dC00LjUgNDYuNXpNMTExMiA0NDdxOCA0IDkuNSA0OHQtMC41IDg4dC00IDYzdjFxLTIxMiAtMyAtMjE0IC0zcS00IC0yMCAtNyAtNjJ0MCAtODN0MTQgLTQ2cTM0IC0xNSAxMDEgLTE2dDEwMSAxMHpNNzE4IDYzNnEtMTYgLTU5IDQuNSAtMTE4LjV0NzcuNSAtODQuNXExNSAtOCAyNCAtNXQxMiAyMXEzIDE2IDggOTB0MTAgMTAzCnEtNjkgLTIgLTEzNiAtNnpNNTkxIDUxMHEzIC0yMyAtMzQgLTM2cTEzMiAtMTQxIDI3MS41IC0yNDB0MzA1LjUgLTE1NHExNzIgNDkgMzEwLjUgMTQ2dDI5My41IDI1MHEtMzMgMTMgLTMwIDM0cTAgMiAwLjUgMy41dDEuNSAzdDEgMi41djF2LTFxLTE3IDIgLTUwIDUuNXQtNDggNC41cS0yNiAtOTAgLTgyIC0xMzJxLTUxIC0zOCAtODIgMXEtNSA2IC05IDE0cS03IDEzIC0xNyA2MnEtMiAtNSAtNSAtOXQtNy41IC03dC04IC01LjV0LTkuNSAtNApsLTEwIC0yLjV0LTEyIC0ybC0xMiAtMS41dC0xMy41IC0xdC0xMy41IC0wLjVxLTEwNiAtOSAtMTYzIDExcS00IC0xNyAtMTAgLTI2LjV0LTIxIC0xNXQtMjMgLTd0LTM2IC0zLjVxLTYgLTEgLTkgLTFxLTE3OSAtMTcgLTIwMyA0MHEtMiAtNjMgLTU2IC01NHEtNDcgOCAtOTEgNTRxLTEyIDEzIC0yMCAyNnEtMTcgMjkgLTI2IDY1cS01OCAtNiAtODcgLTEwcTEgLTIgNCAtMTB6TTUwNyAtMTE4cTMgMTQgMyAzMHEtMTcgNzEgLTUxIDEzMAp0LTczIDcwcS00MSAxMiAtMTAxLjUgLTE0LjV0LTEwNC41IC04MHQtMzkgLTEwNy41cTM1IC01MyAxMDAgLTkzdDExOSAtNDJxNTEgLTIgOTQgMjh0NTMgNzl6TTUxMCA1M3EyMyAtNjMgMjcgLTExOXExOTUgMTEzIDM5MiAxNzRxLTk4IDUyIC0xODAuNSAxMjB0LTE3OS41IDE2NXEtNiAtNCAtMjkgLTEzcTAgLTEgLTEgLTR0LTEgLTVxMzEgLTE4IDIyIC0zN3EtMTIgLTIzIC01NiAtMzRxLTEwIC0xMyAtMjkgLTI0aC0xcS0yIC04MyAxIC0xNTAKcTE5IC0zNCAzNSAtNzN6TTU3OSAtMTEzcTUzMiAtMjEgMTE0NSAwcS0yNTQgMTQ3IC00MjggMTk2cS03NiAtMzUgLTE1NiAtNTdxLTggLTMgLTE2IDBxLTY1IDIxIC0xMjkgNDlxLTIwOCAtNjAgLTQxNiAtMTg4aC0xdi0xcTEgMCAxIDF6TTE3NjMgLTY3cTQgNTQgMjggMTIwcTE0IDM4IDMzIDcxbC0xIC0xcTMgNzcgMyAxNTNxLTE1IDggLTMwIDI1cS00MiA5IC01NiAzM3EtOSAyMCAyMiAzOHEtMiA0IC0yIDlxLTE2IDQgLTI4IDEyCnEtMjA0IC0xOTAgLTM4MyAtMjg0cTE5OCAtNTkgNDE0IC0xNzZ6TTIxNTUgLTkwcTUgNTQgLTM5IDEwNy41dC0xMDQgODB0LTEwMiAxNC41cS0zOCAtMTEgLTcyLjUgLTcwLjV0LTUxLjUgLTEyOS41cTAgLTE2IDMgLTMwcTEwIC00OSA1MyAtNzl0OTQgLTI4cTU0IDIgMTE5IDQydDEwMCA5M3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzOCIgdW5pY29kZT0iJiN4ZjIzZDsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTE1MjQgLTI1cTAgLTY4IC00OCAtMTE2dC0xMTYgLTQ4dC0xMTYuNSA0OHQtNDguNSAxMTZ0NDguNSAxMTYuNXQxMTYuNSA0OC41dDExNiAtNDguNXQ0OCAtMTE2LjV6TTc3NSAtMjVxMCAtNjggLTQ4LjUgLTExNnQtMTE2LjUgLTQ4dC0xMTYgNDh0LTQ4IDExNnQ0OCAxMTYuNXQxMTYgNDguNXQxMTYuNSAtNDguNXQ0OC41IC0xMTYuNXpNMCAxNDY5cTU3IC02MCAxMTAuNSAtMTA0LjV0MTIxIC04MnQxMzYgLTYzdDE2NiAtNDUuNQp0MjAwIC0zMS41dDI1MCAtMTguNXQzMDQgLTkuNXQzNzIuNSAtMi41cTEzOSAwIDI0NC41IC01dDE4MSAtMTYuNXQxMjQgLTI3LjV0NzEgLTM5LjV0MjQgLTUxLjV0LTE5LjUgLTY0dC01Ni41IC03Ni41dC04OS41IC05MXQtMTE2IC0xMDQuNXQtMTM5IC0xMTlxLTE4NSAtMTU3IC0yODYgLTI0N3EyOSA1MSA3Ni41IDEwOXQ5NCAxMDUuNXQ5NC41IDk4LjV0ODMgOTEuNXQ1NCA4MC41dDEzIDcwdC00NS41IDU1LjV0LTExNi41IDQxdC0yMDQgMjMuNQp0LTMwNCA1cS0xNjggLTIgLTMxNCA2dC0yNTYgMjN0LTIwNC41IDQxdC0xNTkuNSA1MS41dC0xMjIuNSA2Mi41dC05MS41IDY2LjV0LTY4IDcxLjV0LTUwLjUgNjkuNXQtNDAgNjh0LTM2LjUgNTkuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzOSIgdW5pY29kZT0iJiN4ZjIzZTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg5NiAxNDcycS0xNjkgMCAtMzIzIC02NnQtMjY1LjUgLTE3Ny41dC0xNzcuNSAtMjY1LjV0LTY2IC0zMjN0NjYgLTMyM3QxNzcuNSAtMjY1LjV0MjY1LjUgLTE3Ny41dDMyMyAtNjZ0MzIzIDY2dDI2NS41IDE3Ny41dDE3Ny41IDI2NS41dDY2IDMyM3QtNjYgMzIzdC0xNzcuNSAyNjUuNXQtMjY1LjUgMTc3LjV0LTMyMyA2NnpNODk2IDE1MzZxMTgyIDAgMzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4dC03MSAtMzQ4CnQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXpNNDk2IDcwNHExNiAwIDE2IC0xNnYtNDgwcTAgLTE2IC0xNiAtMTZoLTMycS0xNiAwIC0xNiAxNnY0ODBxMCAxNiAxNiAxNmgzMnpNODk2IDY0MHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXEwIC0zNSAtMTcuNSAtNjR0LTQ2LjUgLTQ2di0xMTRxMCAtMTQgLTkgLTIzCnQtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjExNHEtMjkgMTcgLTQ2LjUgNDZ0LTE3LjUgNjRxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41ek04OTYgMTQwOHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41dC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzek01NDQgOTI4di05NgpxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2OTZxMCA5MyA2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV2LTk2cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzdjk2cTAgMTQ2IC0xMDMgMjQ5dC0yNDkgMTAzdC0yNDkgLTEwM3QtMTAzIC0yNDl6TTE0MDggMTkydjUxMnEwIDI2IC0xOSA0NXQtNDUgMTloLTg5NnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTUxMgpxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg4OTZxMjYgMCA0NSAxOXQxOSA0NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0MCIgdW5pY29kZT0iJiN4ZjI0MDsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTE5MjAgMTAyNHYtNzY4aC0xNjY0djc2OGgxNjY0ek0yMDQ4IDQ0OGgxMjh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yM3YtOTYwcTAgLTE0IDkgLTIzdDIzIC05aDE4NTZxMTQgMCAyMyA5dDkgMjN2Mjg4ek0yMzA0IDgzMnYtMzg0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41di0xNjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE4NTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzCnY5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE4NTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTE2MHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0MSIgdW5pY29kZT0iJiN4ZjI0MTsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTI1NiAyNTZ2NzY4aDEyODB2LTc2OGgtMTI4MHpNMjE3NiA5NjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTM4NHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXYtMTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xODU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE4NTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTE2MHpNMjE3NiA0NDh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDkKaC0xODU2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2MHEwIC0xNCA5IC0yM3QyMyAtOWgxODU2cTE0IDAgMjMgOXQ5IDIzdjI4OGgxMjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NDIiIHVuaWNvZGU9IiYjeGYyNDI7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik0yNTYgMjU2djc2OGg4OTZ2LTc2OGgtODk2ek0yMTc2IDk2MHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXYtMzg0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41di0xNjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE4NTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjk2MHEwIDY2IDQ3IDExM3QxMTMgNDdoMTg1NnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMTYwek0yMTc2IDQ0OHYzODRoLTEyOHYyODhxMCAxNCAtOSAyM3QtMjMgOQpoLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yM3YtOTYwcTAgLTE0IDkgLTIzdDIzIC05aDE4NTZxMTQgMCAyMyA5dDkgMjN2Mjg4aDEyOHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0MyIgdW5pY29kZT0iJiN4ZjI0MzsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTI1NiAyNTZ2NzY4aDUxMnYtNzY4aC01MTJ6TTIxNzYgOTYwcTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41di0zODRxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV2LTE2MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTg1NnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2OTYwcTAgNjYgNDcgMTEzdDExMyA0N2gxODU2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xNjB6TTIxNzYgNDQ4djM4NGgtMTI4djI4OHEwIDE0IC05IDIzdC0yMyA5CmgtMTg1NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi05NjBxMCAtMTQgOSAtMjN0MjMgLTloMTg1NnExNCAwIDIzIDl0OSAyM3YyODhoMTI4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ0IiB1bmljb2RlPSImI3hmMjQ0OyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMjE3NiA5NjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTM4NHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXYtMTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xODU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE4NTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTE2MHpNMjE3NiA0NDh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yMwp2LTk2MHEwIC0xNCA5IC0yM3QyMyAtOWgxODU2cTE0IDAgMjMgOXQ5IDIzdjI4OGgxMjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NDUiIHVuaWNvZGU9IiYjeGYyNDU7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMTMzIDQ5M3EzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtMzgybDIwMSAtNDc2cTEwIC0yNSAwIC00OXQtMzQgLTM1bC0xNzcgLTc1cS0yNSAtMTAgLTQ5IDB0LTM1IDM0bC0xOTEgNDUybC0zMTIgLTMxMnEtMTkgLTE5IC00NSAtMTlxLTEyIDAgLTI0IDVxLTQwIDE3IC00MCA1OXYxNTA0cTAgNDIgNDAgNTlxMTIgNSAyNCA1cTI3IDAgNDUgLTE5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ2IiB1bmljb2RlPSImI3hmMjQ2OyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNODMyIDE0MDhxLTMyMCAwIC0zMjAgLTIyNHYtNDE2aDEyOHYtMTI4aC0xMjh2LTU0NHEwIC0yMjQgMzIwIC0yMjRoNjR2LTEyOGgtNjRxLTI3MiAwIC0zODQgMTQ2cS0xMTIgLTE0NiAtMzg0IC0xNDZoLTY0djEyOGg2NHEzMjAgMCAzMjAgMjI0djU0NGgtMTI4djEyOGgxMjh2NDE2cTAgMjI0IC0zMjAgMjI0aC02NHYxMjhoNjRxMjcyIDAgMzg0IC0xNDZxMTEyIDE0NiAzODQgMTQ2aDY0di0xMjhoLTY0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ3IiB1bmljb2RlPSImI3hmMjQ3OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMjA0OCAxMTUyaC0xMjh2LTEwMjRoMTI4di0zODRoLTM4NHYxMjhoLTEyODB2LTEyOGgtMzg0djM4NGgxMjh2MTAyNGgtMTI4djM4NGgzODR2LTEyOGgxMjgwdjEyOGgzODR2LTM4NHpNMTc5MiAxNDA4di0xMjhoMTI4djEyOGgtMTI4ek0xMjggMTQwOHYtMTI4aDEyOHYxMjhoLTEyOHpNMjU2IC0xMjh2MTI4aC0xMjh2LTEyOGgxMjh6TTE2NjQgMHYxMjhoMTI4djEwMjRoLTEyOHYxMjhoLTEyODB2LTEyOGgtMTI4di0xMDI0aDEyOHYtMTI4CmgxMjgwek0xOTIwIC0xMjh2MTI4aC0xMjh2LTEyOGgxMjh6TTEyODAgODk2aDM4NHYtNzY4aC04OTZ2MjU2aC0zODR2NzY4aDg5NnYtMjU2ek01MTIgNTEyaDY0MHY1MTJoLTY0MHYtNTEyek0xNTM2IDI1NnY1MTJoLTI1NnYtMzg0aC0zODR2LTEyOGg2NDB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NDgiIHVuaWNvZGU9IiYjeGYyNDg7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik0yMzA0IDc2OGgtMTI4di02NDBoMTI4di0zODRoLTM4NHYxMjhoLTg5NnYtMTI4aC0zODR2Mzg0aDEyOHYxMjhoLTM4NHYtMTI4aC0zODR2Mzg0aDEyOHY2NDBoLTEyOHYzODRoMzg0di0xMjhoODk2djEyOGgzODR2LTM4NGgtMTI4di0xMjhoMzg0djEyOGgzODR2LTM4NHpNMjA0OCAxMDI0di0xMjhoMTI4djEyOGgtMTI4ek0xNDA4IDE0MDh2LTEyOGgxMjh2MTI4aC0xMjh6TTEyOCAxNDA4di0xMjhoMTI4djEyOGgtMTI4ek0yNTYgMjU2CnYxMjhoLTEyOHYtMTI4aDEyOHpNMTUzNiAzODRoLTEyOHYtMTI4aDEyOHYxMjh6TTM4NCAzODRoODk2djEyOGgxMjh2NjQwaC0xMjh2MTI4aC04OTZ2LTEyOGgtMTI4di02NDBoMTI4di0xMjh6TTg5NiAtMTI4djEyOGgtMTI4di0xMjhoMTI4ek0yMTc2IC0xMjh2MTI4aC0xMjh2LTEyOGgxMjh6TTIwNDggMTI4djY0MGgtMTI4djEyOGgtMzg0di0zODRoMTI4di0zODRoLTM4NHYxMjhoLTM4NHYtMTI4aDEyOHYtMTI4aDg5NnYxMjhoMTI4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ5IiB1bmljb2RlPSImI3hmMjQ5OyIgCmQ9Ik0xMDI0IDI4OHYtNDE2aC05MjhxLTQwIDAgLTY4IDI4dC0yOCA2OHYxMzQ0cTAgNDAgMjggNjh0NjggMjhoMTM0NHE0MCAwIDY4IC0yOHQyOCAtNjh2LTkyOGgtNDE2cS00MCAwIC02OCAtMjh0LTI4IC02OHpNMTE1MiAyNTZoMzgxcS0xNSAtODIgLTY1IC0xMzJsLTE4NCAtMTg0cS01MCAtNTAgLTEzMiAtNjV2MzgxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTUwIiB1bmljb2RlPSImI3hmMjRhOyIgCmQ9Ik0xNDAwIDI1NmgtMjQ4di0yNDhxMjkgMTAgNDEgMjJsMTg1IDE4NXExMiAxMiAyMiA0MXpNMTEyMCAzODRoMjg4djg5NmgtMTI4MHYtMTI4MGg4OTZ2Mjg4cTAgNDAgMjggNjh0NjggMjh6TTE1MzYgMTMxMnYtMTAyNHEwIC00MCAtMjAgLTg4dC00OCAtNzZsLTE4NCAtMTg0cS0yOCAtMjggLTc2IC00OHQtODggLTIwaC0xMDI0cS00MCAwIC02OCAyOHQtMjggNjh2MTM0NHEwIDQwIDI4IDY4dDY4IDI4aDEzNDRxNDAgMCA2OCAtMjh0MjggLTY4CnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU1MSIgdW5pY29kZT0iJiN4ZjI0YjsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTE5NTEgNTM4cTAgLTI2IC0xNS41IC00NC41dC0zOC41IC0yMy41cS04IC0yIC0xOCAtMmgtMTUzdjE0MGgxNTNxMTAgMCAxOCAtMnEyMyAtNSAzOC41IC0yMy41dDE1LjUgLTQ0LjV6TTE5MzMgNzUxcTAgLTI1IC0xNSAtNDJ0LTM4IC0yMXEtMyAtMSAtMTUgLTFoLTEzOXYxMjloMTM5cTMgMCA4LjUgLTAuNXQ2LjUgLTAuNXEyMyAtNCAzOCAtMjEuNXQxNSAtNDIuNXpNNzI4IDU4N3YzMDhoLTIyOHYtMzA4cTAgLTU4IC0zOCAtOTQuNQp0LTEwNSAtMzYuNXEtMTA4IDAgLTIyOSA1OXYtMTEycTUzIC0xNSAxMjEgLTIzdDEwOSAtOWw0MiAtMXEzMjggMCAzMjggMjE3ek0xNDQyIDQwM3YxMTNxLTk5IC01MiAtMjAwIC01OXEtMTA4IC04IC0xNjkgNDF0LTYxIDE0MnQ2MSAxNDJ0MTY5IDQxcTEwMSAtNyAyMDAgLTU4djExMnEtNDggMTIgLTEwMCAxOS41dC04MCA5LjVsLTI4IDJxLTEyNyA2IC0yMTguNSAtMTR0LTE0MC41IC02MHQtNzEgLTg4dC0yMiAtMTA2dDIyIC0xMDZ0NzEgLTg4CnQxNDAuNSAtNjB0MjE4LjUgLTE0cTEwMSA0IDIwOCAzMXpNMjE3NiA1MThxMCA1NCAtNDMgODguNXQtMTA5IDM5LjV2M3E1NyA4IDg5IDQxLjV0MzIgNzkuNXEwIDU1IC00MSA4OHQtMTA3IDM2cS0zIDAgLTEyIDAuNXQtMTQgMC41aC00NTV2LTUxMGg0OTFxNzQgMCAxMjEuNSAzNi41dDQ3LjUgOTYuNXpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MAp0OTAgMzhoMjA0OHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTIiIHVuaWNvZGU9IiYjeGYyNGM7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik04NTggMjk1djY5M3EtMTA2IC00MSAtMTcyIC0xMzUuNXQtNjYgLTIxMS41dDY2IC0yMTEuNXQxNzIgLTEzNC41ek0xMzYyIDY0MXEwIDExNyAtNjYgMjExLjV0LTE3MiAxMzUuNXYtNjk0cTEwNiA0MSAxNzIgMTM1LjV0NjYgMjExLjV6TTE1NzcgNjQxcTAgLTE1OSAtNzguNSAtMjk0dC0yMTMuNSAtMjEzLjV0LTI5NCAtNzguNXEtMTE5IDAgLTIyNy41IDQ2LjV0LTE4NyAxMjV0LTEyNSAxODd0LTQ2LjUgMjI3LjVxMCAxNTkgNzguNSAyOTQKdDIxMy41IDIxMy41dDI5NCA3OC41dDI5NCAtNzguNXQyMTMuNSAtMjEzLjV0NzguNSAtMjk0ek0xOTYwIDYzNHEwIDEzOSAtNTUuNSAyNjEuNXQtMTQ3LjUgMjA1LjV0LTIxMy41IDEzMXQtMjUyLjUgNDhoLTMwMXEtMTc2IDAgLTMyMy41IC04MXQtMjM1IC0yMzB0LTg3LjUgLTMzNXEwIC0xNzEgODcgLTMxNy41dDIzNiAtMjMxLjV0MzIzIC04NWgzMDFxMTI5IDAgMjUxLjUgNTAuNXQyMTQuNSAxMzV0MTQ3LjUgMjAyLjV0NTUuNSAyNDZ6Ck0yMzA0IDEyODB2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0yMDQ4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwdDkwIDM4aDIwNDhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTUzIiB1bmljb2RlPSImI3hmMjRkOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTY2NCAtOTZ2MTA4OHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTEwODhxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0xMDg4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTA4OHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNzkyIDk5MnYtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTA4OHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTA4OHE2NiAwIDExMyAtNDd0NDcgLTExMwp6TTE0MDggMTM3NnYtMTYwaC0xMjh2MTYwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTA4OHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTEwODhxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxNjB2LTEyOGgtMTYwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxMDg4cTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTU0IiB1bmljb2RlPSImI3hmMjRlOyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMTcyOCAxMDg4bC0zODQgLTcwNGg3Njh6TTQ0OCAxMDg4bC0zODQgLTcwNGg3Njh6TTEyNjkgMTI4MHEtMTQgLTQwIC00NS41IC03MS41dC03MS41IC00NS41di0xMjkxaDYwOHExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xMzQ0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDYwOHYxMjkxcS00MCAxNCAtNzEuNSA0NS41dC00NS41IDcxLjVoLTQ5MXEtMTQgMCAtMjMgOXQtOSAyM3Y2NApxMCAxNCA5IDIzdDIzIDloNDkxcTIxIDU3IDcwIDkyLjV0MTExIDM1LjV0MTExIC0zNS41dDcwIC05Mi41aDQ5MXExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC00OTF6TTEwODggMTI2NHEzMyAwIDU2LjUgMjMuNXQyMy41IDU2LjV0LTIzLjUgNTYuNXQtNTYuNSAyMy41dC01Ni41IC0yMy41dC0yMy41IC01Ni41dDIzLjUgLTU2LjV0NTYuNSAtMjMuNXpNMjE3NiAzODRxMCAtNzMgLTQ2LjUgLTEzMXQtMTE3LjUgLTkxCnQtMTQ0LjUgLTQ5LjV0LTEzOS41IC0xNi41dC0xMzkuNSAxNi41dC0xNDQuNSA0OS41dC0xMTcuNSA5MXQtNDYuNSAxMzFxMCAxMSAzNSA4MXQ5MiAxNzQuNXQxMDcgMTk1LjV0MTAyIDE4NHQ1NiAxMDBxMTggMzMgNTYgMzN0NTYgLTMzcTQgLTcgNTYgLTEwMHQxMDIgLTE4NHQxMDcgLTE5NS41dDkyIC0xNzQuNXQzNSAtODF6TTg5NiAzODRxMCAtNzMgLTQ2LjUgLTEzMXQtMTE3LjUgLTkxdC0xNDQuNSAtNDkuNXQtMTM5LjUgLTE2LjUKdC0xMzkuNSAxNi41dC0xNDQuNSA0OS41dC0xMTcuNSA5MXQtNDYuNSAxMzFxMCAxMSAzNSA4MXQ5MiAxNzQuNXQxMDcgMTk1LjV0MTAyIDE4NHQ1NiAxMDBxMTggMzMgNTYgMzN0NTYgLTMzcTQgLTcgNTYgLTEwMHQxMDIgLTE4NHQxMDcgLTE5NS41dDkyIC0xNzQuNXQzNSAtODF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTUiIHVuaWNvZGU9IiYjeGYyNTA7IiAKZD0iTTE0MDggMTQwOHEwIC0yNjEgLTEwNi41IC00NjEuNXQtMjY2LjUgLTMwNi41cTE2MCAtMTA2IDI2Ni41IC0zMDYuNXQxMDYuNSAtNDYxLjVoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTQ3MnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnEwIDI2MSAxMDYuNSA0NjEuNXQyNjYuNSAzMDYuNXEtMTYwIDEwNiAtMjY2LjUgMzA2LjV0LTEwNi41IDQ2MS41aC05NnEtMTQgMCAtMjMgOQp0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTQ3MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnpNODc0IDcwMHE3NyAyOSAxNDkgOTIuNXQxMjkuNSAxNTIuNXQ5Mi41IDIxMHQzNSAyNTNoLTEwMjRxMCAtMTMyIDM1IC0yNTN0OTIuNSAtMjEwdDEyOS41IC0xNTIuNXQxNDkgLTkyLjVxMTkgLTcgMzAuNSAtMjMuNXQxMS41IC0zNi41dC0xMS41IC0zNi41dC0zMC41IC0yMy41cS03NyAtMjkgLTE0OSAtOTIuNQp0LTEyOS41IC0xNTIuNXQtOTIuNSAtMjEwdC0zNSAtMjUzaDEwMjRxMCAxMzIgLTM1IDI1M3QtOTIuNSAyMTB0LTEyOS41IDE1Mi41dC0xNDkgOTIuNXEtMTkgNyAtMzAuNSAyMy41dC0xMS41IDM2LjV0MTEuNSAzNi41dDMwLjUgMjMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU1NiIgdW5pY29kZT0iJiN4ZjI1MTsiIApkPSJNMTQwOCAxNDA4cTAgLTI2MSAtMTA2LjUgLTQ2MS41dC0yNjYuNSAtMzA2LjVxMTYwIC0xMDYgMjY2LjUgLTMwNi41dDEwNi41IC00NjEuNWg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2cTAgMjYxIDEwNi41IDQ2MS41dDI2Ni41IDMwNi41cS0xNjAgMTA2IC0yNjYuNSAzMDYuNXQtMTA2LjUgNDYxLjVoLTk2cS0xNCAwIC0yMyA5CnQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgxNDcycTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTk2ek0xMjgwIDE0MDhoLTEwMjRxMCAtNjYgOSAtMTI4aDEwMDZxOSA2MSA5IDEyOHpNMTI4MCAtMTI4cTAgMTMwIC0zNCAyNDkuNXQtOTAuNSAyMDh0LTEyNi41IDE1MnQtMTQ2IDk0LjVoLTIzMHEtNzYgLTMxIC0xNDYgLTk0LjV0LTEyNi41IC0xNTJ0LTkwLjUgLTIwOHQtMzQgLTI0OS41aDEwMjR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTciIHVuaWNvZGU9IiYjeGYyNTI7IiAKZD0iTTE0MDggMTQwOHEwIC0yNjEgLTEwNi41IC00NjEuNXQtMjY2LjUgLTMwNi41cTE2MCAtMTA2IDI2Ni41IC0zMDYuNXQxMDYuNSAtNDYxLjVoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTQ3MnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnEwIDI2MSAxMDYuNSA0NjEuNXQyNjYuNSAzMDYuNXEtMTYwIDEwNiAtMjY2LjUgMzA2LjV0LTEwNi41IDQ2MS41aC05NnEtMTQgMCAtMjMgOQp0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTQ3MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnpNMTI4MCAxNDA4aC0xMDI0cTAgLTIwNiA4NSAtMzg0aDg1NHE4NSAxNzggODUgMzg0ek0xMjIzIDE5MnEtNTQgMTQxIC0xNDUuNSAyNDEuNXQtMTk0LjUgMTQyLjVoLTIzMHEtMTAzIC00MiAtMTk0LjUgLTE0Mi41dC0xNDUuNSAtMjQxLjVoOTEweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTU4IiB1bmljb2RlPSImI3hmMjUzOyIgCmQ9Ik0xNDA4IDE0MDhxMCAtMjYxIC0xMDYuNSAtNDYxLjV0LTI2Ni41IC0zMDYuNXExNjAgLTEwNiAyNjYuNSAtMzA2LjV0MTA2LjUgLTQ2MS41aDk2cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE0NzJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloOTZxMCAyNjEgMTA2LjUgNDYxLjV0MjY2LjUgMzA2LjVxLTE2MCAxMDYgLTI2Ni41IDMwNi41dC0xMDYuNSA0NjEuNWgtOTZxLTE0IDAgLTIzIDkKdC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE0NzJxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ6TTg3NCA3MDBxNzcgMjkgMTQ5IDkyLjV0MTI5LjUgMTUyLjV0OTIuNSAyMTB0MzUgMjUzaC0xMDI0cTAgLTEzMiAzNSAtMjUzdDkyLjUgLTIxMHQxMjkuNSAtMTUyLjV0MTQ5IC05Mi41cTE5IC03IDMwLjUgLTIzLjV0MTEuNSAtMzYuNXQtMTEuNSAtMzYuNXQtMzAuNSAtMjMuNXEtMTM3IC01MSAtMjQ0IC0xOTYKaDcwMHEtMTA3IDE0NSAtMjQ0IDE5NnEtMTkgNyAtMzAuNSAyMy41dC0xMS41IDM2LjV0MTEuNSAzNi41dDMwLjUgMjMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU1OSIgdW5pY29kZT0iJiN4ZjI1NDsiIApkPSJNMTUwNCAtNjRxMTQgMCAyMyAtOXQ5IC0yM3YtMTI4cTAgLTE0IC05IC0yM3QtMjMgLTloLTE0NzJxLTE0IDAgLTIzIDl0LTkgMjN2MTI4cTAgMTQgOSAyM3QyMyA5aDE0NzJ6TTEzMCAwcTMgNTUgMTYgMTA3dDMwIDk1dDQ2IDg3dDUzLjUgNzZ0NjQuNSA2OS41dDY2IDYwdDcwLjUgNTV0NjYuNSA0Ny41dDY1IDQzcS00MyAyOCAtNjUgNDN0LTY2LjUgNDcuNXQtNzAuNSA1NXQtNjYgNjB0LTY0LjUgNjkuNXQtNTMuNSA3NnQtNDYgODcKdC0zMCA5NXQtMTYgMTA3aDEyNzZxLTMgLTU1IC0xNiAtMTA3dC0zMCAtOTV0LTQ2IC04N3QtNTMuNSAtNzZ0LTY0LjUgLTY5LjV0LTY2IC02MHQtNzAuNSAtNTV0LTY2LjUgLTQ3LjV0LTY1IC00M3E0MyAtMjggNjUgLTQzdDY2LjUgLTQ3LjV0NzAuNSAtNTV0NjYgLTYwdDY0LjUgLTY5LjV0NTMuNSAtNzZ0NDYgLTg3dDMwIC05NXQxNiAtMTA3aC0xMjc2ek0xNTA0IDE1MzZxMTQgMCAyMyAtOXQ5IC0yM3YtMTI4cTAgLTE0IC05IC0yM3QtMjMgLTkKaC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjEyOHEwIDE0IDkgMjN0MjMgOWgxNDcyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTYwIiB1bmljb2RlPSImI3hmMjU1OyIgCmQ9Ik03NjggMTE1MnEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXYtMTI4aC0zMnY5M3EwIDQ4IC0zMiA4MS41dC04MCAzMy41cS00NiAwIC03OSAtMzN0LTMzIC03OXYtNDI5bC0zMiAzMHYxNzJxMCA0OCAtMzIgODEuNXQtODAgMzMuNXEtNDYgMCAtNzkgLTMzdC0zMyAtNzl2LTIyNHEwIC00NyAzNSAtODJsMzEwIC0yOTZxMzkgLTM5IDM5IC0xMDJxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg2NDBxMjYgMCA0NSAxOXQxOSA0NXYyNQpxMCA0MSAxMCA3N2wxMDggNDM2cTEwIDM2IDEwIDc3djI0NnEwIDQ4IC0zMiA4MS41dC04MCAzMy41cS00NiAwIC03OSAtMzN0LTMzIC03OXYtMzJoLTMydjEyNXEwIDQwIC0yNSA3Mi41dC02NCA0MC41cS0xNCAyIC0yMyAycS00NiAwIC03OSAtMzN0LTMzIC03OXYtMTI4aC0zMnYxMjJxMCA1MSAtMzIuNSA4OS41dC04Mi41IDQzLjVxLTUgMSAtMTMgMXpNNzY4IDEyODBxODQgMCAxNDkgLTUwcTU3IDM0IDEyMyAzNHE1OSAwIDExMSAtMjcKdDg2IC03NnEyNyA3IDU5IDdxMTAwIDAgMTcwIC03MS41dDcwIC0xNzEuNXYtMjQ2cTAgLTUxIC0xMyAtMTA4bC0xMDkgLTQzNnEtNiAtMjQgLTYgLTcxcTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2aC02NDBxLTg0IDAgLTEzOCA1OC41dC01NCAxNDIuNWwtMzA4IDI5NnEtNzYgNzMgLTc2IDE3NXYyMjRxMCA5OSA3MC41IDE2OS41dDE2OS41IDcwLjVxMTEgMCAxNiAtMXE2IDk1IDc1LjUgMTYwdDE2NC41IDY1cTUyIDAgOTggLTIxCnE3MiA2OSAxNzQgNjl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjEiIHVuaWNvZGU9IiYjeGYyNTY7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik04ODAgMTQwOHEtNDYgMCAtNzkgLTMzdC0zMyAtNzl2LTY1NmgtMzJ2NTI4cTAgNDYgLTMzIDc5dC03OSAzM3QtNzkgLTMzdC0zMyAtNzl2LTUyOHYtMjU2bC0xNTQgMjA1cS0zOCA1MSAtMTAyIDUxcS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41cTAgLTQzIDI2IC03N2wzODQgLTUxMnEzOCAtNTEgMTAyIC01MWg2ODhxMzQgMCA2MSAyMnQzNCA1Nmw3NiA0MDVxNSAzMiA1IDU5djQ5OHEwIDQ2IC0zMyA3OXQtNzkgMzN0LTc5IC0zMwp0LTMzIC03OXYtMjcyaC0zMnY1MjhxMCA0NiAtMzMgNzl0LTc5IDMzdC03OSAtMzN0LTMzIC03OXYtNTI4aC0zMnY2NTZxMCA0NiAtMzMgNzl0LTc5IDMzek04ODAgMTUzNnE2OCAwIDEyNS41IC0zNS41dDg4LjUgLTk2LjVxMTkgNCA0MiA0cTk5IDAgMTY5LjUgLTcwLjV0NzAuNSAtMTY5LjV2LTE3cTEwNSA2IDE4MC41IC02NHQ3NS41IC0xNzV2LTQ5OHEwIC00MCAtOCAtODNsLTc2IC00MDRxLTE0IC03OSAtNzYuNSAtMTMxdC0xNDMuNSAtNTIKaC02ODhxLTYwIDAgLTExNC41IDI3LjV0LTkwLjUgNzQuNWwtMzg0IDUxMnEtNTEgNjggLTUxIDE1NHEwIDEwNiA3NSAxODF0MTgxIDc1cTc4IDAgMTI4IC0zNHY0MzRxMCA5OSA3MC41IDE2OS41dDE2OS41IDcwLjVxMjMgMCA0MiAtNHEzMSA2MSA4OC41IDk2LjV0MTI1LjUgMzUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2MiIgdW5pY29kZT0iJiN4ZjI1NzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTEwNzMgLTEyOGgtMTc3cS0xNjMgMCAtMjI2IDE0MXEtMjMgNDkgLTIzIDEwMnY1cS02MiAzMCAtOTguNSA4OC41dC0zNi41IDEyNy41cTAgMzggNSA0OGgtMjYxcS0xMDYgMCAtMTgxIDc1dC03NSAxODF0NzUgMTgxdDE4MSA3NWgxMTNsLTQ0IDE3cS03NCAyOCAtMTE5LjUgOTMuNXQtNDUuNSAxNDUuNXEwIDEwNiA3NSAxODF0MTgxIDc1cTQ2IDAgOTEgLTE3bDYyOCAtMjM5aDQwMXExMDYgMCAxODEgLTc1dDc1IC0xODF2LTY2OApxMCAtODggLTU0IC0xNTcuNXQtMTQwIC05MC41bC0zMzkgLTg1cS05MiAtMjMgLTE4NiAtMjN6TTEwMjQgNTgzbC0xNTUgLTcxbC0xNjMgLTc0cS0zMCAtMTQgLTQ4IC00MS41dC0xOCAtNjAuNXEwIC00NiAzMyAtNzl0NzkgLTMzcTI2IDAgNDYgMTBsMzM4IDE1NHEtNDkgMTAgLTgwLjUgNTB0LTMxLjUgOTB2NTV6TTEzNDQgMjcycTAgNDYgLTMzIDc5dC03OSAzM3EtMjYgMCAtNDYgLTEwbC0yOTAgLTEzMnEtMjggLTEzIC0zNyAtMTcKdC0zMC41IC0xN3QtMjkuNSAtMjMuNXQtMTYgLTI5dC04IC00MC41cTAgLTUwIDMxLjUgLTgydDgxLjUgLTMycTIwIDAgMzggOWwzNTIgMTYwcTMwIDE0IDQ4IDQxLjV0MTggNjAuNXpNMTExMiAxMDI0bC02NTAgMjQ4cS0yNCA4IC00NiA4cS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41cTAgLTQwIDIyLjUgLTczdDU5LjUgLTQ3bDUyNiAtMjAwdi02NGgtNjQwcS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjUKdDkwLjUgLTM3LjVoNTM1bDIzMyAxMDZ2MTk4cTAgNjMgNDYgMTA2bDExMSAxMDJoLTY5ek0xMDczIDBxODIgMCAxNTUgMTlsMzM5IDg1cTQzIDExIDcwIDQ1LjV0MjcgNzguNXY2NjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjVoLTMwOGwtMTM2IC0xMjZxLTM2IC0zMyAtMzYgLTgydi0yOTZxMCAtNDYgMzMgLTc3dDc5IC0zMXQ3OSAzNXQzMyA4MXYyMDhoMzJ2LTIwOHEwIC03MCAtNTcgLTExNHE1MiAtOCA4Ni41IC00OC41dDM0LjUgLTkzLjUKcTAgLTQyIC0yMyAtNzh0LTYxIC01M2wtMzEwIC0xNDFoOTF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjMiIHVuaWNvZGU9IiYjeGYyNTg7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xMTUxIDE1MzZxNjEgMCAxMTYgLTI4dDkxIC03N2w1NzIgLTc4MXExMTggLTE1OSAxMTggLTM1OXYtMzU1cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2aC0zODRxLTgwIDAgLTEzNiA1NnQtNTYgMTM2djE3N2wtMjg2IDE0M2gtNTQ2cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnYzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoNDIwbDQyIDEyOGgtNjg2cS0xMDAgMCAtMTczLjUgNjcuNXQtODEuNSAxNjYuNXEtNjUgNzkgLTY1IDE4MnYzMgpxMCA4MCA1NiAxMzZ0MTM2IDU2aDk1OXpNMTkyMCAtNjR2MzU1cTAgMTU3IC05MyAyODRsLTU3MyA3ODFxLTM5IDUyIC0xMDMgNTJoLTk1OXEtMjYgMCAtNDUgLTE5dC0xOSAtNDVxMCAtMzIgMS41IC00OS41dDkuNSAtNDAuNXQyNSAtNDNxMTAgMzEgMzUuNSA1MHQ1Ni41IDE5aDgzMnYtMzJoLTgzMnEtMjYgMCAtNDUgLTE5dC0xOSAtNDVxMCAtNDQgMyAtNThxOCAtNDQgNDQgLTczdDgxIC0yOWg2NDBoOTFxNDAgMCA2OCAtMjh0MjggLTY4CnEwIC0xNSAtNSAtMzBsLTY0IC0xOTJxLTEwIC0yOSAtMzUgLTQ3LjV0LTU2IC0xOC41aC00NDNxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTMycTAgLTI2IDE5IC00NXQ0NSAtMTloNTYxcTE2IDAgMjkgLTdsMzE3IC0xNThxMjQgLTEzIDM4LjUgLTM2dDE0LjUgLTUwdi0xOTdxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgzODRxMjYgMCA0NSAxOXQxOSA0NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2NCIgdW5pY29kZT0iJiN4ZjI1OTsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTQ1OSAtMjU2cS03NyAwIC0xMzcuNSA0Ny41dC03OS41IDEyMi41bC0xMDEgNDAxcS0xMyA1NyAtMTMgMTA4cTAgNDUgLTUgNjdsLTExNiA0NzdxLTcgMjcgLTcgNTdxMCA5MyA2MiAxNjF0MTU1IDc4cTE3IDg1IDgyLjUgMTM5dDE1Mi41IDU0cTgzIDAgMTQ4IC01MS41dDg1IC0xMzIuNWw4MyAtMzQ4bDEwMyA0MjhxMjAgODEgODUgMTMyLjV0MTQ4IDUxLjVxODkgMCAxNTUuNSAtNTcuNXQ4MC41IC0xNDQuNXE5MiAtMTAgMTUyIC03OQp0NjAgLTE2MnEwIC0yNCAtNyAtNTlsLTEyMyAtNTEycTEwIDcgMzcuNSAyOC41dDM4LjUgMjkuNXQzNSAyM3Q0MSAyMC41dDQxLjUgMTF0NDkuNSA1LjVxMTA1IDAgMTgwIC03NHQ3NSAtMTc5cTAgLTYyIC0yOC41IC0xMTh0LTc4LjUgLTk0bC01MDcgLTM4MHEtNjggLTUxIC0xNTMgLTUxaC02OTR6TTExMDQgMTQwOHEtMzggMCAtNjguNSAtMjR0LTM5LjUgLTYybC0xNjQgLTY4MmgtMTI3bC0xNDUgNjAycS05IDM4IC0zOS41IDYydC02OC41IDI0CnEtNDggMCAtODAgLTMzdC0zMiAtODBxMCAtMTUgMyAtMjhsMTMyIC01NDdoLTI2bC05OSA0MDhxLTkgMzcgLTQwIDYyLjV0LTY5IDI1LjVxLTQ3IDAgLTgwIC0zM3QtMzMgLTc5cTAgLTE0IDMgLTI2bDExNiAtNDc4cTcgLTI4IDkgLTg2dDEwIC04OGwxMDAgLTQwMXE4IC0zMiAzNCAtNTIuNXQ1OSAtMjAuNWg2OTRxNDIgMCA3NiAyNmw1MDcgMzc5cTU2IDQzIDU2IDExMHEwIDUyIC0zNy41IDg4LjV0LTg5LjUgMzYuNXEtNDMgMCAtNzcgLTI2CmwtMzA3IC0yMzB2MjI3cTAgNCAzMiAxMzh0NjggMjgydDM5IDE2MXE0IDE4IDQgMjlxMCA0NyAtMzIgODF0LTc5IDM0cS0zOSAwIC02OS41IC0yNHQtMzkuNSAtNjJsLTExNiAtNDgyaC0yNmwxNTAgNjI0cTMgMTQgMyAyOHEwIDQ4IC0zMS41IDgydC03OS41IDM0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY1IiB1bmljb2RlPSImI3hmMjVhOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNjQwIDE0MDhxLTUzIDAgLTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV2LTUxMnYtMzg0bC0xNTEgMjAycS00MSA1NCAtMTA3IDU0cS01MiAwIC04OSAtMzh0LTM3IC05MHEwIC00MyAyNiAtNzdsMzg0IC01MTJxMzggLTUxIDEwMiAtNTFoNzE4cTIyIDAgMzkuNSAxMy41dDIyLjUgMzQuNWw5MiAzNjhxMjQgOTYgMjQgMTk0djIxN3EwIDQxIC0yOCA3MXQtNjggMzB0LTY4IC0yOHQtMjggLTY4aC0zMnY2MXEwIDQ4IC0zMiA4MS41dC04MCAzMy41CnEtNDYgMCAtNzkgLTMzdC0zMyAtNzl2LTY0aC0zMnY5MHEwIDU1IC0zNyA5NC41dC05MSAzOS41cS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41di05NmgtMzJ2NTcwcTAgNTUgLTM3IDk0LjV0LTkxIDM5LjV6TTY0MCAxNTM2cTEwNyAwIDE4MS41IC03Ny41dDc0LjUgLTE4NC41di0yMjBxMjIgMiAzMiAycTk5IDAgMTczIC02OXE0NyAyMSA5OSAyMXExMTMgMCAxODQgLTg3cTI3IDcgNTYgN3E5NCAwIDE1OSAtNjcuNXQ2NSAtMTYxLjUKdi0yMTdxMCAtMTE2IC0yOCAtMjI1bC05MiAtMzY4cS0xNiAtNjQgLTY4IC0xMDQuNXQtMTE4IC00MC41aC03MThxLTYwIDAgLTExNC41IDI3LjV0LTkwLjUgNzQuNWwtMzg0IDUxMnEtNTEgNjggLTUxIDE1NHEwIDEwNSA3NC41IDE4MC41dDE3OS41IDc1LjVxNzEgMCAxMzAgLTM1djU0N3EwIDEwNiA3NSAxODF0MTgxIDc1ek03NjggMTI4djM4NGgtMzJ2LTM4NGgzMnpNMTAyNCAxMjh2Mzg0aC0zMnYtMzg0aDMyek0xMjgwIDEyOHYzODRoLTMyCnYtMzg0aDMyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY2IiB1bmljb2RlPSImI3hmMjViOyIgCmQ9Ik0xMjg4IDg4OXE2MCAwIDEwNyAtMjNxMTQxIC02MyAxNDEgLTIyNnYtMTc3cTAgLTk0IC0yMyAtMTg2bC04NSAtMzM5cS0yMSAtODYgLTkwLjUgLTE0MHQtMTU3LjUgLTU0aC02NjhxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXY0MDFsLTIzOSA2MjhxLTE3IDQ1IC0xNyA5MXEwIDEwNiA3NSAxODF0MTgxIDc1cTgwIDAgMTQ1LjUgLTQ1LjV0OTMuNSAtMTE5LjVsMTcgLTQ0djExM3EwIDEwNiA3NSAxODF0MTgxIDc1dDE4MSAtNzV0NzUgLTE4MQp2LTI2MXEyNyA1IDQ4IDVxNjkgMCAxMjcuNSAtMzYuNXQ4OC41IC05OC41ek0xMDcyIDg5NnEtMzMgMCAtNjAuNSAtMTh0LTQxLjUgLTQ4bC03NCAtMTYzbC03MSAtMTU1aDU1cTUwIDAgOTAgLTMxLjV0NTAgLTgwLjVsMTU0IDMzOHExMCAyMCAxMCA0NnEwIDQ2IC0zMyA3OXQtNzkgMzN6TTEyOTMgNzYxcS0yMiAwIC00MC41IC04dC0yOSAtMTZ0LTIzLjUgLTI5LjV0LTE3IC0zMC41dC0xNyAtMzdsLTEzMiAtMjkwcS0xMCAtMjAgLTEwIC00NgpxMCAtNDYgMzMgLTc5dDc5IC0zM3EzMyAwIDYwLjUgMTh0NDEuNSA0OGwxNjAgMzUycTkgMTggOSAzOHEwIDUwIC0zMiA4MS41dC04MiAzMS41ek0xMjggMTEyMHEwIC0yMiA4IC00NmwyNDggLTY1MHYtNjlsMTAyIDExMXE0MyA0NiAxMDYgNDZoMTk4bDEwNiAyMzN2NTM1cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41di02NDBoLTY0bC0yMDAgNTI2cS0xNCAzNyAtNDcgNTkuNXQtNzMgMjIuNQpxLTUzIDAgLTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV6TTExODAgLTEyOHE0NCAwIDc4LjUgMjd0NDUuNSA3MGw4NSAzMzlxMTkgNzMgMTkgMTU1djkxbC0xNDEgLTMxMHEtMTcgLTM4IC01MyAtNjF0LTc4IC0yM3EtNTMgMCAtOTMuNSAzNC41dC00OC41IDg2LjVxLTQ0IC01NyAtMTE0IC01N2gtMjA4djMyaDIwOHE0NiAwIDgxIDMzdDM1IDc5dC0zMSA3OXQtNzcgMzNoLTI5NnEtNDkgMCAtODIgLTM2bC0xMjYgLTEzNnYtMzA4CnEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjVoNjY4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY3IiB1bmljb2RlPSImI3hmMjVjOyIgaG9yaXotYWR2LXg9IjE5NzMiIApkPSJNODU3IDk5MnYtMTE3cTAgLTEzIC05LjUgLTIydC0yMi41IC05aC0yOTh2LTgxMnEwIC0xMyAtOSAtMjIuNXQtMjIgLTkuNWgtMTM1cS0xMyAwIC0yMi41IDl0LTkuNSAyM3Y4MTJoLTI5N3EtMTMgMCAtMjIuNSA5dC05LjUgMjJ2MTE3cTAgMTQgOSAyM3QyMyA5aDc5M3ExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE4OTUgOTk1bDc3IC05NjFxMSAtMTMgLTggLTI0cS0xMCAtMTAgLTIzIC0xMGgtMTM0cS0xMiAwIC0yMSA4LjUKdC0xMCAyMC41bC00NiA1ODhsLTE4OSAtNDI1cS04IC0xOSAtMjkgLTE5aC0xMjBxLTIwIDAgLTI5IDE5bC0xODggNDI3bC00NSAtNTkwcS0xIC0xMiAtMTAgLTIwLjV0LTIxIC04LjVoLTEzNXEtMTMgMCAtMjMgMTBxLTkgMTAgLTkgMjRsNzggOTYxcTEgMTIgMTAgMjAuNXQyMSA4LjVoMTQycTIwIDAgMjkgLTE5bDIyMCAtNTIwcTEwIC0yNCAyMCAtNTFxMyA3IDkuNSAyNC41dDEwLjUgMjYuNWwyMjEgNTIwcTkgMTkgMjkgMTloMTQxCnExMyAwIDIyIC04LjV0MTAgLTIwLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjgiIHVuaWNvZGU9IiYjeGYyNWQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMDQyIDgzM3EwIDg4IC02MCAxMjFxLTMzIDE4IC0xMTcgMThoLTEyM3YtMjgxaDE2MnE2NiAwIDEwMiAzN3QzNiAxMDV6TTEwOTQgNTQ4bDIwNSAtMzczcTggLTE3IC0xIC0zMXEtOCAtMTYgLTI3IC0xNmgtMTUycS0yMCAwIC0yOCAxN2wtMTk0IDM2NWgtMTU1di0zNTBxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTM0cS0xNCAwIC0yMyA5dC05IDIzdjk2MHEwIDE0IDkgMjN0MjMgOWgyOTRxMTI4IDAgMTkwIC0yNHE4NSAtMzEgMTM0IC0xMDkKdDQ5IC0xODBxMCAtOTIgLTQyLjUgLTE2NS41dC0xMTUuNSAtMTA5LjVxNiAtMTAgOSAtMTZ6TTg5NiAxMzc2cS0xNTAgMCAtMjg2IC01OC41dC0yMzQuNSAtMTU3dC0xNTcgLTIzNC41dC01OC41IC0yODZ0NTguNSAtMjg2dDE1NyAtMjM0LjV0MjM0LjUgLTE1N3QyODYgLTU4LjV0Mjg2IDU4LjV0MjM0LjUgMTU3dDE1NyAyMzQuNXQ1OC41IDI4NnQtNTguNSAyODZ0LTE1NyAyMzQuNXQtMjM0LjUgMTU3dC0yODYgNTguNXpNMTc5MiA2NDAKcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjkiIHVuaWNvZGU9IiYjeGYyNWU7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik02MDUgMzAzcTE1MyAwIDI1NyAxMDRxMTQgMTggMyAzNmwtNDUgODJxLTYgMTMgLTI0IDE3cS0xNiAyIC0yNyAtMTFsLTQgLTNxLTQgLTQgLTExLjUgLTEwdC0xNy41IC0xMy41dC0yMy41IC0xNC41dC0yOC41IC0xM3QtMzMuNSAtOS41dC0zNy41IC0zLjVxLTc2IDAgLTEyNSA1MHQtNDkgMTI3cTAgNzYgNDggMTI1LjV0MTIyIDQ5LjVxMzcgMCA3MS41IC0xNHQ1MC41IC0yOGwxNiAtMTRxMTEgLTExIDI2IC0xMHExNiAyIDI0IDE0bDUzIDc4CnExMyAyMCAtMiAzOXEtMyA0IC0xMSAxMnQtMzAgMjMuNXQtNDguNSAyOHQtNjcuNSAyMi41dC04NiAxMHEtMTQ4IDAgLTI0NiAtOTYuNXQtOTggLTI0MC41cTAgLTE0NiA5NyAtMjQxLjV0MjQ3IC05NS41ek0xMjM1IDMwM3ExNTMgMCAyNTcgMTA0cTE0IDE4IDQgMzZsLTQ1IDgycS04IDE0IC0yNSAxN3EtMTYgMiAtMjcgLTExbC00IC0zcS00IC00IC0xMS41IC0xMHQtMTcuNSAtMTMuNXQtMjMuNSAtMTQuNXQtMjguNSAtMTN0LTMzLjUgLTkuNQp0LTM3LjUgLTMuNXEtNzYgMCAtMTI1IDUwdC00OSAxMjdxMCA3NiA0OCAxMjUuNXQxMjIgNDkuNXEzNyAwIDcxLjUgLTE0dDUwLjUgLTI4bDE2IC0xNHExMSAtMTEgMjYgLTEwcTE2IDIgMjQgMTRsNTMgNzhxMTMgMjAgLTIgMzlxLTMgNCAtMTEgMTJ0LTMwIDIzLjV0LTQ4LjUgMjh0LTY3LjUgMjIuNXQtODYgMTBxLTE0NyAwIC0yNDUuNSAtOTYuNXQtOTguNSAtMjQwLjVxMCAtMTQ2IDk3IC0yNDEuNXQyNDcgLTk1LjV6TTg5NiAxMzc2CnEtMTUwIDAgLTI4NiAtNTguNXQtMjM0LjUgLTE1N3QtMTU3IC0yMzQuNXQtNTguNSAtMjg2dDU4LjUgLTI4NnQxNTcgLTIzNC41dDIzNC41IC0xNTd0Mjg2IC01OC41dDI4NiA1OC41dDIzNC41IDE1N3QxNTcgMjM0LjV0NTguNSAyODZ0LTU4LjUgMjg2dC0xNTcgMjM0LjV0LTIzNC41IDE1N3QtMjg2IDU4LjV6TTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxCnQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImYyNjAiIHVuaWNvZGU9IiYjeGYyNjA7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik03MzYgNzM2bDM4NCAtMzg0bC0zODQgLTM4NGwtNjcyIDY3Mmw2NzIgNjcybDE2OCAtMTY4bC05NiAtOTZsLTcyIDcybC00ODAgLTQ4MGw0ODAgLTQ4MGwxOTMgMTkzbC0yODkgMjg3ek0xMzEyIDEzMTJsNjcyIC02NzJsLTY3MiAtNjcybC0xNjggMTY4bDk2IDk2bDcyIC03Mmw0ODAgNDgwbC00ODAgNDgwbC0xOTMgLTE5M2wyODkgLTI4N2wtOTYgLTk2bC0zODQgMzg0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjYxIiB1bmljb2RlPSImI3hmMjYxOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNzE3IDE4MmwyNzEgMjcxbC0yNzkgMjc5bC04OCAtODhsMTkyIC0xOTFsLTk2IC05NmwtMjc5IDI3OWwyNzkgMjc5bDQwIC00MGw4NyA4N2wtMTI3IDEyOGwtNDU0IC00NTR6TTEwNzUgMTkwbDQ1NCA0NTRsLTQ1NCA0NTRsLTI3MSAtMjcxbDI3OSAtMjc5bDg4IDg4bC0xOTIgMTkxbDk2IDk2bDI3OSAtMjc5bC0yNzkgLTI3OWwtNDAgNDBsLTg3IC04OHpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2IC0xOTEKdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NzIiIHVuaWNvZGU9IiYjeGYyNjI7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik02NTEgNTM5cTAgLTM5IC0yNy41IC02Ni41dC02NS41IC0yNy41cS0zOSAwIC02Ni41IDI3LjV0LTI3LjUgNjYuNXEwIDM4IDI3LjUgNjUuNXQ2Ni41IDI3LjVxMzggMCA2NS41IC0yNy41dDI3LjUgLTY1LjV6TTE4MDUgNTQwcTAgLTM5IC0yNy41IC02Ni41dC02Ni41IC0yNy41dC02Ni41IDI3LjV0LTI3LjUgNjYuNXQyNy41IDY2dDY2LjUgMjd0NjYuNSAtMjd0MjcuNSAtNjZ6TTc2NSA1MzlxMCA3OSAtNTYuNSAxMzZ0LTEzNi41IDU3CnQtMTM2LjUgLTU2LjV0LTU2LjUgLTEzNi41dDU2LjUgLTEzNi41dDEzNi41IC01Ni41dDEzNi41IDU2LjV0NTYuNSAxMzYuNXpNMTkxOCA1NDBxMCA4MCAtNTYuNSAxMzYuNXQtMTM2LjUgNTYuNXEtNzkgMCAtMTM2IC01Ni41dC01NyAtMTM2LjV0NTYuNSAtMTM2LjV0MTM2LjUgLTU2LjV0MTM2LjUgNTYuNXQ1Ni41IDEzNi41ek04NTAgNTM5cTAgLTExNiAtODEuNSAtMTk3LjV0LTE5Ni41IC04MS41cS0xMTYgMCAtMTk3LjUgODJ0LTgxLjUgMTk3CnQ4MiAxOTYuNXQxOTcgODEuNXQxOTYuNSAtODEuNXQ4MS41IC0xOTYuNXpNMjAwNCA1NDBxMCAtMTE1IC04MS41IC0xOTYuNXQtMTk3LjUgLTgxLjVxLTExNSAwIC0xOTYuNSA4MS41dC04MS41IDE5Ni41dDgxLjUgMTk2LjV0MTk2LjUgODEuNXExMTYgMCAxOTcuNSAtODEuNXQ4MS41IC0xOTYuNXpNMTA0MCA1MzdxMCAxOTEgLTEzNS41IDMyNi41dC0zMjYuNSAxMzUuNXEtMTI1IDAgLTIzMSAtNjJ0LTE2OCAtMTY4LjV0LTYyIC0yMzEuNQp0NjIgLTIzMS41dDE2OCAtMTY4LjV0MjMxIC02MnExOTEgMCAzMjYuNSAxMzUuNXQxMzUuNSAzMjYuNXpNMTcwOCAxMTEwcS0yNTQgMTExIC01NTYgMTExcS0zMTkgMCAtNTczIC0xMTBxMTE3IDAgMjIzIC00NS41dDE4Mi41IC0xMjIuNXQxMjIgLTE4M3Q0NS41IC0yMjNxMCAxMTUgNDMuNSAyMTkuNXQxMTggMTgwLjV0MTc3LjUgMTIzdDIxNyA1MHpNMjE4NyA1MzdxMCAxOTEgLTEzNSAzMjYuNXQtMzI2IDEzNS41dC0zMjYuNSAtMTM1LjUKdC0xMzUuNSAtMzI2LjV0MTM1LjUgLTMyNi41dDMyNi41IC0xMzUuNXQzMjYgMTM1LjV0MTM1IDMyNi41ek0xOTIxIDExMDNoMzgzcS00NCAtNTEgLTc1IC0xMTQuNXQtNDAgLTExNC41cTExMCAtMTUxIDExMCAtMzM3cTAgLTE1NiAtNzcgLTI4OHQtMjA5IC0yMDguNXQtMjg3IC03Ni41cS0xMzMgMCAtMjQ5IDU2dC0xOTYgMTU1cS00NyAtNTYgLTEyOSAtMTc5cS0xMSAyMiAtNTMuNSA4Mi41dC03NC41IDk3LjUKcS04MCAtOTkgLTE5Ni41IC0xNTUuNXQtMjQ5LjUgLTU2LjVxLTE1NSAwIC0yODcgNzYuNXQtMjA5IDIwOC41dC03NyAyODhxMCAxODYgMTEwIDMzN3EtOSA1MSAtNDAgMTE0LjV0LTc1IDExNC41aDM2NXExNDkgMTAwIDM1NSAxNTYuNXQ0MzIgNTYuNXEyMjQgMCA0MjEgLTU2dDM0OCAtMTU3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjYzIiB1bmljb2RlPSImI3hmMjYzOyIgaG9yaXotYWR2LXg9IjEyODAiIApkPSJNNjQwIDYyOXEtMTg4IDAgLTMyMSAxMzN0LTEzMyAzMjBxMCAxODggMTMzIDMyMXQzMjEgMTMzdDMyMSAtMTMzdDEzMyAtMzIxcTAgLTE4NyAtMTMzIC0zMjB0LTMyMSAtMTMzek02NDAgMTMwNnEtOTIgMCAtMTU3LjUgLTY1LjV0LTY1LjUgLTE1OC41cTAgLTkyIDY1LjUgLTE1Ny41dDE1Ny41IC02NS41dDE1Ny41IDY1LjV0NjUuNSAxNTcuNXEwIDkzIC02NS41IDE1OC41dC0xNTcuNSA2NS41ek0xMTYzIDU3NHExMyAtMjcgMTUgLTQ5LjUKdC00LjUgLTQwLjV0LTI2LjUgLTM4LjV0LTQyLjUgLTM3dC02MS41IC00MS41cS0xMTUgLTczIC0zMTUgLTk0bDczIC03MmwyNjcgLTI2N3EzMCAtMzEgMzAgLTc0dC0zMCAtNzNsLTEyIC0xM3EtMzEgLTMwIC03NCAtMzB0LTc0IDMwcS02NyA2OCAtMjY3IDI2OGwtMjY3IC0yNjhxLTMxIC0zMCAtNzQgLTMwdC03MyAzMGwtMTIgMTNxLTMxIDMwIC0zMSA3M3QzMSA3NGwyNjcgMjY3bDcyIDcycS0yMDMgMjEgLTMxNyA5NApxLTM5IDI1IC02MS41IDQxLjV0LTQyLjUgMzd0LTI2LjUgMzguNXQtNC41IDQwLjV0MTUgNDkuNXExMCAyMCAyOCAzNXQ0MiAyMnQ1NiAtMnQ2NSAtMzVxNSAtNCAxNSAtMTF0NDMgLTI0LjV0NjkgLTMwLjV0OTIgLTI0dDExMyAtMTFxOTEgMCAxNzQgMjUuNXQxMjAgNTAuNWwzOCAyNXEzMyAyNiA2NSAzNXQ1NiAydDQyIC0yMnQyOCAtMzV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NzQiIHVuaWNvZGU9IiYjeGYyNjQ7IiAKZD0iTTkyNyA5NTZxMCAtNjYgLTQ2LjUgLTExMi41dC0xMTIuNSAtNDYuNXQtMTEyLjUgNDYuNXQtNDYuNSAxMTIuNXQ0Ni41IDExMi41dDExMi41IDQ2LjV0MTEyLjUgLTQ2LjV0NDYuNSAtMTEyLjV6TTExNDEgNTkzcS0xMCAyMCAtMjggMzJ0LTQ3LjUgOS41dC02MC41IC0yNy41cS0xMCAtOCAtMjkgLTIwdC04MSAtMzJ0LTEyNyAtMjB0LTEyNCAxOHQtODYgMzZsLTI3IDE4cS0zMSAyNSAtNjAuNSAyNy41dC00Ny41IC05LjV0LTI4IC0zMgpxLTIyIC00NSAtMiAtNzQuNXQ4NyAtNzMuNXE4MyAtNTMgMjI2IC02N2wtNTEgLTUycS0xNDIgLTE0MiAtMTkxIC0xOTBxLTIyIC0yMiAtMjIgLTUyLjV0MjIgLTUyLjVsOSAtOXEyMiAtMjIgNTIuNSAtMjJ0NTIuNSAyMmwxOTEgMTkxcTExNCAtMTE1IDE5MSAtMTkxcTIyIC0yMiA1Mi41IC0yMnQ1Mi41IDIybDkgOXEyMiAyMiAyMiA1Mi41dC0yMiA1Mi41bC0xOTEgMTkwbC01MiA1MnExNDEgMTQgMjI1IDY3cTY3IDQ0IDg3IDczLjV0LTIgNzQuNQp6TTEwOTIgOTU2cTAgMTM0IC05NSAyMjl0LTIyOSA5NXQtMjI5IC05NXQtOTUgLTIyOXQ5NSAtMjI5dDIyOSAtOTV0MjI5IDk1dDk1IDIyOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NzUiIHVuaWNvZGU9IiYjeGYyNjU7IiBob3Jpei1hZHYteD0iMTcyMCIgCmQ9Ik0xNTY1IDE0MDhxNjUgMCAxMTAgLTQ1LjV0NDUgLTExMC41di01MTlxMCAtMTc2IC02OCAtMzM2dC0xODIuNSAtMjc1dC0yNzQgLTE4Mi41dC0zMzQuNSAtNjcuNXEtMTc2IDAgLTMzNS41IDY3LjV0LTI3NC41IDE4Mi41dC0xODMgMjc1dC02OCAzMzZ2NTE5cTAgNjQgNDYgMTEwdDExMCA0NmgxNDA5ek04NjEgMzQ0cTQ3IDAgODIgMzNsNDA0IDM4OHEzNyAzNSAzNyA4NXEwIDQ5IC0zNC41IDgzLjV0LTgzLjUgMzQuNXEtNDcgMCAtODIgLTMzCmwtMzIzIC0zMTBsLTMyMyAzMTBxLTM1IDMzIC04MSAzM3EtNDkgMCAtODMuNSAtMzQuNXQtMzQuNSAtODMuNXEwIC01MSAzNiAtODVsNDA1IC0zODhxMzMgLTMzIDgxIC0zM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3NiIgdW5pY29kZT0iJiN4ZjI2NjsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTE0OTQgLTEwM2wtMjk1IDY5NXEtMjUgLTQ5IC0xNTguNSAtMzA1LjV0LTE5OC41IC0zODkuNXEtMSAtMSAtMjcuNSAtMC41dC0yNi41IDEuNXEtODIgMTkzIC0yNTUuNSA1ODd0LTI1OS41IDU5NnEtMjEgNTAgLTY2LjUgMTA3LjV0LTEwMy41IDEwMC41dC0xMDIgNDNxMCA1IC0wLjUgMjR0LTAuNSAyN2g1ODN2LTUwcS0zOSAtMiAtNzkuNSAtMTZ0LTY2LjUgLTQzdC0xMCAtNjRxMjYgLTU5IDIxNi41IC00OTl0MjM1LjUgLTU0MApxMzEgNjEgMTQwIDI2Ni41dDEzMSAyNDcuNXEtMTkgMzkgLTEyNiAyODF0LTEzNiAyOTVxLTM4IDY5IC0yMDEgNzF2NTBsNTEzIC0xdi00N3EtNjAgLTIgLTkzLjUgLTI1dC0xMi41IC02OXEzMyAtNzAgODcgLTE4OS41dDg2IC0xODcuNXExMTAgMjE0IDE3MyAzNjNxMjQgNTUgLTEwIDc5LjV0LTEyOSAyNi41cTEgNyAxIDI1djI0cTY0IDAgMTcwLjUgMC41dDE4MCAxdDkyLjUgMC41di00OXEtNjIgLTIgLTExOSAtMzN0LTkwIC04MQpsLTIxMyAtNDQycTEzIC0zMyAxMjcuNSAtMjkwdDEyMS41IC0yNzRsNDQxIDEwMTdxLTE0IDM4IC00OS41IDYyLjV0LTY1IDMxLjV0LTU1LjUgOHY1MGw0NjAgLTRsMSAtMmwtMSAtNDRxLTEzOSAtNCAtMjAxIC0xNDVxLTUyNiAtMTIxNiAtNTU5IC0xMjkxaC00OXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3NyIgdW5pY29kZT0iJiN4ZjI2NzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTk0OSA2NDNxMCAtMjYgLTE2LjUgLTQ1dC00MS41IC0xOXEtMjYgMCAtNDUgMTYuNXQtMTkgNDEuNXEwIDI2IDE3IDQ1dDQyIDE5dDQ0IC0xNi41dDE5IC00MS41ek05NjQgNTg1bDM1MCA1ODFxLTkgLTggLTY3LjUgLTYyLjV0LTEyNS41IC0xMTYuNXQtMTM2LjUgLTEyN3QtMTE3IC0xMTAuNXQtNTAuNSAtNTEuNWwtMzQ5IC01ODBxNyA3IDY3IDYydDEyNiAxMTYuNXQxMzYgMTI3dDExNyAxMTF0NTAgNTAuNXpNMTYxMSA2NDAKcTAgLTIwMSAtMTA0IC0zNzFxLTMgMiAtMTcgMTF0LTI2LjUgMTYuNXQtMTYuNSA3LjVxLTEzIDAgLTEzIC0xM3EwIC0xMCA1OSAtNDRxLTc0IC0xMTIgLTE4NC41IC0xOTAuNXQtMjQxLjUgLTExMC41bC0xNiA2N3EtMSAxMCAtMTUgMTBxLTUgMCAtOCAtNS41dC0yIC05LjVsMTYgLTY4cS03MiAtMTUgLTE0NiAtMTVxLTE5OSAwIC0zNzIgMTA1cTEgMiAxMyAyMC41dDIxLjUgMzMuNXQ5LjUgMTlxMCAxMyAtMTMgMTNxLTYgMCAtMTcgLTE0LjUKdC0yMi41IC0zNC41dC0xMy41IC0yM3EtMTEzIDc1IC0xOTIgMTg3LjV0LTExMCAyNDQuNWw2OSAxNXExMCAzIDEwIDE1cTAgNSAtNS41IDh0LTEwLjUgMmwtNjggLTE1cS0xNCA3MiAtMTQgMTM5cTAgMjA2IDEwOSAzNzlxMiAtMSAxOC41IC0xMnQzMCAtMTl0MTcuNSAtOHExMyAwIDEzIDEycTAgNiAtMTIuNSAxNS41dC0zMi41IDIxLjVsLTIwIDEycTc3IDExMiAxODkgMTg5dDI0NCAxMDdsMTUgLTY3cTIgLTEwIDE1IC0xMHE1IDAgOCA1LjUKdDIgMTAuNWwtMTUgNjZxNzEgMTMgMTM0IDEzcTIwNCAwIDM3OSAtMTA5cS0zOSAtNTYgLTM5IC02NXEwIC0xMyAxMiAtMTNxMTEgMCA0OCA2NHExMTEgLTc1IDE4Ny41IC0xODZ0MTA3LjUgLTI0MWwtNTYgLTEycS0xMCAtMiAtMTAgLTE2cTAgLTUgNS41IC04dDkuNSAtMmw1NyAxM3ExNCAtNzIgMTQgLTE0MHpNMTY5NiA2NDBxMCAxNjMgLTYzLjUgMzExdC0xNzAuNSAyNTV0LTI1NSAxNzAuNXQtMzExIDYzLjV0LTMxMSAtNjMuNQp0LTI1NSAtMTcwLjV0LTE3MC41IC0yNTV0LTYzLjUgLTMxMXQ2My41IC0zMTF0MTcwLjUgLTI1NXQyNTUgLTE3MC41dDMxMSAtNjMuNXQzMTEgNjMuNXQyNTUgMTcwLjV0MTcwLjUgMjU1dDYzLjUgMzExek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MQp0MTkxIC0yODZ0NzEgLTM0OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3OCIgdW5pY29kZT0iJiN4ZjI2ODsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTg5MyAxNTM2cTI0MCAyIDQ1MSAtMTIwcTIzMiAtMTM0IDM1MiAtMzcybC03NDIgMzlxLTE2MCA5IC0yOTQgLTc0LjV0LTE4NSAtMjI5LjVsLTI3NiA0MjRxMTI4IDE1OSAzMTEgMjQ1LjV0MzgzIDg3LjV6TTE0NiAxMTMxbDMzNyAtNjYzcTcyIC0xNDMgMjExIC0yMTd0MjkzIC00NWwtMjMwIC00NTFxLTIxMiAzMyAtMzg1IDE1Ny41dC0yNzIuNSAzMTZ0LTk5LjUgNDExLjVxMCAyNjcgMTQ2IDQ5MXpNMTczMiA5NjIKcTU4IC0xNTAgNTkuNSAtMzEwLjV0LTQ4LjUgLTMwNnQtMTUzIC0yNzJ0LTI0NiAtMjA5LjVxLTIzMCAtMTMzIC00OTggLTExOWw0MDUgNjIzcTg4IDEzMSA4Mi41IDI5MC41dC0xMDYuNSAyNzcuNXpNODk2IDk0MnExMjUgMCAyMTMuNSAtODguNXQ4OC41IC0yMTMuNXQtODguNSAtMjEzLjV0LTIxMy41IC04OC41dC0yMTMuNSA4OC41dC04OC41IDIxMy41dDg4LjUgMjEzLjV0MjEzLjUgODguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3OSIgdW5pY29kZT0iJiN4ZjI2OTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTkwMyAtMjU2cS0yODMgMCAtNTA0LjUgMTUwLjV0LTMyOS41IDM5OC41cS01OCAxMzEgLTY3IDMwMXQyNiAzMzIuNXQxMTEgMzEydDE3OSAyNDIuNWwtMTEgLTI4MXExMSAxNCA2OCAxNS41dDcwIC0xNS41cTQyIDgxIDE2MC41IDEzOHQyMzQuNSA1OXEtNTQgLTQ1IC0xMTkuNSAtMTQ4LjV0LTU4LjUgLTE2My41cTI1IC04IDYyLjUgLTEzLjV0NjMgLTcuNXQ2OCAtNHQ1MC41IC0zcTE1IC01IDkuNSAtNDUuNXQtMzAuNSAtNzUuNQpxLTUgLTcgLTE2LjUgLTE4LjV0LTU2LjUgLTM1LjV0LTEwMSAtMzRsMTUgLTE4OWwtMTM5IDY3cS0xOCAtNDMgLTcuNSAtODEuNXQzNiAtNjYuNXQ2NS41IC00MS41dDgxIC02LjVxNTEgOSA5OCAzNC41dDgzLjUgNDV0NzMuNSAxNy41cTYxIC00IDg5LjUgLTMzdDE5LjUgLTY1cS0xIC0yIC0yLjUgLTUuNXQtOC41IC0xMi41dC0xOCAtMTUuNXQtMzEuNSAtMTAuNXQtNDYuNSAtMXEtNjAgLTk1IC0xNDQuNSAtMTM1LjV0LTIwOS41IC0yOS41CnE3NCAtNjEgMTYyLjUgLTgyLjV0MTY4LjUgLTZ0MTU0LjUgNTJ0MTI4IDg3LjV0ODAuNSAxMDRxNDMgOTEgMzkgMTkyLjV0LTM3LjUgMTg4LjV0LTc4LjUgMTI1cTg3IC0zOCAxMzcgLTc5LjV0NzcgLTExMi41cTE1IDE3MCAtNTcuNSAzNDN0LTIwOS41IDI4NHEyNjUgLTc3IDQxMiAtMjc5LjV0MTUxIC01MTcuNXEyIC0xMjcgLTQwLjUgLTI1NXQtMTIzLjUgLTIzOHQtMTg5IC0xOTZ0LTI0Ny41IC0xMzUuNXQtMjg4LjUgLTQ5LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODAiIHVuaWNvZGU9IiYjeGYyNmE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNDkzIDEzMDhxLTE2NSAxMTAgLTM1OSAxMTBxLTE1NSAwIC0yOTMgLTczdC0yNDAgLTIwMHEtNzUgLTkzIC0xMTkuNSAtMjE4dC00OC41IC0yNjZ2LTQycTQgLTE0MSA0OC41IC0yNjZ0MTE5LjUgLTIxOHExMDIgLTEyNyAyNDAgLTIwMHQyOTMgLTczcTE5NCAwIDM1OSAxMTBxLTEyMSAtMTA4IC0yNzQuNSAtMTY4dC0zMjIuNSAtNjBxLTI5IDAgLTQzIDFxLTE3NSA4IC0zMzMgODJ0LTI3MiAxOTN0LTE4MSAyODF0LTY3IDMzOQpxMCAxODIgNzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzFoM3ExNjggLTEgMzIwLjUgLTYwLjV0MjczLjUgLTE2Ny41ek0xNzkyIDY0MHEwIC0xOTIgLTc3IC0zNjIuNXQtMjEzIC0yOTYuNXEtMTA0IC02MyAtMjIyIC02M3EtMTM3IDAgLTI1NSA4NHExNTQgNTYgMjUzLjUgMjMzdDk5LjUgNDA1cTAgMjI3IC05OSA0MDR0LTI1MyAyMzRxMTE5IDgzIDI1NCA4M3ExMTkgMCAyMjYgLTY1cTEzNSAtMTI1IDIxMC41IC0yOTV0NzUuNSAtMzYxegoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU4MSIgdW5pY29kZT0iJiN4ZjI2YjsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgNTk5cTAgLTU2IC03IC0xMDRoLTExNTFxMCAtMTQ2IDEwOS41IC0yNDQuNXQyNTcuNSAtOTguNXE5OSAwIDE4NS41IDQ2LjV0MTM2LjUgMTMwLjVoNDIzcS01NiAtMTU5IC0xNzAuNSAtMjgxdC0yNjcuNSAtMTg4LjV0LTMyMSAtNjYuNXEtMTg3IDAgLTM1NiA4M3EtMjI4IC0xMTYgLTM5NCAtMTE2cS0yMzcgMCAtMjM3IDI2M3EwIDExNSA0NSAyNzVxMTcgNjAgMTA5IDIyOXExOTkgMzYwIDQ3NSA2MDYKcS0xODQgLTc5IC00MjcgLTM1NHE2MyAyNzQgMjgzLjUgNDQ5LjV0NTAxLjUgMTc1LjVxMzAgMCA0NSAtMXEyNTUgMTE3IDQzMyAxMTdxNjQgMCAxMTYgLTEzdDk0LjUgLTQwLjV0NjYuNSAtNzYuNXQyNCAtMTE1cTAgLTExNiAtNzUgLTI4NnExMDEgLTE4MiAxMDEgLTM5MHpNMTcyMiAxMjM5cTAgODMgLTUzIDEzMnQtMTM3IDQ5cS0xMDggMCAtMjU0IC03MHExMjEgLTQ3IDIyMi41IC0xMzEuNXQxNzAuNSAtMTk1LjVxNTEgMTM1IDUxIDIxNnoKTTEyOCAycTAgLTg2IDQ4LjUgLTEzMi41dDEzNC41IC00Ni41cTExNSAwIDI2NiA4M3EtMTIyIDcyIC0yMTMuNSAxODN0LTEzNy41IDI0NXEtOTggLTIwNSAtOTggLTMzMnpNNjMyIDcxNWg3MjhxLTUgMTQyIC0xMTMgMjM3dC0yNTEgOTVxLTE0NCAwIC0yNTEuNSAtOTV0LTExMi41IC0yMzd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODIiIHVuaWNvZGU9IiYjeGYyNmM7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xNzkyIDI4OHY5NjBxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC0xNjAwcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtOTYwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTYwMHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xOTIwIDEyNDh2LTk2MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtNzM2di0xMjhoMzUycTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTgzMnEtMTQgMCAtMjMgOXQtOSAyMwp2NjRxMCAxNCA5IDIzdDIzIDloMzUydjEyOGgtNzM2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE2MDBxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODMiIHVuaWNvZGU9IiYjeGYyNmQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMzggMTQwOGgxOTdxLTcwIC02NCAtMTI2IC0xNDlxLTM2IC01NiAtNTkgLTExNXQtMzAgLTEyNS41dC04LjUgLTEyMHQxMC41IC0xMzJ0MjEgLTEyNnQyOCAtMTM2LjVxNCAtMTkgNiAtMjhxNTEgLTIzOCA4MSAtMzI5cTU3IC0xNzEgMTUyIC0yNzVoLTI3MnEtNDggMCAtODIgMzR0LTM0IDgydjEzMDRxMCA0OCAzNCA4MnQ4MiAzNHpNMTM0NiAxNDA4aDMwOHE0OCAwIDgyIC0zNHQzNCAtODJ2LTEzMDRxMCAtNDggLTM0IC04MnQtODIgLTM0CmgtMTc4cTIxMiAyMTAgMTk2IDU2NWwtNDY5IC0xMDFxLTIgLTQ1IC0xMiAtODJ0LTMxIC03MnQtNTkuNSAtNTkuNXQtOTMuNSAtMzYuNXEtMTIzIC0yNiAtMTk5IDQwcS0zMiAyNyAtNTMgNjF0LTUxLjUgMTI5dC02NC41IDI1OHEtMzUgMTYzIC00NS41IDI2M3QtNS41IDEzOXQyMyA3N3EyMCA0MSA2Mi41IDczdDEwMi41IDQ1cTQ1IDEyIDgzLjUgNi41dDY3IC0xN3Q1NCAtMzV0NDMgLTQ4dDM0LjUgLTU2LjVsNDY4IDEwMApxLTY4IDE3NSAtMTgwIDI4N3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU4NCIgdW5pY29kZT0iJiN4ZjI2ZTsiIApkPSJNMTQwMSAtMTFsLTYgLTZxLTExMyAtMTEzIC0yNTkgLTE3NXEtMTU0IC02NCAtMzE3IC02NHEtMTY1IDAgLTMxNyA2NHEtMTQ4IDYzIC0yNTkgMTc1cS0xMTMgMTEyIC0xNzUgMjU4cS00MiAxMDMgLTU0IDE4OXEtNCAyOCA0OCAzNnE1MSA4IDU2IC0yMHExIC0xIDEgLTRxMTggLTkwIDQ2IC0xNTlxNTAgLTEyNCAxNTIgLTIyNnE5OCAtOTggMjI2IC0xNTJxMTMyIC01NiAyNzYgLTU2cTE0MyAwIDI3NiA1NnExMjggNTUgMjI1IDE1Mmw2IDYKcTEwIDEwIDI1IDZxMTIgLTMgMzMgLTIycTM2IC0zNyAxNyAtNTh6TTkyOSA2MDRsLTY2IC02Nmw2MyAtNjNxMjEgLTIxIC03IC00OXEtMTcgLTE3IC0zMiAtMTdxLTEwIDAgLTE5IDEwbC02MiA2MWwtNjYgLTY2cS01IC01IC0xNSAtNXEtMTUgMCAtMzEgMTZsLTIgMnEtMTggMTUgLTE4IDI5cTAgNyA4IDE3bDY2IDY1bC02NiA2NnEtMTYgMTYgMTQgNDVxMTggMTggMzEgMThxNiAwIDEzIC01bDY1IC02Nmw2NSA2NXExOCAxNyA0OCAtMTMKcTI3IC0yNyAxMSAtNDR6TTE0MDAgNTQ3cTAgLTExOCAtNDYgLTIyOHEtNDUgLTEwNSAtMTI2IC0xODZxLTgwIC04MCAtMTg3IC0xMjZ0LTIyOCAtNDZ0LTIyOCA0NnQtMTg3IDEyNnEtODIgODIgLTEyNSAxODZxLTE1IDMzIC0xNSA0MGgtMXEtOSAyNyA0MyA0NHE1MCAxNiA2MCAtMTJxMzcgLTk5IDk3IC0xNjdoMXYzMzl2MnEzIDEzNiAxMDIgMjMycTEwNSAxMDMgMjUzIDEwM3ExNDcgMCAyNTEgLTEwM3QxMDQgLTI0OQpxMCAtMTQ3IC0xMDQuNSAtMjUxdC0yNTAuNSAtMTA0cS01OCAwIC0xMTIgMTZxLTI4IDExIC0xMyA2MXExNiA1MSA0NCA0M2wxNCAtM3ExNCAtMyAzMyAtNnQzMCAtM3ExMDQgMCAxNzYgNzEuNXQ3MiAxNzQuNXEwIDEwMSAtNzIgMTcxcS03MSA3MSAtMTc1IDcxcS0xMDcgMCAtMTc4IC04MHEtNjQgLTcyIC02NCAtMTYwdi00MTNxMTEwIC02NyAyNDIgLTY3cTk2IDAgMTg1IDM2LjV0MTU2IDEwMy41dDEwMy41IDE1NXQzNi41IDE4MwpxMCAxOTggLTE0MSAzMzlxLTE0MCAxNDAgLTMzOSAxNDBxLTIwMCAwIC0zNDAgLTE0MHEtNTMgLTUzIC03NyAtODdsLTIgLTJxLTggLTExIC0xMyAtMTUuNXQtMjEuNSAtOS41dC0zOC41IDNxLTIxIDUgLTM2LjUgMTYuNXQtMTUuNSAyNi41djY4MHEwIDE1IDEwLjUgMjYuNXQyNy41IDExLjVoODc3cTMwIDAgMzAgLTU1dC0zMCAtNTVoLTgxMXYtNDgzaDFxNDAgNDIgMTAyIDg0dDEwOCA2MXExMDkgNDYgMjMxIDQ2cTEyMSAwIDIyOCAtNDYKdDE4NyAtMTI2cTgxIC04MSAxMjYgLTE4NnE0NiAtMTEyIDQ2IC0yMjl6TTEzNjkgMTEyOHE5IC04IDkgLTE4dC01LjUgLTE4dC0xNi41IC0yMXEtMjYgLTI2IC0zOSAtMjZxLTkgMCAtMTYgN3EtMTA2IDkxIC0yMDcgMTMzcS0xMjggNTYgLTI3NiA1NnEtMTMzIDAgLTI2MiAtNDlxLTI3IC0xMCAtNDUgMzdxLTkgMjUgLTggMzhxMyAxNiAxNiAyMHExMzAgNTcgMjk5IDU3cTE2NCAwIDMxNiAtNjRxMTM3IC01OCAyMzUgLTE1MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU4NSIgdW5pY29kZT0iJiN4ZjI3MDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE1NTEgNjBxMTUgNiAyNiAzdDExIC0xNy41dC0xNSAtMzMuNXEtMTMgLTE2IC00NCAtNDMuNXQtOTUuNSAtNjh0LTE0MSAtNzR0LTE4OCAtNTh0LTIyOS41IC0yNC41cS0xMTkgMCAtMjM4IDMxdC0yMDkgNzYuNXQtMTcyLjUgMTA0dC0xMzIuNSAxMDV0LTg0IDg3LjVxLTggOSAtMTAgMTYuNXQxIDEydDggN3QxMS41IDJ0MTEuNSAtNC41cTE5MiAtMTE3IDMwMCAtMTY2cTM4OSAtMTc2IDc5OSAtOTBxMTkwIDQwIDM5MSAxMzV6Ck0xNzU4IDE3NXExMSAtMTYgMi41IC02OS41dC0yOC41IC0xMDIuNXEtMzQgLTgzIC04NSAtMTI0cS0xNyAtMTQgLTI2IC05dDAgMjRxMjEgNDUgNDQuNSAxMjEuNXQ2LjUgOTguNXEtNSA3IC0xNS41IDExLjV0LTI3IDZ0LTI5LjUgMi41dC0zNSAwdC0zMS41IC0ydC0zMSAtM3QtMjIuNSAtMnEtNiAtMSAtMTMgLTEuNXQtMTEgLTF0LTguNSAtMXQtNyAtMC41aC01LjVoLTQuNXQtMyAwLjV0LTIgMS41bC0xLjUgM3EtNiAxNiA0NyA0MHQxMDMgMzAKcTQ2IDcgMTA4IDF0NzYgLTI0ek0xMzY0IDYxOHEwIC0zMSAxMy41IC02NHQzMiAtNTh0MzcuNSAtNDZ0MzMgLTMybDEzIC0xMWwtMjI3IC0yMjRxLTQwIDM3IC03OSA3NS41dC01OCA1OC41bC0xOSAyMHEtMTEgMTEgLTI1IDMzcS0zOCAtNTkgLTk3LjUgLTEwMi41dC0xMjcuNSAtNjMuNXQtMTQwIC0yM3QtMTM3LjUgMjF0LTExNy41IDY1LjV0LTgzIDExM3QtMzEgMTYyLjVxMCA4NCAyOCAxNTR0NzIgMTE2LjV0MTA2LjUgODN0MTIyLjUgNTcKdDEzMCAzNC41dDExOS41IDE4LjV0OTkuNSA2LjV2MTI3cTAgNjUgLTIxIDk3cS0zNCA1MyAtMTIxIDUzcS02IDAgLTE2LjUgLTF0LTQwLjUgLTEydC01NiAtMjkuNXQtNTYgLTU5LjV0LTQ4IC05NmwtMjk0IDI3cTAgNjAgMjIgMTE5dDY3IDExM3QxMDggOTV0MTUxLjUgNjUuNXQxOTAuNSAyNC41cTEwMCAwIDE4MSAtMjV0MTI5LjUgLTYxLjV0ODEgLTgzdDQ1IC04NnQxMi41IC03My41di01ODl6TTY5MiA1OTdxMCAtODYgNzAgLTEzMwpxNjYgLTQ0IDEzOSAtMjJxODQgMjUgMTE0IDEyM3ExNCA0NSAxNCAxMDF2MTYycS01OSAtMiAtMTExIC0xMnQtMTA2LjUgLTMzLjV0LTg3IC03MXQtMzIuNSAtMTE0LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODYiIHVuaWNvZGU9IiYjeGYyNzE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNTM2IDEyODBxNTIgMCA5MCAtMzh0MzggLTkwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgxMjh6TTExNTIgMTM3NnYtMjg4cTAgLTE0IDkgLTIzdDIzIC05Cmg2NHExNCAwIDIzIDl0OSAyM3YyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNMzg0IDEzNzZ2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3YyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNMTUzNiAtMTI4djEwMjRoLTE0MDh2LTEwMjRoMTQwOHpNODk2IDQ0OGgyMjRxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMjI0CnYtMjI0cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjIyNGgtMjI0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDIyNHYyMjRxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3YtMjI0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTg3IiB1bmljb2RlPSImI3hmMjcyOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTE1MiA0MTZ2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTU3NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg1NzZxMTQgMCAyMyAtOXQ5IC0yM3pNMTI4IC0xMjhoMTQwOHYxMDI0aC0xNDA4di0xMDI0ek01MTIgMTA4OHYyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMjg4cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0xMjgwIDEwODh2Mjg4cTAgMTQgLTkgMjMKdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTE1MnYtMTI4MHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTE0MDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxMjgwcTAgNTIgMzggOTB0OTAgMzhoMTI4djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDd0NDcgLTExM3YtOTZoMzg0djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDcKdDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODgiIHVuaWNvZGU9IiYjeGYyNzM7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMTExIDE1MWwtNDYgLTQ2cS05IC05IC0yMiAtOXQtMjMgOWwtMTg4IDE4OWwtMTg4IC0xODlxLTEwIC05IC0yMyAtOXQtMjIgOWwtNDYgNDZxLTkgOSAtOSAyMnQ5IDIzbDE4OSAxODhsLTE4OSAxODhxLTkgMTAgLTkgMjN0OSAyMmw0NiA0NnE5IDkgMjIgOXQyMyAtOWwxODggLTE4OGwxODggMTg4cTEwIDkgMjMgOXQyMiAtOWw0NiAtNDZxOSAtOSA5IC0yMnQtOSAtMjNsLTE4OCAtMTg4bDE4OCAtMTg4cTkgLTEwIDkgLTIzdC05IC0yMnoKTTEyOCAtMTI4aDE0MDh2MTAyNGgtMTQwOHYtMTAyNHpNNTEyIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTE1MnYtMTI4MApxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0xNDA4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwdDkwIDM4aDEyOHY5NnEwIDY2IDQ3IDExM3QxMTMgNDdoNjRxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDM4NHY5NnEwIDY2IDQ3IDExM3QxMTMgNDdoNjRxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODkiIHVuaWNvZGU9IiYjeGYyNzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMzAzIDU3MmwtNTEyIC01MTJxLTEwIC05IC0yMyAtOXQtMjMgOWwtMjg4IDI4OHEtOSAxMCAtOSAyM3Q5IDIybDQ2IDQ2cTkgOSAyMiA5dDIzIC05bDIyMCAtMjIwbDQ0NCA0NDRxMTAgOSAyMyA5dDIyIC05bDQ2IC00NnE5IC05IDkgLTIydC05IC0yM3pNMTI4IC0xMjhoMTQwOHYxMDI0aC0xNDA4di0xMDI0ek01MTIgMTA4OHYyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMjg4cTAgLTE0IDkgLTIzCnQyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTE1MnYtMTI4MHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTE0MDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxMjgwcTAgNTIgMzggOTB0OTAgMzhoMTI4djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDcKdDQ3IC0xMTN2LTk2aDM4NHY5NnEwIDY2IDQ3IDExM3QxMTMgNDdoNjRxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTAiIHVuaWNvZGU9IiYjeGYyNzU7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik00NDggMTUzNnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTg5MWw1MzYgNDI5cTE3IDE0IDQwIDE0cTI2IDAgNDUgLTE5dDE5IC00NXYtMzc5bDUzNiA0MjlxMTcgMTQgNDAgMTRxMjYgMCA0NSAtMTl0MTkgLTQ1di0xMTUycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djE2NjRxMCAyNiAxOSA0NXQ0NSAxOWgzODR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTEiIHVuaWNvZGU9IiYjeGYyNzY7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik01MTIgNDQ4cTY2IDAgMTI4IDE1di02NTVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY2NTVxNjIgLTE1IDEyOCAtMTV6TTUxMiAxNTM2cTIxMiAwIDM2MiAtMTUwdDE1MCAtMzYydC0xNTAgLTM2MnQtMzYyIC0xNTB0LTM2MiAxNTB0LTE1MCAzNjJ0MTUwIDM2MnQzNjIgMTUwek01MTIgMTMxMnExNCAwIDIzIDl0OSAyM3QtOSAyM3QtMjMgOXEtMTQ2IDAgLTI0OSAtMTAzdC0xMDMgLTI0OQpxMCAtMTQgOSAtMjN0MjMgLTl0MjMgOXQ5IDIzcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5MiIgdW5pY29kZT0iJiN4ZjI3NzsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3NDUgMTIzOXExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTE0MSAtMTQxcS0yOCAtMjggLTY4IC0yOGgtMTM0NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDU3NnY2NHEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTY0aDUxMnE0MCAwIDY4IC0yOHpNNzY4IDMyMGgyNTZ2LTUxMnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djUxMnpNMTYwMCA3NjgKcTI2IDAgNDUgLTE5dDE5IC00NXYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTM0NHEtNDAgMCAtNjggMjhsLTE0MSAxNDFxLTEwIDEwIC0xMCAyM3QxMCAyM2wxNDEgMTQxcTI4IDI4IDY4IDI4aDUxMnYxOTJoMjU2di0xOTJoNTc2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTkzIiB1bmljb2RlPSImI3hmMjc4OyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMjAyMCAxNTI1cTI4IC0yMCAyOCAtNTN2LTE0MDhxMCAtMjAgLTExIC0zNnQtMjkgLTIzbC02NDAgLTI1NnEtMjQgLTExIC00OCAwbC02MTYgMjQ2bC02MTYgLTI0NnEtMTAgLTUgLTI0IC01cS0xOSAwIC0zNiAxMXEtMjggMjAgLTI4IDUzdjE0MDhxMCAyMCAxMSAzNnQyOSAyM2w2NDAgMjU2cTI0IDExIDQ4IDBsNjE2IC0yNDZsNjE2IDI0NnEzMiAxMyA2MCAtNnpNNzM2IDEzOTB2LTEyNzBsNTc2IC0yMzB2MTI3MHpNMTI4IDExNzMKdi0xMjcwbDU0NCAyMTd2MTI3MHpNMTkyMCAxMDd2MTI3MGwtNTQ0IC0yMTd2LTEyNzB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTQiIHVuaWNvZGU9IiYjeGYyNzk7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik01MTIgMTUzNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE0NzJxMCAtMjAgLTE3IC0yOGwtNDgwIC0yNTZxLTcgLTQgLTE1IC00cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTQ3MnEwIDIwIDE3IDI4bDQ4MCAyNTZxNyA0IDE1IDR6TTE3NjAgMTUzNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE0NzJxMCAtMjAgLTE3IC0yOGwtNDgwIC0yNTZxLTcgLTQgLTE1IC00cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTQ3MgpxMCAyMCAxNyAyOGw0ODAgMjU2cTcgNCAxNSA0ek02NDAgMTUzNnE4IDAgMTQgLTNsNTEyIC0yNTZxMTggLTEwIDE4IC0yOXYtMTQ3MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTggMCAtMTQgM2wtNTEyIDI1NnEtMTggMTAgLTE4IDI5djE0NzJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5NSIgdW5pY29kZT0iJiN4ZjI3YTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTY0MCA2NDBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMjQgNjQwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNDA4IDY0MHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNQp0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE3OTIgNjQwcTAgLTE3NCAtMTIwIC0zMjEuNXQtMzI2IC0yMzN0LTQ1MCAtODUuNXEtMTEwIDAgLTIxMSAxOHEtMTczIC0xNzMgLTQzNSAtMjI5cS01MiAtMTAgLTg2IC0xM3EtMTIgLTEgLTIyIDZ0LTEzIDE4cS00IDE1IDIwIDM3cTUgNSAyMy41IDIxLjV0MjUuNSAyMy41dDIzLjUgMjUuNXQyNCAzMS41dDIwLjUgMzcKdDIwIDQ4dDE0LjUgNTcuNXQxMi41IDcyLjVxLTE0NiA5MCAtMjI5LjUgMjE2LjV0LTgzLjUgMjY5LjVxMCAxNzQgMTIwIDMyMS41dDMyNiAyMzN0NDUwIDg1LjV0NDUwIC04NS41dDMyNiAtMjMzdDEyMCAtMzIxLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTYiIHVuaWNvZGU9IiYjeGYyN2I7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik02NDAgNjQwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTAyNCA2NDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xNDA4IDY0MHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNQp0LTkwLjUgMzcuNXQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek04OTYgMTE1MnEtMjA0IDAgLTM4MS41IC02OS41dC0yODIgLTE4Ny41dC0xMDQuNSAtMjU1cTAgLTExMiA3MS41IC0yMTMuNXQyMDEuNSAtMTc1LjVsODcgLTUwbC0yNyAtOTZxLTI0IC05MSAtNzAgLTE3MnExNTIgNjMgMjc1IDE3MWw0MyAzOGw1NyAtNnE2OSAtOCAxMzAgLThxMjA0IDAgMzgxLjUgNjkuNXQyODIgMTg3LjUKdDEwNC41IDI1NXQtMTA0LjUgMjU1dC0yODIgMTg3LjV0LTM4MS41IDY5LjV6TTE3OTIgNjQwcTAgLTE3NCAtMTIwIC0zMjEuNXQtMzI2IC0yMzN0LTQ1MCAtODUuNXEtNzAgMCAtMTQ1IDhxLTE5OCAtMTc1IC00NjAgLTI0MnEtNDkgLTE0IC0xMTQgLTIyaC01cS0xNSAwIC0yNyAxMC41dC0xNiAyNy41djFxLTMgNCAtMC41IDEydDIgMTB0NC41IDkuNWw2IDl0NyA4LjV0OCA5cTcgOCAzMSAzNC41dDM0LjUgMzh0MzEgMzkuNXQzMi41IDUxCnQyNyA1OXQyNiA3NnEtMTU3IDg5IC0yNDcuNSAyMjB0LTkwLjUgMjgxcTAgMTMwIDcxIDI0OC41dDE5MSAyMDQuNXQyODYgMTM2LjV0MzQ4IDUwLjV0MzQ4IC01MC41dDI4NiAtMTM2LjV0MTkxIC0yMDQuNXQ3MSAtMjQ4LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTciIHVuaWNvZGU9IiYjeGYyN2M7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik01MTIgMzQ1bDUxMiAyOTV2LTU5MWwtNTEyIC0yOTZ2NTkyek0wIDY0MHYtNTkxbDUxMiAyOTZ6TTUxMiAxNTI3di01OTFsLTUxMiAtMjk2djU5MXpNNTEyIDkzNmw1MTIgMjk1di01OTF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTgiIHVuaWNvZGU9IiYjeGYyN2Q7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzA5IDEwMThxLTEwIC0yMzYgLTMzMiAtNjUxcS0zMzMgLTQzMSAtNTYyIC00MzFxLTE0MiAwIC0yNDAgMjYzcS00NCAxNjAgLTEzMiA0ODJxLTcyIDI2MiAtMTU3IDI2MnEtMTggMCAtMTI3IC03NmwtNzcgOThxMjQgMjEgMTA4IDk2LjV0MTMwIDExNS41cTE1NiAxMzggMjQxIDE0NnE5NSA5IDE1MyAtNTUuNXQ4MSAtMjAzLjVxNDQgLTI4NyA2NiAtMzczcTU1IC0yNDkgMTIwIC0yNDlxNTEgMCAxNTQgMTYxcTEwMSAxNjEgMTA5IDI0NgpxMTMgMTM5IC0xMDkgMTM5cS01NyAwIC0xMjEgLTI2cTEyMCAzOTMgNDU5IDM4MnEyNTEgLTggMjM2IC0zMjZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9ImYyN2UiIHVuaWNvZGU9IiYjeGYyN2U7IiAKZD0iTTAgMTQwOGgxNTM2di0xNTM2aC0xNTM2djE1MzZ6TTEwODUgMjkzbC0yMjEgNjMxbDIyMSAyOTdoLTYzNGwyMjEgLTI5N2wtMjIxIC02MzFsMzE3IC0zMDR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyODAiIHVuaWNvZGU9IiYjeGYyODA7IiAKZD0iTTAgMTQwOGgxNTM2di0xNTM2aC0xNTM2djE1MzZ6TTkwOCAxMDg4bC0xMiAtMzNsNzUgLTgzbC0zMSAtMTE0bDI1IC0yNWwxMDcgNTdsMTA3IC01N2wyNSAyNWwtMzEgMTE0bDc1IDgzbC0xMiAzM2gtOTVsLTUzIDk2aC0zMmwtNTMgLTk2aC05NXpNNjQxIDkyNXEzMiAwIDQ0LjUgLTE2dDExLjUgLTYzbDE3NCAyMXEwIDU1IC0xNy41IDkyLjV0LTUwLjUgNTZ0LTY5IDI1LjV0LTg1IDdxLTEzMyAwIC0xOTkgLTU3LjV0LTY2IC0xODIuNXYtNzIKaC05NnYtMTI4aDc2cTIwIDAgMjAgLTh2LTM4MnEwIC0xNCAtNSAtMjB0LTE4IC03bC03MyAtN3YtODhoNDQ4djg2bC0xNDkgMTRxLTYgMSAtOC41IDEuNXQtMy41IDIuNXQtMC41IDR0MSA3dDAuNSAxMHYzODdoMTkxbDM4IDEyOGgtMjMxcS02IDAgLTIgNnQ0IDl2ODBxMCAyNyAxLjUgNDAuNXQ3LjUgMjh0MTkuNSAyMHQzNi41IDUuNXpNMTI0OCA5NnY4NmwtNTQgOXEtNyAxIC05LjUgMi41dC0yLjUgM3QxIDcuNXQxIDEydjUyMGgtMjc1CmwtMjMgLTEwMWw4MyAtMjJxMjMgLTcgMjMgLTI3di0zNzBxMCAtMTQgLTYgLTE4LjV0LTIwIC02LjVsLTcwIC05di04NmgzNTJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyODEiIHVuaWNvZGU9IiYjeGYyODE7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzkyIDY5MHEwIC01OCAtMjkuNSAtMTA1LjV0LTc5LjUgLTcyLjVxMTIgLTQ2IDEyIC05NnEwIC0xNTUgLTEwNi41IC0yODd0LTI5MC41IC0yMDguNXQtNDAwIC03Ni41dC0zOTkuNSA3Ni41dC0yOTAgMjA4LjV0LTEwNi41IDI4N3EwIDQ3IDExIDk0cS01MSAyNSAtODIgNzMuNXQtMzEgMTA2LjVxMCA4MiA1OCAxNDAuNXQxNDEgNTguNXE4NSAwIDE0NSAtNjNxMjE4IDE1MiA1MTUgMTYybDExNiA1MjFxMyAxMyAxNSAyMXQyNiA1CmwzNjkgLTgxcTE4IDM3IDU0IDU5LjV0NzkgMjIuNXE2MiAwIDEwNiAtNDMuNXQ0NCAtMTA1LjV0LTQ0IC0xMDZ0LTEwNiAtNDR0LTEwNS41IDQzLjV0LTQzLjUgMTA1LjVsLTMzNCA3NGwtMTA0IC00NzJxMzAwIC05IDUxOSAtMTYwcTU4IDYxIDE0MyA2MXE4MyAwIDE0MSAtNTguNXQ1OCAtMTQwLjV6TTQxOCA0OTFxMCAtNjIgNDMuNSAtMTA2dDEwNS41IC00NHQxMDYgNDR0NDQgMTA2dC00NCAxMDUuNXQtMTA2IDQzLjVxLTYxIDAgLTEwNSAtNDQKdC00NCAtMTA1ek0xMjI4IDEzNnExMSAxMSAxMSAyNnQtMTEgMjZxLTEwIDEwIC0yNSAxMHQtMjYgLTEwcS00MSAtNDIgLTEyMSAtNjJ0LTE2MCAtMjB0LTE2MCAyMHQtMTIxIDYycS0xMSAxMCAtMjYgMTB0LTI1IC0xMHEtMTEgLTEwIC0xMSAtMjUuNXQxMSAtMjYuNXE0MyAtNDMgMTE4LjUgLTY4dDEyMi41IC0yOS41dDkxIC00LjV0OTEgNC41dDEyMi41IDI5LjV0MTE4LjUgNjh6TTEyMjUgMzQxcTYyIDAgMTA1LjUgNDR0NDMuNSAxMDYKcTAgNjEgLTQ0IDEwNXQtMTA1IDQ0cS02MiAwIC0xMDYgLTQzLjV0LTQ0IC0xMDUuNXQ0NCAtMTA2dDEwNiAtNDR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MDIiIHVuaWNvZGU9IiYjeGYyODI7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik02OSA3NDFoMXExNiAxMjYgNTguNSAyNDEuNXQxMTUgMjE3dDE2Ny41IDE3NnQyMjMuNSAxMTcuNXQyNzYuNSA0M3EyMzEgMCA0MTQgLTEwNS41dDI5NCAtMzAzLjVxMTA0IC0xODcgMTA0IC00NDJ2LTE4OGgtMTEyNXExIC0xMTEgNTMuNSAtMTkyLjV0MTM2LjUgLTEyMi41dDE4OS41IC01N3QyMTMgLTN0MjA4IDQ2LjV0MTczLjUgODQuNXYtMzc3cS05MiAtNTUgLTIyOS41IC05MnQtMzEyLjUgLTM4dC0zMTYgNTMKcS0xODkgNzMgLTMxMS41IDI0OXQtMTI0LjUgMzcycS0zIDI0MiAxMTEgNDEydDMyNSAyNjhxLTQ4IC02MCAtNzggLTEyNS41dC00NiAtMTU5LjVoNjM1cTggNzcgLTggMTQwdC00NyAxMDEuNXQtNzAuNSA2Ni41dC04MC41IDQxdC03NSAyMC41dC01NiA4LjVsLTIyIDFxLTEzNSAtNSAtMjU5LjUgLTQ0LjV0LTIyMy41IC0xMDQuNXQtMTc2IC0xNDAuNXQtMTM4IC0xNjMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwMyIgdW5pY29kZT0iJiN4ZjI4MzsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTAgMzJ2NjA4aDIzMDR2LTYwOHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTk4NHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN6TTY0MCAyNTZ2LTEyOGgzODR2MTI4aC0zODR6TTI1NiAyNTZ2LTEyOGgyNTZ2MTI4aC0yNTZ6TTIxNDQgMTQwOHE2NiAwIDExMyAtNDd0NDcgLTExM3YtMjI0aC0yMzA0djIyNHEwIDY2IDQ3IDExM3QxMTMgNDdoMTk4NHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwNCIgdW5pY29kZT0iJiN4ZjI4NDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE1ODQgMjQ2bC0yMTggMTExcS03NCAtMTIwIC0xOTYuNSAtMTg5dC0yNjMuNSAtNjlxLTE0NyAwIC0yNzEgNzJ0LTE5NiAxOTZ0LTcyIDI3MHEwIDExMCA0Mi41IDIwOS41dDExNSAxNzJ0MTcyIDExNXQyMDkuNSA0Mi41cTEzMSAwIDI0Ny41IC02MC41dDE5Mi41IC0xNjguNWwyMTUgMTI1cS0xMTAgMTY5IC0yODYuNSAyNjV0LTM3OC41IDk2cS0xNjEgMCAtMzA4IC02M3QtMjUzIC0xNjl0LTE2OSAtMjUzdC02MyAtMzA4dDYzIC0zMDgKdDE2OSAtMjUzdDI1MyAtMTY5dDMwOCAtNjNxMjEzIDAgMzk3LjUgMTA3dDI5MC41IDI5MnpNMTAzMCA2NDNsNjkzIC0zNTJxLTExNiAtMjUzIC0zMzQuNSAtNDAwdC00OTIuNSAtMTQ3cS0xODIgMCAtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzFxMjYwIDAgNDcwLjUgLTEzMy41dDMzNS41IC0zNjYuNXpNMTU0MyA2NDBoLTM5di0xNjBoLTk2djM1MmgxMzZxMzIgMCA1NC41IC0yMAp0MjguNSAtNDh0MSAtNTZ0LTI3LjUgLTQ4dC01Ny41IC0yMHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjI4NSIgdW5pY29kZT0iJiN4ZjI4NTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE0MjcgODI3bC02MTQgMzg2bDkyIDE1MWg4NTV6TTQwNSA1NjJsLTE4NCAxMTZ2ODU4bDExODMgLTc0M3pNMTQyNCA2OTdsMTQ3IC05NXYtODU4bC01MzIgMzM1ek0xMzg3IDcxOGwtNTAwIC04MDJoLTg1NWwzNTYgNTcxeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMjg2IiB1bmljb2RlPSImI3hmMjg2OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNNjQwIDUyOHYyMjRxMCAxNiAtMTYgMTZoLTk2cS0xNiAwIC0xNiAtMTZ2LTIyNHEwIC0xNiAxNiAtMTZoOTZxMTYgMCAxNiAxNnpNMTE1MiA1Mjh2MjI0cTAgMTYgLTE2IDE2aC05NnEtMTYgMCAtMTYgLTE2di0yMjRxMCAtMTYgMTYgLTE2aDk2cTE2IDAgMTYgMTZ6TTE2NjQgNDk2di03NTJoLTY0MHYzMjBxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTMyMGgtNjQwdjc1MnEwIDE2IDE2IDE2aDk2CnExNiAwIDE2IC0xNnYtMTEyaDEyOHY2MjRxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnYtMTEyaDEyOHYxMTJxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnYtMTEyaDEyOHYxMTJxMCA2IDIuNSA5LjV0OC41IDV0OS41IDJ0MTEuNSAwdDkgLTAuNXYzOTFxLTMyIDE1IC0zMiA1MHEwIDIzIDE2LjUgMzl0MzguNSAxNnQzOC41IC0xNnQxNi41IC0zOXEwIC0zNSAtMzIgLTUwdi0xN3E0NSAxMCA4MyAxMHEyMSAwIDU5LjUgLTcuNXQ1NC41IC03LjUKcTE3IDAgNDcgNy41dDM3IDcuNXExNiAwIDE2IC0xNnYtMjEwcTAgLTE1IC0zNSAtMjEuNXQtNjIgLTYuNXEtMTggMCAtNTQuNSA3LjV0LTU1LjUgNy41cS00MCAwIC05MCAtMTJ2LTEzM3ExIDAgOSAwLjV0MTEuNSAwdDkuNSAtMnQ4LjUgLTV0Mi41IC05LjV2LTExMmgxMjh2MTEycTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ2LTExMmgxMjh2MTEycTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ2LTYyNGgxMjh2MTEycTAgMTYgMTYgMTZoOTYKcTE2IDAgMTYgLTE2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjA3IiB1bmljb2RlPSImI3hmMjg3OyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMjI4OCA3MzFxMTYgLTggMTYgLTI3dC0xNiAtMjdsLTMyMCAtMTkycS04IC01IC0xNiAtNXEtOSAwIC0xNiA0cS0xNiAxMCAtMTYgMjh2MTI4aC04NThxMzcgLTU4IDgzIC0xNjVxMTYgLTM3IDI0LjUgLTU1dDI0IC00OXQyNyAtNDd0MjcgLTM0dDMxLjUgLTI2dDMzIC04aDk2djk2cTAgMTQgOSAyM3QyMyA5aDMyMHExNCAwIDIzIC05dDkgLTIzdi0zMjBxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzIwcS0xNCAwIC0yMyA5dC05IDIzdjk2aC05NgpxLTMyIDAgLTYxIDEwdC01MSAyMy41dC00NSA0MC41dC0zNyA0NnQtMzMuNSA1N3QtMjguNSA1Ny41dC0yOCA2MC41cS0yMyA1MyAtMzcgODEuNXQtMzYgNjV0LTQ0LjUgNTMuNXQtNDYuNSAxN2gtMzYwcS0yMiAtODQgLTkxIC0xMzh0LTE1NyAtNTRxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1cTg4IDAgMTU3IC01NHQ5MSAtMTM4aDEwNHEyNCAwIDQ2LjUgMTd0NDQuNSA1My41dDM2IDY1dDM3IDgxLjVxMTkgNDEgMjggNjAuNQp0MjguNSA1Ny41dDMzLjUgNTd0MzcgNDZ0NDUgNDAuNXQ1MSAyMy41dDYxIDEwaDEwN3EyMSA1NyA3MCA5Mi41dDExMSAzNS41cTgwIDAgMTM2IC01NnQ1NiAtMTM2dC01NiAtMTM2dC0xMzYgLTU2cS02MiAwIC0xMTEgMzUuNXQtNzAgOTIuNWgtMTA3cS0xNyAwIC0zMyAtOHQtMzEuNSAtMjZ0LTI3IC0zNHQtMjcgLTQ3dC0yNCAtNDl0LTI0LjUgLTU1cS00NiAtMTA3IC04MyAtMTY1aDExMTR2MTI4cTAgMTggMTYgMjh0MzIgLTF6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MDgiIHVuaWNvZGU9IiYjeGYyODg7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMTUwIDc3NHEwIC01NiAtMzkuNSAtOTV0LTk1LjUgLTM5aC0yNTN2MjY5aDI1M3E1NiAwIDk1LjUgLTM5LjV0MzkuNSAtOTUuNXpNMTMyOSA3NzRxMCAxMzAgLTkxLjUgMjIydC0yMjIuNSA5MmgtNDMzdi04OTZoMTgwdjI2OWgyNTNxMTMwIDAgMjIyIDkxLjV0OTIgMjIxLjV6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OAp0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjA5IiB1bmljb2RlPSImI3hmMjg5OyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMTY0NSA0MzhxMCA1OSAtMzQgMTA2LjV0LTg3IDY4LjVxLTcgLTQ1IC0yMyAtOTJxLTcgLTI0IC0yNy41IC0zOHQtNDQuNSAtMTRxLTEyIDAgLTI0IDNxLTMxIDEwIC00NSAzOC41dC00IDU4LjVxMjMgNzEgMjMgMTQzcTAgMTIzIC02MSAyMjcuNXQtMTY2IDE2NS41dC0yMjggNjFxLTEzNCAwIC0yNDcgLTczdC0xNjcgLTE5NHExMDggLTI4IDE4OCAtMTA2cTIyIC0yMyAyMiAtNTV0LTIyIC01NHQtNTQgLTIydC01NSAyMgpxLTc1IDc1IC0xODAgNzVxLTEwNiAwIC0xODEgLTc0LjV0LTc1IC0xODAuNXQ3NSAtMTgwLjV0MTgxIC03NC41aDEwNDZxNzkgMCAxMzQuNSA1NS41dDU1LjUgMTMzLjV6TTE3OTggNDM4cTAgLTE0MiAtMTAwLjUgLTI0MnQtMjQyLjUgLTEwMGgtMTA0NnEtMTY5IDAgLTI4OSAxMTkuNXQtMTIwIDI4OC41cTAgMTUzIDEwMCAyNjd0MjQ5IDEzNnE2MiAxODQgMjIxIDI5OHQzNTQgMTE0cTIzNSAwIDQwOC41IC0xNTguNXQxOTYuNSAtMzg5LjUKcTExNiAtMjUgMTkyLjUgLTExOC41dDc2LjUgLTIxNC41ek0yMDQ4IDQzOHEwIC0xNzUgLTk3IC0zMTlxLTIzIC0zMyAtNjQgLTMzcS0yNCAwIC00MyAxM3EtMjYgMTcgLTMyIDQ4LjV0MTIgNTcuNXE3MSAxMDQgNzEgMjMzdC03MSAyMzNxLTE4IDI2IC0xMiA1N3QzMiA0OXQ1Ny41IDExLjV0NDkuNSAtMzIuNXE5NyAtMTQyIDk3IC0zMTh6TTIzMDQgNDM4cTAgLTI0NCAtMTM0IC00NDNxLTIzIC0zNCAtNjQgLTM0cS0yMyAwIC00MiAxMwpxLTI2IDE4IC0zMi41IDQ5dDExLjUgNTdxMTA4IDE2NCAxMDggMzU4cTAgMTk1IC0xMDggMzU3cS0xOCAyNiAtMTEuNSA1Ny41dDMyLjUgNDguNXEyNiAxOCA1NyAxMnQ0OSAtMzNxMTM0IC0xOTggMTM0IC00NDJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MTAiIHVuaWNvZGU9IiYjeGYyOGE7IiAKZD0iTTE1MDAgLTEzcTAgLTg5IC02MyAtMTUyLjV0LTE1MyAtNjMuNXQtMTUzLjUgNjMuNXQtNjMuNSAxNTIuNXEwIDkwIDYzLjUgMTUzLjV0MTUzLjUgNjMuNXQxNTMgLTYzLjV0NjMgLTE1My41ek0xMjY3IDI2OHEtMTE1IC0xNSAtMTkyLjUgLTEwMi41dC03Ny41IC0yMDUuNXEwIC03NCAzMyAtMTM4cS0xNDYgLTc4IC0zNzkgLTc4cS0xMDkgMCAtMjAxIDIxdC0xNTMuNSA1NC41dC0xMTAuNSA3Ni41dC03NiA4NXQtNDQuNSA4Mwp0LTIzLjUgNjYuNXQtNiAzOS41cTAgMTkgNC41IDQyLjV0MTguNSA1NnQzNi41IDU4dDY0IDQzLjV0OTQuNSAxOHQ5NCAtMTcuNXQ2MyAtNDF0MzUuNSAtNTN0MTcuNSAtNDl0NCAtMzMuNXEwIC0zNCAtMjMgLTgxcTI4IC0yNyA4MiAtNDJ0OTMgLTE3bDQwIC0xcTExNSAwIDE5MCA1MXQ3NSAxMzNxMCAyNiAtOSA0OC41dC0zMS41IDQ0LjV0LTQ5LjUgNDF0LTc0IDQ0dC05My41IDQ3LjV0LTExOS41IDU2LjVxLTI4IDEzIC00MyAyMApxLTExNiA1NSAtMTg3IDEwMHQtMTIyLjUgMTAydC03MiAxMjUuNXQtMjAuNSAxNjIuNXEwIDc4IDIwLjUgMTUwdDY2IDEzNy41dDExMi41IDExNHQxNjYuNSA3N3QyMjEuNSAyOC41cTEyMCAwIDIyMCAtMjZ0MTY0LjUgLTY3dDEwOS41IC05NHQ2NCAtMTA1LjV0MTkgLTEwMy41cTAgLTQ2IC0xNSAtODIuNXQtMzYuNSAtNTh0LTQ4LjUgLTM2dC00OSAtMTkuNXQtMzkgLTVoLThoLTMydC0zOSA1dC00NCAxNHQtNDEgMjh0LTM3IDQ2dC0yNCA3MC41CnQtMTAgOTcuNXEtMTUgMTYgLTU5IDI1LjV0LTgxIDEwLjVsLTM3IDFxLTY4IDAgLTExNy41IC0zMXQtNzAuNSAtNzB0LTIxIC03NnEwIC0yNCA1IC00M3QyNCAtNDZ0NTMgLTUxdDk3IC01My41dDE1MCAtNTguNXE3NiAtMjUgMTM4LjUgLTUzLjV0MTA5IC01NS41dDgzIC01OXQ2MC41IC01OS41dDQxIC02Mi41dDI2LjUgLTYydDE0LjUgLTYzLjV0NiAtNjJ0MSAtNjIuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxMSIgdW5pY29kZT0iJiN4ZjI4YjsiIApkPSJNNzA0IDM1MnY1NzZxMCAxNCAtOSAyM3QtMjMgOWgtMjU2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTU3NnEwIC0xNCA5IC0yM3QyMyAtOWgyNTZxMTQgMCAyMyA5dDkgMjN6TTExNTIgMzUydjU3NnEwIDE0IC05IDIzdC0yMyA5aC0yNTZxLTE0IDAgLTIzIC05dC05IC0yM3YtNTc2cTAgLTE0IDkgLTIzdDIzIC05aDI1NnExNCAwIDIzIDl0OSAyM3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDMKdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEyIiB1bmljb2RlPSImI3hmMjhjOyIgCmQ9Ik03NjggMTQwOHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41dC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzek03NjggOTZxMTQ4IDAgMjczIDczdDE5OCAxOTh0NzMgMjczdC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3QtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzMKdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3pNODY0IDMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJ6TTQ4MCAzMjBxLTE0IDAgLTIzIDl0LTkgMjN2NTc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEzIiB1bmljb2RlPSImI3hmMjhkOyIgCmQ9Ik0xMDg4IDM1MnY1NzZxMCAxNCAtOSAyM3QtMjMgOWgtNTc2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTU3NnEwIC0xNCA5IC0yM3QyMyAtOWg1NzZxMTQgMCAyMyA5dDkgMjN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNQp0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxNCIgdW5pY29kZT0iJiN4ZjI4ZTsiIApkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNNzY4IDk2cTE0OCAwIDI3MyA3M3QxOTggMTk4dDczIDI3M3QtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczCnQ3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN6TTQ4MCAzMjBxLTE0IDAgLTIzIDl0LTkgMjN2NTc2cTAgMTQgOSAyM3QyMyA5aDU3NnExNCAwIDIzIC05dDkgLTIzdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNTc2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE1IiB1bmljb2RlPSImI3hmMjkwOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTc1NyAxMjhsMzUgLTMxM3EzIC0yOCAtMTYgLTUwcS0xOSAtMjEgLTQ4IC0yMWgtMTY2NHEtMjkgMCAtNDggMjFxLTE5IDIyIC0xNiA1MGwzNSAzMTNoMTcyMnpNMTY2NCA5NjdsODYgLTc3NWgtMTcwOGw4NiA3NzVxMyAyNCAyMSA0MC41dDQzIDE2LjVoMjU2di0xMjhxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV2MTI4aDM4NHYtMTI4cTAgLTUzIDM3LjUgLTkwLjV0OTAuNSAtMzcuNQp0OTAuNSAzNy41dDM3LjUgOTAuNXYxMjhoMjU2cTI1IDAgNDMgLTE2LjV0MjEgLTQwLjV6TTEyODAgMTE1MnYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI1NnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXYyNTZxMCAxNTkgMTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41dDExMi41IC0yNzEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxNiIgdW5pY29kZT0iJiN4ZjI5MTsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTE5MjAgNzY4cTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41dC0zNy41IC05MC41dC05MC41IC0zNy41aC0xNWwtMTE1IC02NjJxLTggLTQ2IC00NCAtNzZ0LTgyIC0zMGgtMTI4MHEtNDYgMCAtODIgMzB0LTQ0IDc2bC0xMTUgNjYyaC0xNXEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNWgxNzkyek00ODUgLTMycTI2IDIgNDMuNSAyMi41dDE1LjUgNDYuNWwtMzIgNDE2cS0yIDI2IC0yMi41IDQzLjUKdC00Ni41IDE1LjV0LTQzLjUgLTIyLjV0LTE1LjUgLTQ2LjVsMzIgLTQxNnEyIC0yNSAyMC41IC00MnQ0My41IC0xN2g1ek04OTYgMzJ2NDE2cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV2LTQxNnEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xMjgwIDMydjQxNnEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1di00MTZxMCAtMjYgMTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTYzMiAyN2wzMiA0MTYKcTIgMjYgLTE1LjUgNDYuNXQtNDMuNSAyMi41dC00Ni41IC0xNS41dC0yMi41IC00My41bC0zMiAtNDE2cS0yIC0yNiAxNS41IC00Ni41dDQzLjUgLTIyLjVoNXEyNSAwIDQzLjUgMTd0MjAuNSA0MnpNNDc2IDEyNDRsLTkzIC00MTJoLTEzMmwxMDEgNDQxcTE5IDg4IDg5IDE0My41dDE2MCA1NS41aDE2N3EwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDVoMTY3cTkwIDAgMTYwIC01NS41dDg5IC0xNDMuNWwxMDEgLTQ0MQpoLTEzMmwtOTMgNDEycS0xMSA0NCAtNDUuNSA3MnQtNzkuNSAyOGgtMTY3cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMzg0cS0yNiAwIC00NSAxOXQtMTkgNDVoLTE2N3EtNDUgMCAtNzkuNSAtMjh0LTQ1LjUgLTcyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE3IiB1bmljb2RlPSImI3hmMjkyOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNOTkxIDUxMmw2NCAyNTZoLTI1NGwtNjQgLTI1NmgyNTR6TTE3NTkgMTAxNmwtNTYgLTIyNHEtNyAtMjQgLTMxIC0yNGgtMzI3bC02NCAtMjU2aDMxMXExNSAwIDI1IC0xMnExMCAtMTQgNiAtMjhsLTU2IC0yMjRxLTUgLTI0IC0zMSAtMjRoLTMyN2wtODEgLTMyOHEtNyAtMjQgLTMxIC0yNGgtMjI0cS0xNiAwIC0yNiAxMnEtOSAxMiAtNiAyOGw3OCAzMTJoLTI1NGwtODEgLTMyOHEtNyAtMjQgLTMxIC0yNGgtMjI1cS0xNSAwIC0yNSAxMgpxLTkgMTIgLTYgMjhsNzggMzEyaC0zMTFxLTE1IDAgLTI1IDEycS05IDEyIC02IDI4bDU2IDIyNHE3IDI0IDMxIDI0aDMyN2w2NCAyNTZoLTMxMXEtMTUgMCAtMjUgMTJxLTEwIDE0IC02IDI4bDU2IDIyNHE1IDI0IDMxIDI0aDMyN2w4MSAzMjhxNyAyNCAzMiAyNGgyMjRxMTUgMCAyNSAtMTJxOSAtMTIgNiAtMjhsLTc4IC0zMTJoMjU0bDgxIDMyOHE3IDI0IDMyIDI0aDIyNHExNSAwIDI1IC0xMnE5IC0xMiA2IC0yOGwtNzggLTMxMmgzMTEKcTE1IDAgMjUgLTEycTkgLTEyIDYgLTI4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE4IiB1bmljb2RlPSImI3hmMjkzOyIgCmQ9Ik04NDEgNDgzbDE0OCAtMTQ4bC0xNDkgLTE0OXpNODQwIDEwOTRsMTQ5IC0xNDlsLTE0OCAtMTQ4ek03MTAgLTEzMGw0NjQgNDY0bC0zMDYgMzA2bDMwNiAzMDZsLTQ2NCA0NjR2LTYxMWwtMjU1IDI1NWwtOTMgLTkzbDMyMCAtMzIxbC0zMjAgLTMyMWw5MyAtOTNsMjU1IDI1NXYtNjExek0xNDI5IDY0MHEwIC0yMDkgLTMyIC0zNjUuNXQtODcuNSAtMjU3dC0xNDAuNSAtMTYyLjV0LTE4MS41IC04Ni41dC0yMTkuNSAtMjQuNQp0LTIxOS41IDI0LjV0LTE4MS41IDg2LjV0LTE0MC41IDE2Mi41dC04Ny41IDI1N3QtMzIgMzY1LjV0MzIgMzY1LjV0ODcuNSAyNTd0MTQwLjUgMTYyLjV0MTgxLjUgODYuNXQyMTkuNSAyNC41dDIxOS41IC0yNC41dDE4MS41IC04Ni41dDE0MC41IC0xNjIuNXQ4Ny41IC0yNTd0MzIgLTM2NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE5IiB1bmljb2RlPSImI3hmMjk0OyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNNTk2IDExM2wxNzMgMTcybC0xNzMgMTcydi0zNDR6TTU5NiA4MjNsMTczIDE3MmwtMTczIDE3MnYtMzQ0ek02MjggNjQwbDM1NiAtMzU2bC01MzkgLTU0MHY3MTFsLTI5NyAtMjk2bC0xMDggMTA4bDM3MiAzNzNsLTM3MiAzNzNsMTA4IDEwOGwyOTcgLTI5NnY3MTFsNTM5IC01NDB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjAiIHVuaWNvZGU9IiYjeGYyOTU7IiAKZD0iTTEyODAgMjU2cTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTB0MzggLTkwdDkwIC0zOHQ5MCAzOHQzOCA5MHpNNTEyIDEwMjRxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHQzOCAtOTB0OTAgLTM4dDkwIDM4dDM4IDkwek0xNTM2IDI1NnEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41dC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41CnQxMTIuNSAtMjcxLjV6TTE0NDAgMTM0NHEwIC0yMCAtMTMgLTM4bC0xMDU2IC0xNDA4cS0xOSAtMjYgLTUxIC0yNmgtMTYwcS0yNiAwIC00NSAxOXQtMTkgNDVxMCAyMCAxMyAzOGwxMDU2IDE0MDhxMTkgMjYgNTEgMjZoMTYwcTI2IDAgNDUgLTE5dDE5IC00NXpNNzY4IDEwMjRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXQtMjcxLjUgMTEyLjV0LTExMi41IDI3MS41dDExMi41IDI3MS41dDI3MS41IDExMi41CnQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjIxIiB1bmljb2RlPSImI3hmMjk2OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTA0IDgzMGw3OTIgLTEwMTVsLTg2OCA2MzBxLTE4IDEzIC0yNSAzNC41dDAgNDIuNWwxMDEgMzA4djB6TTU2NiA4MzBoNjYwbC0zMzAgLTEwMTV2MHpNMzY4IDE0NDJsMTk4IC02MTJoLTQ2MmwxOTggNjEycTggMjMgMzMgMjN0MzMgLTIzek0xNjg4IDgzMGwxMDEgLTMwOHE3IC0yMSAwIC00Mi41dC0yNSAtMzQuNWwtODY4IC02MzBsNzkyIDEwMTV2MHpNMTY4OCA4MzBoLTQ2MmwxOTggNjEycTggMjMgMzMgMjN0MzMgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjIyIiB1bmljb2RlPSImI3hmMjk3OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMzg0IDcwNGgxNjB2MjI0aC0xNjB2LTIyNHpNMTIyMSAzNzJ2OTJxLTEwNCAtMzYgLTI0MyAtMzhxLTEzNSAtMSAtMjU5LjUgNDYuNXQtMjIwLjUgMTIyLjVsMSAtOTZxODggLTgwIDIxMiAtMTI4LjV0MjcyIC00Ny41cTEyOSAwIDIzOCA0OXpNNjQwIDcwNGg2NDB2MjI0aC02NDB2LTIyNHpNMTc5MiA3MzZxMCAtMTg3IC05OSAtMzUycTg5IC0xMDIgODkgLTIyOXEwIC0xNTcgLTEyOS41IC0yNjh0LTMxMy41IC0xMTEKcS0xMjIgMCAtMjI1IDUyLjV0LTE2MSAxNDAuNXEtMTkgLTEgLTU3IC0xdC01NyAxcS01OCAtODggLTE2MSAtMTQwLjV0LTIyNSAtNTIuNXEtMTg0IDAgLTMxMy41IDExMXQtMTI5LjUgMjY4cTAgMTI3IDg5IDIyOXEtOTkgMTY1IC05OSAzNTJxMCAyMDkgMTIwIDM4NS41dDMyNi41IDI3OS41dDQ0OS41IDEwM3Q0NDkuNSAtMTAzdDMyNi41IC0yNzkuNXQxMjAgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjIzIiB1bmljb2RlPSImI3hmMjk4OyIgCmQ9Ik01MTUgNjI1di0xMjhoLTI1MnYxMjhoMjUyek01MTUgODgwdi0xMjdoLTI1MnYxMjdoMjUyek0xMjczIDM2OXYtMTI4aC0zNDF2MTI4aDM0MXpNMTI3MyA2MjV2LTEyOGgtNjcydjEyOGg2NzJ6TTEyNzMgODgwdi0xMjdoLTY3MnYxMjdoNjcyek0xNDA4IDIwdjEyNDBxMCA4IC02IDE0dC0xNCA2aC0zMmwtMzc4IC0yNTZsLTIxMCAxNzFsLTIxMCAtMTcxbC0zNzggMjU2aC0zMnEtOCAwIC0xNCAtNnQtNiAtMTR2LTEyNDBxMCAtOCA2IC0xNAp0MTQgLTZoMTI0MHE4IDAgMTQgNnQ2IDE0ek01NTMgMTEzMGwxODUgMTUwaC00MDZ6TTk4MyAxMTMwbDIyMSAxNTBoLTQwNnpNMTUzNiAxMjYwdi0xMjQwcTAgLTYyIC00MyAtMTA1dC0xMDUgLTQzaC0xMjQwcS02MiAwIC0xMDUgNDN0LTQzIDEwNXYxMjQwcTAgNjIgNDMgMTA1dDEwNSA0M2gxMjQwcTYyIDAgMTA1IC00M3Q0MyAtMTA1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI0IiB1bmljb2RlPSImI3hmMjk5OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNODk2IDcyMHEtMTA0IDE5NiAtMTYwIDI3OHEtMTM5IDIwMiAtMzQ3IDMxOHEtMzQgMTkgLTcwIDM2cS04OSA0MCAtOTQgMzJ0MzQgLTM4bDM5IC0zMXE2MiAtNDMgMTEyLjUgLTkzLjV0OTQuNSAtMTE2LjV0NzAuNSAtMTEzdDcwLjUgLTEzMXE5IC0xNyAxMyAtMjVxNDQgLTg0IDg0IC0xNTN0OTggLTE1NHQxMTUuNSAtMTUwdDEzMSAtMTIzLjV0MTQ4LjUgLTkwLjVxMTUzIC02NiAxNTQgLTYwcTEgMyAtNDkgMzdxLTUzIDM2IC04MSA1NwpxLTc3IDU4IC0xNzkgMjExdC0xODUgMzEwek01NDkgMTc3cS03NiA2MCAtMTMyLjUgMTI1dC05OCAxNDMuNXQtNzEgMTU0LjV0LTU4LjUgMTg2dC01MiAyMDl0LTYwLjUgMjUydC03Ni41IDI4OXEyNzMgMCA0OTcuNSAtMzZ0Mzc5IC05MnQyNzEgLTE0NC41dDE4NS41IC0xNzIuNXQxMTAgLTE5OC41dDU2IC0xOTkuNXQxMi41IC0xOTguNXQtOS41IC0xNzN0LTIwIC0xNDMuNXQtMTMgLTEwN2wzMjMgLTMyN2gtMTA0bC0yODEgMjg1CnEtMjIgLTIgLTkxLjUgLTE0dC0xMjEuNSAtMTl0LTEzOCAtNnQtMTYwLjUgMTd0LTE2Ny41IDU5dC0xNzkgMTExeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI1IiB1bmljb2RlPSImI3hmMjlhOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTM3NCA4NzlxLTYgMjYgLTI4LjUgMzkuNXQtNDguNSA3LjVxLTI2MSAtNjIgLTQwMSAtNjJ0LTQwMSA2MnEtMjYgNiAtNDguNSAtNy41dC0yOC41IC0zOS41dDcuNSAtNDguNXQzOS41IC0yOC41cTE5NCAtNDYgMzAzIC01OHEtMiAtMTU4IC0xNS41IC0yNjl0LTI2LjUgLTE1NS41dC00MSAtMTE1LjVsLTkgLTIxcS0xMCAtMjUgMSAtNDl0MzYgLTM0cTkgLTQgMjMgLTRxNDQgMCA2MCA0MWw4IDIwcTU0IDEzOSA3MSAyNTloNDIKcTE3IC0xMjAgNzEgLTI1OWw4IC0yMHExNiAtNDEgNjAgLTQxcTE0IDAgMjMgNHEyNSAxMCAzNiAzNHQxIDQ5bC05IDIxcS0yOCA3MSAtNDEgMTE1LjV0LTI2LjUgMTU1LjV0LTE1LjUgMjY5cTEwOSAxMiAzMDMgNThxMjYgNiAzOS41IDI4LjV0Ny41IDQ4LjV6TTEwMjQgMTAyNHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXoKTTE2MDAgNjQwcTAgLTE0MyAtNTUuNSAtMjczLjV0LTE1MCAtMjI1dC0yMjUgLTE1MHQtMjczLjUgLTU1LjV0LTI3My41IDU1LjV0LTIyNSAxNTB0LTE1MCAyMjV0LTU1LjUgMjczLjV0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXpNODk2IDE0MDhxLTE1NiAwIC0yOTggLTYxdC0yNDUgLTE2NHQtMTY0IC0yNDV0LTYxIC0yOTh0NjEgLTI5OAp0MTY0IC0yNDV0MjQ1IC0xNjR0Mjk4IC02MXQyOTggNjF0MjQ1IDE2NHQxNjQgMjQ1dDYxIDI5OHQtNjEgMjk4dC0xNjQgMjQ1dC0yNDUgMTY0dC0yOTggNjF6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjYiIHVuaWNvZGU9IiYjeGYyOWI7IiAKZD0iTTE0MzggNzIzcTM0IC0zNSAyOSAtODJsLTQ0IC01NTFxLTQgLTQyIC0zNC41IC03MHQtNzEuNSAtMjhxLTYgMCAtOSAxcS00NCAzIC03Mi41IDM2LjV0LTI1LjUgNzcuNWwzNSA0MjlsLTE0MyAtOHE1NSAtMTEzIDU1IC0yNDBxMCAtMjE2IC0xNDggLTM3MmwtMTM3IDEzN3E5MSAxMDEgOTEgMjM1cTAgMTQ1IC0xMDIuNSAyNDh0LTI0Ny41IDEwM3EtMTM0IDAgLTIzNiAtOTJsLTEzNyAxMzhxMTIwIDExNCAyODQgMTQxbDI2NCAzMDAKbC0xNDkgODdsLTE4MSAtMTYxcS0zMyAtMzAgLTc3IC0yNy41dC03MyAzNS41dC0yNi41IDc3dDM0LjUgNzNsMjM5IDIxM3EyNiAyMyA2MCAyNi41dDY0IC0xNC41bDQ4OCAtMjgzcTM2IC0yMSA0OCAtNjhxMTcgLTY3IC0yNiAtMTE3bC0yMDUgLTIzMmwzNzEgMjBxNDkgMyA4MyAtMzJ6TTEyNDAgMTE4MHEtNzQgMCAtMTI2IDUydC01MiAxMjZ0NTIgMTI2dDEyNiA1MnQxMjYuNSAtNTJ0NTIuNSAtMTI2dC01Mi41IC0xMjZ0LTEyNi41IC01MnoKTTYxMyAtNjJxMTA2IDAgMTk2IDYxbDEzOSAtMTM5cS0xNDYgLTExNiAtMzM1IC0xMTZxLTE0OCAwIC0yNzMuNSA3M3QtMTk4LjUgMTk4dC03MyAyNzNxMCAxODggMTE2IDMzNmwxMzkgLTEzOXEtNjAgLTg4IC02MCAtMTk3cTAgLTE0NSAxMDIuNSAtMjQ3LjV0MjQ3LjUgLTEwMi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI3IiB1bmljb2RlPSImI3hmMjljOyIgCmQ9Ik04ODAgMzM2di0xNjBxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTYwcS0xNCAwIC0yMyA5dC05IDIzdjE2MHEwIDE0IDkgMjN0MjMgOWgxNjBxMTQgMCAyMyAtOXQ5IC0yM3pNMTEzNiA4MzJxMCAtNTAgLTE1IC05MHQtNDUuNSAtNjl0LTUyIC00NHQtNTkuNSAtMzZxLTMyIC0xOCAtNDYuNSAtMjh0LTI2IC0yNHQtMTEuNSAtMjl2LTMycTAgLTE0IC05IC0yM3QtMjMgLTloLTE2MHEtMTQgMCAtMjMgOXQtOSAyM3Y2OHEwIDM1IDEwLjUgNjQuNQp0MjQgNDcuNXQzOSAzNS41dDQxIDI1LjV0NDQuNSAyMXE1MyAyNSA3NSA0M3QyMiA0OXEwIDQyIC00My41IDcxLjV0LTk1LjUgMjkuNXEtNTYgMCAtOTUgLTI3cS0yOSAtMjAgLTgwIC04M3EtOSAtMTIgLTI1IC0xMnEtMTEgMCAtMTkgNmwtMTA4IDgycS0xMCA3IC0xMiAyMHQ1IDIzcTEyMiAxOTIgMzQ5IDE5MnExMjkgMCAyMzguNSAtODkuNXQxMDkuNSAtMjE0LjV6TTc2OCAxMjgwcS0xMzAgMCAtMjQ4LjUgLTUxdC0yMDQgLTEzNi41CnQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV0LTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41CnQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYyOCIgdW5pY29kZT0iJiN4ZjI5ZDsiIGhvcml6LWFkdi14PSIxNDA4IiAKZD0iTTM2NiAxMjI1cS02NCAwIC0xMTAgNDUuNXQtNDYgMTEwLjVxMCA2NCA0NiAxMDkuNXQxMTAgNDUuNXQxMDkuNSAtNDUuNXQ0NS41IC0xMDkuNXEwIC02NSAtNDUuNSAtMTEwLjV0LTEwOS41IC00NS41ek05MTcgNTgzcTAgLTUwIC0zMCAtNjcuNXQtNjMuNSAtNi41dC00Ny41IDM0bC0zNjcgNDM4cS03IDEyIC0xNCAxNS41dC0xMSAxLjVsLTMgLTNxLTcgLTggNCAtMjFsMTIyIC0xMzlsMSAtMzU0bC0xNjEgLTQ1NwpxLTY3IC0xOTIgLTkyIC0yMzRxLTE1IC0yNiAtMjggLTMycS01MCAtMjYgLTEwMyAtMXEtMjkgMTMgLTQxLjUgNDN0LTkuNSA1N3EyIDE3IDE5NyA2MThsNSA0MTZsLTg1IC0xNjRsMzUgLTIyMnE0IC0yNCAtMSAtNDJ0LTE0IC0yNy41dC0xOSAtMTZ0LTE3IC03LjVsLTcgLTJxLTE5IC0zIC0zNC41IDN0LTI0IDE2dC0xNCAyMnQtNy41IDE5LjV0LTIgOS41bC00NiAyOTlsMjExIDM4MXEyMyAzNCAxMTMgMzRxNzUgMCAxMDcgLTQwbDQyNCAtNTIxCnE3IC01IDE0IC0xN2wzIC0zbC0xIC0xcTcgLTEzIDcgLTI5ek01MTQgNDMzcTQzIC0xMTMgODguNSAtMjI1dDY5LjUgLTE2OGwyNCAtNTVxMzYgLTkzIDQyIC0xMjVxMTEgLTcwIC0zNiAtOTdxLTM1IC0yMiAtNjYgLTE2dC01MSAyMnQtMjkgMzVoLTFxLTYgMTYgLTggMjVsLTEyNCAzNTF6TTEzMzggLTE1OXEzMSAtNDkgMzEgLTU3cTAgLTUgLTMgLTdxLTkgLTUgLTE0LjUgMC41dC0xNS41IDI2dC0xNiAzMC41cS0xMTQgMTcyIC00MjMgNjYxCnEzIC0xIDcgMXQ3IDRsMyAycTExIDkgMTEgMTd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjkiIHVuaWNvZGU9IiYjeGYyOWU7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik01MDQgNTQyaDE3MWwtMSAyNjV6TTE1MzAgNjQxcTAgODcgLTUwLjUgMTQwdC0xNDYuNSA1M2gtNTR2LTM4OGg1MnE5MSAwIDE0NSA1N3Q1NCAxMzh6TTk1NiAxMDE4bDEgLTc1NnEwIC0xNCAtOS41IC0yNHQtMjMuNSAtMTBoLTIxNnEtMTQgMCAtMjMuNSAxMHQtOS41IDI0djYyaC0yOTFsLTU1IC04MXEtMTAgLTE1IC0yOCAtMTVoLTI2N3EtMjEgMCAtMzAuNSAxOHQzLjUgMzVsNTU2IDc1N3E5IDE0IDI3IDE0aDMzMnExNCAwIDI0IC0xMAp0MTAgLTI0ek0xNzgzIDY0MXEwIC0xOTMgLTEyNS41IC0zMDN0LTMyNC41IC0xMTBoLTI3MHEtMTQgMCAtMjQgMTB0LTEwIDI0djc1NnEwIDE0IDEwIDI0dDI0IDEwaDI2OHEyMDAgMCAzMjYgLTEwOXQxMjYgLTMwMnpNMTkzOSA2NDBxMCAtMTEgLTAuNSAtMjl0LTggLTcxLjV0LTIxLjUgLTEwMnQtNDQuNSAtMTA4dC03My41IC0xMDIuNWgtNTFxMzggNDUgNjYuNSAxMDQuNXQ0MS41IDExMnQyMSA5OHQ5IDcyLjVsMSAyN3EwIDggLTAuNSAyMi41CnQtNy41IDYwdC0yMCA5MS41dC00MSAxMTEuNXQtNjYgMTI0LjVoNDNxNDEgLTQ3IDcyIC0xMDd0NDUuNSAtMTExLjV0MjMgLTk2dDEwLjUgLTcwLjV6TTIxMjMgNjQwcTAgLTExIC0wLjUgLTI5dC04IC03MS41dC0yMS41IC0xMDJ0LTQ1IC0xMDh0LTc0IC0xMDIuNWgtNTFxMzggNDUgNjYuNSAxMDQuNXQ0MS41IDExMnQyMSA5OHQ5IDcyLjVsMSAyN3EwIDggLTAuNSAyMi41dC03LjUgNjB0LTE5LjUgOTEuNXQtNDAuNSAxMTEuNXQtNjYgMTI0LjUKaDQzcTQxIC00NyA3MiAtMTA3dDQ1LjUgLTExMS41dDIzIC05NnQxMC41IC03MC41ek0yMzA0IDY0MHEwIC0xMSAtMC41IC0yOXQtOCAtNzEuNXQtMjEuNSAtMTAydC00NC41IC0xMDh0LTczLjUgLTEwMi41aC01MXEzOCA0NSA2NiAxMDQuNXQ0MSAxMTJ0MjEgOTh0OSA3Mi41bDEgMjdxMCA4IC0wLjUgMjIuNXQtNy41IDYwdC0xOS41IDkxLjV0LTQwLjUgMTExLjV0LTY2IDEyNC41aDQzcTQxIC00NyA3MiAtMTA3dDQ1LjUgLTExMS41dDIzIC05Ngp0OS41IC03MC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkEwIiB1bmljb2RlPSImI3hmMmEwOyIgaG9yaXotYWR2LXg9IjE0MDgiIApkPSJNNjE3IC0xNTNxMCAxMSAtMTMgNTh0LTMxIDEwN3QtMjAgNjlxLTEgNCAtNSAyNi41dC04LjUgMzZ0LTEzLjUgMjEuNXEtMTUgMTQgLTUxIDE0cS0yMyAwIC03MCAtNS41dC03MSAtNS41cS0zNCAwIC00NyAxMXEtNiA1IC0xMSAxNS41dC03LjUgMjB0LTYuNSAyNHQtNSAxOC41cS0zNyAxMjggLTM3IDI1NXQzNyAyNTVxMSA0IDUgMTguNXQ2LjUgMjR0Ny41IDIwdDExIDE1LjVxMTMgMTEgNDcgMTFxMjQgMCA3MSAtNS41dDcwIC01LjUKcTM2IDAgNTEgMTRxOSA4IDEzLjUgMjEuNXQ4LjUgMzZ0NSAyNi41cTIgOSAyMCA2OXQzMSAxMDd0MTMgNThxMCAyMiAtNDMuNSA1Mi41dC03NS41IDQyLjVxLTIwIDggLTQ1IDhxLTM0IDAgLTk4IC0xOHEtNTcgLTE3IC05Ni41IC00MC41dC03MSAtNjZ0LTQ2IC03MHQtNDUuNSAtOTQuNXEtNiAtMTIgLTkgLTE5cS00OSAtMTA3IC02OCAtMjE2dC0xOSAtMjQ0dDE5IC0yNDR0NjggLTIxNnE1NiAtMTIyIDgzIC0xNjFxNjMgLTkxIDE3OSAtMTI3Cmw2IC0ycTY0IC0xOCA5OCAtMThxMjUgMCA0NSA4cTMyIDEyIDc1LjUgNDIuNXQ0My41IDUyLjV6TTc3NiA3NjBxLTI2IDAgLTQ1IDE5dC0xOSA0NS41dDE5IDQ1LjVxMzcgMzcgMzcgOTBxMCA1MiAtMzcgOTFxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTlxNzUgLTc1IDc1IC0xODF0LTc1IC0xODFxLTIxIC0xOSAtNDUgLTE5ek05NTcgNTc5cS0yNyAwIC00NSAxOXEtMTkgMTkgLTE5IDQ1dDE5IDQ1cTExMiAxMTQgMTEyIDI3Mgp0LTExMiAyNzJxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTlxMTUwIC0xNTAgMTUwIC0zNjJ0LTE1MCAtMzYycS0xOCAtMTkgLTQ1IC0xOXpNMTEzOCAzOThxLTI3IDAgLTQ1IDE5cS0xOSAxOSAtMTkgNDV0MTkgNDVxOTAgOTEgMTM4LjUgMjA4dDQ4LjUgMjQ1dC00OC41IDI0NXQtMTM4LjUgMjA4cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5cTEwOSAtMTA5IDE2NyAtMjQ5dDU4IC0yOTR0LTU4IC0yOTR0LTE2NyAtMjQ5CnEtMTggLTE5IC00NSAtMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQTEiIHVuaWNvZGU9IiYjeGYyYTE7IiBob3Jpei1hZHYteD0iMjE3NiIgCmQ9Ik0xOTIgMzUycS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNNzA0IDM1MnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTcwNCA4NjRxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN0LTQ3IDExM3QtMTEzIDQ3ek0xNDcyIDM1MgpxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN0LTQ3IDExM3QtMTEzIDQ3ek0xOTg0IDM1MnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTE0NzIgODY0cS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNMTk4NCA4NjQKcS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNMTk4NCAxMzc2cS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNMzg0IDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTg5NiAxOTJxMCAtODAgLTU2IC0xMzYKdC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMzg0IDcwNHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTg5NiA3MDRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0zODQgMTIxNnEwIC04MCAtNTYgLTEzNnQtMTM2IC01Ngp0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTg5NiAxMjE2cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMjE3NiAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1Ngp0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMTY2NCA3MDRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0yMTc2IDcwNHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTE2NjQgMTIxNnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzYKdDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0yMTc2IDEyMTZxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkEyIiB1bmljb2RlPSImI3hmMmEyOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTI4IC0xOTJxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXpNMzIwIDBxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXpNMzY1IDM2NWwyNTYgLTI1NmwtOTAgLTkwbC0yNTYgMjU2ek03MDQgMzg0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6Ck0xNDExIDcwNHEwIC01OSAtMTEuNSAtMTA4LjV0LTM3LjUgLTkzLjV0LTQ0IC02Ny41dC01MyAtNjQuNXEtMzEgLTM1IC00NS41IC01NHQtMzMuNSAtNTB0LTI2LjUgLTY0dC03LjUgLTc0cTAgLTE1OSAtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjVxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXExMDYgMCAxODEgNzV0NzUgMTgxcTAgNTcgMTEuNSAxMDUuNXQzNyA5MXQ0My41IDY2LjV0NTIgNjNxNDAgNDYgNTkuNSA3Mgp0MzcuNSA3NC41dDE4IDEwMy41cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1cTAgMTE3IDQ1LjUgMjIzLjV0MTIzIDE4NHQxODQgMTIzdDIyMy41IDQ1LjV0MjIzLjUgLTQ1LjV0MTg0IC0xMjN0MTIzIC0xODR0NDUuNSAtMjIzLjV6TTg5NiA1NzZxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDUKdDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTExODQgNzA0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1cTAgOTMgLTY1LjUgMTU4LjV0LTE1OC41IDY1LjVxLTkyIDAgLTE1OCAtNjUuNXQtNjYgLTE1OC41cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1cTAgMTQ2IDEwMyAyNDl0MjQ5IDEwM3QyNDkgLTEwM3QxMDMgLTI0OXpNMTU3OCA5OTNxMTAgLTI1IC0xIC00OXQtMzYgLTM0cS05IC00IC0yMyAtNApxLTE5IDAgLTM1LjUgMTF0LTIzLjUgMzBxLTY4IDE3OCAtMjI0IDI5NXEtMjEgMTYgLTI1IDQydDEyIDQ3cTE3IDIxIDQzIDI1dDQ3IC0xMnExODMgLTEzNyAyNjYgLTM1MXpNMTc4OCAxMDc0cTkgLTI1IC0xLjUgLTQ5dC0zNS41IC0zNHEtMTEgLTQgLTIzIC00cS00NCAwIC02MCA0MXEtOTIgMjM4IC0yOTcgMzkzcS0yMiAxNiAtMjUuNSA0MnQxMi41IDQ3cTE2IDIyIDQyIDI1LjV0NDcgLTEyLjVxMjM1IC0xNzUgMzQxIC00NDl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQTMiIHVuaWNvZGU9IiYjeGYyYTM7IiBob3Jpei1hZHYteD0iMjMwNCIgCmQ9Ik0xMDMyIDU3NnEtNTkgMiAtODQgNTVxLTE3IDM0IC00OCA1My41dC02OCAxOS41cS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41cTAgLTU2IDM2IC04OWwxMCAtOHEzNCAtMzEgODIgLTMxcTM3IDAgNjggMTkuNXQ0OCA1My41cTI1IDUzIDg0IDU1ek0xNjAwIDcwNHEwIDU2IC0zNiA4OWwtMTAgOHEtMzQgMzEgLTgyIDMxcS0zNyAwIC02OCAtMTkuNXQtNDggLTUzLjVxLTI1IC01MyAtODQgLTU1cTU5IC0yIDg0IC01NQpxMTcgLTM0IDQ4IC01My41dDY4IC0xOS41cTUzIDAgOTAuNSAzNy41dDM3LjUgOTAuNXpNMTE3NCA5MjVxLTE3IC0zNSAtNTUgLTQ4dC03MyA0cS02MiAzMSAtMTM0IDMxcS01MSAwIC05OSAtMTdxMyAwIDkuNSAwLjV0OS41IDAuNXE5MiAwIDE3MC41IC01MHQxMTguNSAtMTMzcTE3IC0zNiAzLjUgLTczLjV0LTQ5LjUgLTU0LjVxLTE4IC05IC0zOSAtOXEyMSAwIDM5IC05cTM2IC0xNyA0OS41IC01NC41dC0zLjUgLTczLjUKcS00MCAtODMgLTExOC41IC0xMzN0LTE3MC41IC01MGgtNnEtMTYgMiAtNDQgNGwtMjkwIDI3bC0yMzkgLTEyMHEtMTQgLTcgLTI5IC03cS00MCAwIC01NyAzNWwtMTYwIDMyMHEtMTEgMjMgLTQgNDcuNXQyOSAzNy41bDIwOSAxMTlsMTQ4IDI2N3ExNyAxNTUgOTEuNSAyOTEuNXQxOTUuNSAyMzYuNXEzMSAyNSA3MC41IDIxLjV0NjQuNSAtMzQuNXQyMS41IC03MHQtMzQuNSAtNjVxLTcwIC01OSAtMTE3IC0xMjhxMTIzIDg0IDI2NyAxMDEKcTQwIDUgNzEuNSAtMTl0MzUuNSAtNjRxNSAtNDAgLTE5IC03MS41dC02NCAtMzUuNXEtODQgLTEwIC0xNTkgLTU1cTQ2IDEwIDk5IDEwcTExNSAwIDIxOCAtNTBxMzYgLTE4IDQ5IC01NS41dC01IC03My41ek0yMTM3IDEwODVsMTYwIC0zMjBxMTEgLTIzIDQgLTQ3LjV0LTI5IC0zNy41bC0yMDkgLTExOWwtMTQ4IC0yNjdxLTE3IC0xNTUgLTkxLjUgLTI5MS41dC0xOTUuNSAtMjM2LjVxLTI2IC0yMiAtNjEgLTIycS00NSAwIC03NCAzNQpxLTI1IDMxIC0yMS41IDcwdDM0LjUgNjVxNzAgNTkgMTE3IDEyOHEtMTIzIC04NCAtMjY3IC0xMDFxLTQgLTEgLTEyIC0xcS0zNiAwIC02My41IDI0dC0zMS41IDYwcS01IDQwIDE5IDcxLjV0NjQgMzUuNXE4NCAxMCAxNTkgNTVxLTQ2IC0xMCAtOTkgLTEwcS0xMTUgMCAtMjE4IDUwcS0zNiAxOCAtNDkgNTUuNXQ1IDczLjVxMTcgMzUgNTUgNDh0NzMgLTRxNjIgLTMxIDEzNCAtMzFxNTEgMCA5OSAxN3EtMyAwIC05LjUgLTAuNXQtOS41IC0wLjUKcS05MiAwIC0xNzAuNSA1MHQtMTE4LjUgMTMzcS0xNyAzNiAtMy41IDczLjV0NDkuNSA1NC41cTE4IDkgMzkgOXEtMjEgMCAtMzkgOXEtMzYgMTcgLTQ5LjUgNTQuNXQzLjUgNzMuNXE0MCA4MyAxMTguNSAxMzN0MTcwLjUgNTBoNmgxcTE0IC0yIDQyIC00bDI5MSAtMjdsMjM5IDEyMHExNCA3IDI5IDdxNDAgMCA1NyAtMzV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQTQiIHVuaWNvZGU9IiYjeGYyYTQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMDU2IDcwNHEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1cTAgMTQ2IC0xMDMgMjQ5dC0yNDkgMTAzdC0yNDkgLTEwM3QtMTAzIC0yNDlxMCAtMjYgMTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXEwIDkzIDY2IDE1OC41dDE1OCA2NS41dDE1OCAtNjUuNXQ2NiAtMTU4LjV6TTgzNSAxMjgwcS0xMTcgMCAtMjIzLjUgLTQ1LjV0LTE4NCAtMTIzdC0xMjMgLTE4NHQtNDUuNSAtMjIzLjVxMCAtMjYgMTkgLTQ1dDQ1IC0xOXQ0NSAxOQp0MTkgNDVxMCAxODUgMTMxLjUgMzE2LjV0MzE2LjUgMTMxLjV0MzE2LjUgLTEzMS41dDEzMS41IC0zMTYuNXEwIC01NSAtMTggLTEwMy41dC0zNy41IC03NC41dC01OS41IC03MnEtMzQgLTM5IC01MiAtNjN0LTQzLjUgLTY2LjV0LTM3IC05MXQtMTEuNSAtMTA1LjVxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1cS0yNiAwIC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5cTE1OSAwIDI3MS41IDExMi41dDExMi41IDI3MS41cTAgNDEgNy41IDc0CnQyNi41IDY0dDMzLjUgNTB0NDUuNSA1NHEzNSA0MSA1MyA2NC41dDQ0IDY3LjV0MzcuNSA5My41dDExLjUgMTA4LjVxMCAxMTcgLTQ1LjUgMjIzLjV0LTEyMyAxODR0LTE4NCAxMjN0LTIyMy41IDQ1LjV6TTU5MSA1NjFsMjI2IC0yMjZsLTU3OSAtNTc5cS0xMiAtMTIgLTI5IC0xMnQtMjkgMTJsLTE2OCAxNjhxLTEyIDEyIC0xMiAyOXQxMiAyOXpNMTYxMiAxNTI0bDE2OCAtMTY4cTEyIC0xMiAxMiAtMjl0LTEyIC0zMGwtMjMzIC0yMzMKbC0yNiAtMjVsLTcxIC03MXEtNjYgMTUzIC0xOTUgMjU4bDkxIDkxbDIwNyAyMDdxMTMgMTIgMzAgMTJ0MjkgLTEyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE1IiB1bmljb2RlPSImI3hmMmE1OyIgCmQ9Ik04NjYgMTAyMXEwIC0yNyAtMTMgLTk0cS0xMSAtNTAgLTMxLjUgLTE1MHQtMzAuNSAtMTUwcS0yIC0xMSAtNC41IC0xMi41dC0xMy41IC0yLjVxLTIwIC0yIC0zMSAtMnEtNTggMCAtODQgNDkuNXQtMjYgMTEzLjVxMCA4OCAzNSAxNzR0MTAzIDEyNHEyOCAxNCA1MSAxNHEyOCAwIDM2LjUgLTE2LjV0OC41IC00Ny41ek0xMzUyIDU5N3EwIDE0IC0zOSA3NS41dC01MiA2Ni41cS0yMSA4IC0zNCA4cS05MSAwIC0yMjYgLTc3bC0yIDIKcTMgMjIgMjcuNSAxMzV0MjQuNSAxNzhxMCAyMzMgLTI0MiAyMzNxLTI0IDAgLTY4IC02cS05NCAtMTcgLTE2OC41IC04OS41dC0xMTEuNSAtMTY2LjV0LTM3IC0xODlxMCAtMTQ2IDgwLjUgLTIyNXQyMjcuNSAtNzlxMjUgMCAyNSAtM3QtMSAtNXEtNCAtMzQgLTI2IC0xMTdxLTE0IC01MiAtNTEuNSAtMTAxdC04Mi41IC00OXEtNDIgMCAtNDIgNDdxMCAyNCAxMC41IDQ3LjV0MjUgMzkuNXQyOS41IDI4LjV0MjYgMjB0MTEgOC41cTAgMyAtNyAxMApxLTI0IDIyIC01OC41IDM2LjV0LTY1LjUgMTQuNXEtMzUgMCAtNjMuNSAtMzR0LTQxIC03NXQtMTIuNSAtNzVxMCAtODggNTEuNSAtMTQydDEzOC41IC01NHE4MiAwIDE1NSA1M3QxMTcuNSAxMjZ0NjUuNSAxNTNxNiAyMiAxNS41IDY2LjV0MTQuNSA2Ni41cTMgMTIgMTQgMThxMTE4IDYwIDIyNyA2MHE0OCAwIDEyNyAtMThxMSAtMSA0IC0xcTUgMCA5LjUgNC41dDQuNSA4LjV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjUKdC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBNiIgdW5pY29kZT0iJiN4ZjJhNjsiIGhvcml6LWFkdi14PSIxNTM1IiAKZD0iTTc0NCAxMjMxcTAgMjQgLTIgMzguNXQtOC41IDMwdC0yMSAyM3QtMzcuNSA3LjVxLTM5IDAgLTc4IC0yM3EtMTA1IC01OCAtMTU5IC0xOTAuNXQtNTQgLTI2OS41cTAgLTQ0IDguNSAtODUuNXQyNi41IC04MC41dDUyLjUgLTYyLjV0ODEuNSAtMjMuNXE0IDAgMTggLTAuNXQyMCAwdDE2IDN0MTUgOC41dDcgMTZxMTYgNzcgNDggMjMxLjV0NDggMjMxLjVxMTkgOTEgMTkgMTQ2ek0xNDk4IDU3NXEwIC03IC03LjUgLTEzLjV0LTE1LjUgLTYuNQpsLTYgMXEtMjIgMyAtNjIgMTF0LTcyIDEyLjV0LTYzIDQuNXEtMTY3IDAgLTM1MSAtOTNxLTE1IC04IC0yMSAtMjdxLTEwIC0zNiAtMjQuNSAtMTA1LjV0LTIyLjUgLTEwMC41cS0yMyAtOTEgLTcwIC0xNzkuNXQtMTEyLjUgLTE2NC41dC0xNTQuNSAtMTIzdC0xODUgLTQ3cS0xMzUgMCAtMjE0LjUgODMuNXQtNzkuNSAyMTkuNXEwIDUzIDE5LjUgMTE3dDYzIDExNi41dDk3LjUgNTIuNXEzOCAwIDEyMCAtMzMuNXQ4MyAtNjEuNQpxMCAtMSAtMTYuNSAtMTIuNXQtMzkuNSAtMzF0LTQ2IC00NC41dC0zOSAtNjF0LTE2IC03NHEwIC0zMyAxNi41IC01M3Q0OC41IC0yMHE0NSAwIDg1IDMxLjV0NjYuNSA3OHQ0OCAxMDUuNXQzMi41IDEwN3QxNiA5MHY5cTAgMiAtMy41IDMuNXQtOC41IDEuNWgtMTB0LTEwIC0wLjV0LTYgLTAuNXEtMjI3IDAgLTM1MiAxMjIuNXQtMTI1IDM0OC41cTAgMTA4IDM0LjUgMjIxdDk2IDIxMHQxNTYgMTY3LjV0MjA0LjUgODkuNXE1MiA5IDEwNiA5CnEzNzQgMCAzNzQgLTM2MHEwIC05OCAtMzggLTI3M3QtNDMgLTIxMWwzIC0zcTEwMSA1NyAxODIuNSA4OHQxNjcuNSAzMXEyMiAwIDUzIC0xM3ExOSAtNyA4MCAtMTAyLjV0NjEgLTExNi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE3IiB1bmljb2RlPSImI3hmMmE3OyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNODMxIDg2M3EzMiAwIDU5IC0xOGwyMjIgLTE0OHE2MSAtNDAgMTEwIC05N2wxNDYgLTE3MHE0MCAtNDYgMjkgLTEwNmwtNzIgLTQxM3EtNiAtMzIgLTI5LjUgLTUzLjV0LTU1LjUgLTI1LjVsLTUyNyAtNTZsLTM1MiAtMzJoLTlxLTM5IDAgLTY3LjUgMjh0LTI4LjUgNjhxMCAzNyAyNyA2NHQ2NSAzMmwyNjAgMzJoLTQ0OHEtNDEgMCAtNjkuNSAzMHQtMjYuNSA3MXEyIDM5IDMyIDY1dDY5IDI2bDQ0MiAxbC01MjEgNjRxLTQxIDUgLTY2IDM3CnQtMTkgNzNxNiAzNSAzNC41IDU3LjV0NjUuNSAyMi41aDEwbDQ4MSAtNjBsLTM1MSA5NHEtMzggMTAgLTYyIDQxLjV0LTE4IDY4LjVxNiAzNiAzMyA1OC41dDYyIDIyLjVxNiAwIDIwIC0ybDQ0OCAtOTZsMjE3IC0zN3ExIDAgMyAtMC41dDMgLTAuNXEyMyAwIDMwLjUgMjN0LTEyLjUgMzZsLTE4NiAxMjVxLTM1IDIzIC00MiA2My41dDE4IDczLjVxMjcgMzggNzYgMzh6TTc2MSA2NjFsMTg2IC0xMjVsLTIxOCAzN2wtNSAybC0zNiAzOApsLTIzOCAyNjJxLTEgMSAtMi41IDMuNXQtMi41IDMuNXEtMjQgMzEgLTE4LjUgNzB0MzcuNSA2NHEzMSAyMyA2OCAxNy41dDY0IC0zMy41bDE0MiAtMTQ3cS0yIC0xIC01IC0zLjV0LTQgLTQuNXEtMzIgLTQ1IC0yMyAtOTl0NTUgLTg1ek0xNjQ4IDExMTVsMTUgLTI2NnE0IC03MyAtMTEgLTE0N2wtNDggLTIxOXEtMTIgLTU5IC02NyAtODdsLTEwNiAtNTRxMiA2MiAtMzkgMTA5bC0xNDYgMTcwcS01MyA2MSAtMTE3IDEwM2wtMjIyIDE0OApxLTM0IDIzIC03NiAyM3EtNTEgMCAtODggLTM3bC0yMzUgMzEycS0yNSAzMyAtMTggNzMuNXQ0MSA2My41cTMzIDIyIDcxLjUgMTR0NjIuNSAtNDBsMjY2IC0zNTJsLTI2MiA0NTVxLTIxIDM1IC0xMC41IDc1dDQ3LjUgNTlxMzUgMTggNzIuNSA2dDU3LjUgLTQ2bDI0MSAtNDIwbC0xMzYgMzM3cS0xNSAzNSAtNC41IDc0dDQ0LjUgNTZxMzcgMTkgNzYgNnQ1NiAtNTFsMTkzIC00MTVsMTAxIC0xOTZxOCAtMTUgMjMgLTE3LjV0MjcgNy41dDExIDI2CmwtMTIgMjI0cS0yIDQxIDI2IDcxdDY5IDMxcTM5IDAgNjcgLTI4LjV0MzAgLTY3LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQTgiIHVuaWNvZGU9IiYjeGYyYTg7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0zMzUgMTgwcS0yIDAgLTYgMnEtODYgNTcgLTE2OC41IDE0NXQtMTM5LjUgMTgwcS0yMSAzMCAtMjEgNjlxMCA5IDIgMTl0NCAxOHQ3IDE4dDguNSAxNnQxMC41IDE3dDEwIDE1dDEyIDE1LjV0MTEgMTQuNXExODQgMjUxIDQ1MiAzNjVxLTExMCAxOTggLTExMCAyMTFxMCAxOSAxNyAyOXExMTYgNjQgMTI4IDY0cTE4IDAgMjggLTE2bDEyNCAtMjI5cTkyIDE5IDE5MiAxOXEyNjYgMCA0OTcuNSAtMTM3LjV0Mzc4LjUgLTM2OS41CnEyMCAtMzEgMjAgLTY5dC0yMCAtNjlxLTkxIC0xNDIgLTIxOC41IC0yNTMuNXQtMjc4LjUgLTE3NS41cTExMCAtMTk4IDExMCAtMjExcTAgLTIwIC0xNyAtMjlxLTExNiAtNjQgLTEyNyAtNjRxLTE5IDAgLTI5IDE2bC0xMjQgMjI5bC02NCAxMTlsLTQ0NCA4MjBsNyA3cS01OCAtMjQgLTk5IC00N3EzIC01IDEyNyAtMjM0dDI0MyAtNDQ5dDExOSAtMjIzcTAgLTcgLTkgLTlxLTEzIC0zIC03MiAtM3EtNTcgMCAtNjAgN2wtNDU2IDg0MQpxLTM5IC0yOCAtODIgLTY4cTI0IC00MyAyMTQgLTM5My41dDE5MCAtMzU0LjVxMCAtMTAgLTExIC0xMHEtMTQgMCAtODIuNSAyMnQtNzIuNSAyOGwtMTA2IDE5N2wtMjI0IDQxM3EtNDQgLTUzIC03OCAtMTA2cTIgLTMgMTggLTI1dDIzIC0zNGwxNzYgLTMyN3EwIC0xMCAtMTAgLTEwek0xMTY1IDI4Mmw0OSAtOTFxMjczIDExMSA0NTAgMzg1cS0xODAgMjc3IC00NTkgMzg5cTY3IC02NCAxMDMgLTE0OC41dDM2IC0xNzYuNQpxMCAtMTA2IC00NyAtMjAwLjV0LTEzMiAtMTU3LjV6TTg0OCA4OTZxMCAtMjAgMTQgLTM0dDM0IC0xNHE4NiAwIDE0NyAtNjF0NjEgLTE0N3EwIC0yMCAxNCAtMzR0MzQgLTE0dDM0IDE0dDE0IDM0cTAgMTI2IC04OSAyMTV0LTIxNSA4OXEtMjAgMCAtMzQgLTE0dC0xNCAtMzR6TTEyMTQgOTYxbC05IDRsNyAtN3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBOSIgdW5pY29kZT0iJiN4ZjJhOTsiIGhvcml6LWFkdi14PSIxMjgwIiAKZD0iTTEwNTAgNDMwcTAgLTIxNSAtMTQ3IC0zNzRxLTE0OCAtMTYxIC0zNzggLTE2MXEtMjMyIDAgLTM3OCAxNjFxLTE0NyAxNTkgLTE0NyAzNzRxMCAxNDcgNjggMjcwLjV0MTg5IDE5Ni41dDI2OCA3M3E5NiAwIDE4MiAtMzFxLTMyIC02MiAtMzkgLTEyNnEtNjYgMjggLTE0MyAyOHEtMTY3IDAgLTI4MC41IC0xMjN0LTExMy41IC0yOTFxMCAtMTcwIDExMi41IC0yODguNXQyODEuNSAtMTE4LjV0MjgxIDExOC41dDExMiAyODguNQpxMCA4OSAtMzIgMTY2cTY2IDEzIDEyMyA0OXE0MSAtOTggNDEgLTIxMnpNODQ2IDYxOXEwIC0xOTIgLTc5LjUgLTM0NXQtMjM4LjUgLTI1M2wtMTQgLTFxLTI5IDAgLTYyIDVxODMgMzIgMTQ2LjUgMTAyLjV0OTkuNSAxNTQuNXQ1OC41IDE4OXQzMCAxOTIuNXQ3LjUgMTc4LjVxMCA2OSAtMyAxMDNxNTUgLTE2MCA1NSAtMzI2ek03OTEgOTQ3di0ycS03MyAyMTQgLTIwNiA0NDBxODggLTU5IDE0Mi41IC0xODYuNXQ2My41IC0yNTEuNXoKTTEwMzUgNzQ0cS04MyAwIC0xNjAgNzVxMjE4IDEyMCAyOTAgMjQ3cTE5IDM3IDIxIDU2cS00MiAtOTQgLTEzOS41IC0xNjYuNXQtMjA0LjUgLTk3LjVxLTM1IDU0IC0zNSAxMTNxMCAzNyAxNyA3OXQ0MyA2OHE0NiA0NCAxNTcgNzRxNTkgMTYgMTA2IDU4LjV0NzQgMTAwLjVxNzQgLTEwNSA3NCAtMjUzcTAgLTEwOSAtMjQgLTE3MHEtMzIgLTc3IC04OC41IC0xMzAuNXQtMTMwLjUgLTUzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQUEiIHVuaWNvZGU9IiYjeGYyYWE7IiAKZD0iTTEwNTAgNDk1cTAgNzggLTI4IDE0N3EtNDEgLTI1IC04NSAtMzRxMjIgLTUwIDIyIC0xMTRxMCAtMTE3IC03NyAtMTk4LjV0LTE5MyAtODEuNXQtMTkzLjUgODEuNXQtNzcuNSAxOTguNXEwIDExNSA3OCAxOTkuNXQxOTMgODQuNXE1MyAwIDk4IC0xOXE0IDQzIDI3IDg3cS02MCAyMSAtMTI1IDIxcS0xNTQgMCAtMjU3LjUgLTEwOC41dC0xMDMuNSAtMjYzLjV0MTAzLjUgLTI2MXQyNTcuNSAtMTA2dDI1Ny41IDEwNi41dDEwMy41IDI2MC41egpNODcyIDg1MHEyIC0yNCAyIC03MXEwIC02MyAtNSAtMTIzdC0yMC41IC0xMzIuNXQtNDAuNSAtMTMwdC02OC41IC0xMDZ0LTEwMC41IC03MC41cTIxIC0zIDQyIC0zaDEwcTIxOSAxMzkgMjE5IDQxMXEwIDExNiAtMzggMjI1ek04NzIgODUwcS00IDgwIC00NCAxNzEuNXQtOTggMTMwLjVxOTIgLTE1NiAxNDIgLTMwMnpNMTIwNyA5NTVxMCAxMDIgLTUxIDE3NHEtNDEgLTg2IC0xMjQgLTEwOXEtNjkgLTE5IC0xMDkgLTUzLjV0LTQwIC05OS41CnEwIC00MCAyNCAtNzdxNzQgMTcgMTQwLjUgNjd0OTUuNSAxMTVxLTQgLTUyIC03NC41IC0xMTEuNXQtMTM4LjUgLTk3LjVxNTIgLTUyIDExMCAtNTJxNTEgMCA5MCAzN3Q2MCA5MHExNyA0MiAxNyAxMTd6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41CnQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBQiIgdW5pY29kZT0iJiN4ZjJhYjsiIApkPSJNMTI3OSAzODhxMCAyMiAtMjIgMjdxLTY3IDE1IC0xMTggNTl0LTgwIDEwOHEtNyAxOSAtNyAyNXEwIDE1IDE5LjUgMjZ0NDMgMTd0NDMgMjAuNXQxOS41IDM2LjVxMCAxOSAtMTguNSAzMS41dC0zOC41IDEyLjVxLTEyIDAgLTMyIC04dC0zMSAtOHEtNCAwIC0xMiAycTUgOTUgNSAxMTRxMCA3OSAtMTcgMTE0cS0zNiA3OCAtMTAzIDEyMS41dC0xNTIgNDMuNXEtMTk5IDAgLTI3NSAtMTY1cS0xNyAtMzUgLTE3IC0xMTRxMCAtMTkgNSAtMTE0CnEtNCAtMiAtMTQgLTJxLTEyIDAgLTMyIDcuNXQtMzAgNy41cS0yMSAwIC0zOC41IC0xMnQtMTcuNSAtMzJxMCAtMjEgMTkuNSAtMzUuNXQ0MyAtMjAuNXQ0MyAtMTd0MTkuNSAtMjZxMCAtNiAtNyAtMjVxLTY0IC0xMzggLTE5OCAtMTY3cS0yMiAtNSAtMjIgLTI3cTAgLTQ2IDEzNyAtNjhxMiAtNSA2IC0yNnQxMS41IC0zMC41dDIzLjUgLTkuNXExMiAwIDM3LjUgNC41dDM5LjUgNC41cTM1IDAgNjcgLTE1dDU0IC0zMi41dDU3LjUgLTMyLjUKdDc2LjUgLTE1cTQzIDAgNzkgMTV0NTcuNSAzMi41dDUzLjUgMzIuNXQ2NyAxNXExNCAwIDM5LjUgLTR0MzguNSAtNHExNiAwIDIzIDEwdDExIDMwdDYgMjVxMTM3IDIyIDEzNyA2OHpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41CnQxMDMgLTM4NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkFDIiB1bmljb2RlPSImI3hmMmFjOyIgaG9yaXotYWR2LXg9IjE2NjQiIApkPSJNODQ4IDE0MDhxMTM0IDEgMjQwLjUgLTY4LjV0MTYzLjUgLTE5Mi41cTI3IC01OCAyNyAtMTc5cTAgLTQ3IC05IC0xOTFxMTQgLTcgMjggLTdxMTggMCA1MSAxMy41dDUxIDEzLjVxMjkgMCA1NiAtMTh0MjcgLTQ2cTAgLTMyIC0zMS41IC01NHQtNjkgLTMxLjV0LTY5IC0yOXQtMzEuNSAtNDcuNXEwIC0xNSAxMiAtNDNxMzcgLTgyIDEwMi41IC0xNTB0MTQ0LjUgLTEwMXEyOCAtMTIgODAgLTIzcTI4IC02IDI4IC0zNQpxMCAtNzAgLTIxOSAtMTAzcS03IC0xMSAtMTEgLTM5dC0xNCAtNDYuNXQtMzMgLTE4LjVxLTIwIDAgLTYyIDYuNXQtNjQgNi41cS0zNyAwIC02MiAtNXEtMzIgLTUgLTYzIC0yMi41dC01OCAtMzh0LTU4IC00MC41dC03NiAtMzMuNXQtOTkgLTEzLjVxLTUyIDAgLTk2LjUgMTMuNXQtNzUgMzMuNXQtNTcuNSA0MC41dC01OCAzOHQtNjIgMjIuNXEtMjYgNSAtNjMgNXEtMjQgMCAtNjUuNSAtNy41dC01OC41IC03LjVxLTI1IDAgLTM1IDE4LjUKdC0xNCA0Ny41dC0xMSA0MHEtMjE5IDMzIC0yMTkgMTAzcTAgMjkgMjggMzVxNTIgMTEgODAgMjNxNzggMzIgMTQ0LjUgMTAxdDEwMi41IDE1MHExMiAyOCAxMiA0M3EwIDI4IC0zMS41IDQ3LjV0LTY5LjUgMjkuNXQtNjkuNSAzMS41dC0zMS41IDUyLjVxMCAyNyAyNiA0NS41dDU1IDE4LjVxMTUgMCA0OCAtMTN0NTMgLTEzcTE4IDAgMzIgN3EtOSAxNDIgLTkgMTkwcTAgMTIyIDI3IDE4MHE2NCAxMzcgMTcyIDE5OHQyNjQgNjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQUQiIHVuaWNvZGU9IiYjeGYyYWQ7IiAKZD0iTTEyODAgMzg4cTAgMjIgLTIyIDI3cS02NyAxNCAtMTE4IDU4dC04MCAxMDlxLTcgMTQgLTcgMjVxMCAxNSAxOS41IDI2dDQyLjUgMTd0NDIuNSAyMC41dDE5LjUgMzYuNXEwIDE5IC0xOC41IDMxLjV0LTM4LjUgMTIuNXEtMTEgMCAtMzEgLTh0LTMyIC04cS00IDAgLTEyIDJxNSA2MyA1IDExNXEwIDc4IC0xNyAxMTRxLTM2IDc4IC0xMDIuNSAxMjEuNXQtMTUyLjUgNDMuNXEtMTk4IDAgLTI3NSAtMTY1cS0xOCAtMzggLTE4IC0xMTUKcTAgLTM4IDYgLTExNHEtMTAgLTIgLTE1IC0ycS0xMSAwIC0zMS41IDh0LTMwLjUgOHEtMjAgMCAtMzcuNSAtMTIuNXQtMTcuNSAtMzIuNXEwIC0yMSAxOS41IC0zNS41dDQyLjUgLTIwLjV0NDIuNSAtMTd0MTkuNSAtMjZxMCAtMTEgLTcgLTI1cS02NCAtMTM4IC0xOTggLTE2N3EtMjIgLTUgLTIyIC0yN3EwIC00NyAxMzggLTY5cTIgLTUgNiAtMjZ0MTEgLTMwLjV0MjMgLTkuNXExMyAwIDM4LjUgNXQzOC41IDVxMzUgMCA2Ny41IC0xNQp0NTQuNSAtMzIuNXQ1Ny41IC0zMi41dDc2LjUgLTE1cTQzIDAgNzkgMTV0NTcuNSAzMi41dDU0IDMyLjV0NjcuNSAxNXExMyAwIDM5IC00LjV0MzkgLTQuNXExNSAwIDIyLjUgOS41dDExLjUgMzF0NSAyNC41cTEzOCAyMiAxMzggNjl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwCnExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBRSIgdW5pY29kZT0iJiN4ZjJhZTsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTIzMDQgMTUzNnEtNjkgLTQ2IC0xMjUgLTkydC04OSAtODF0LTU5LjUgLTcxLjV0LTM3LjUgLTU3LjV0LTIyIC00NC41dC0xNCAtMjkuNXEtMTAgLTE4IC0zNS41IC0xMzYuNXQtNDguNSAtMTY0LjVxLTE1IC0yOSAtNTAgLTYwLjV0LTY3LjUgLTUwLjV0LTcyLjUgLTQxdC00OCAtMjhxLTQ3IC0zMSAtMTUxIC0yMzFxLTM0MSAxNCAtNjMwIC0xNThxLTkyIC01MyAtMzAzIC0xNzlxNDcgMTYgODYgMzF0NTUgMjJsMTUgNwpxNzEgMjcgMTYzIDY0LjV0MTMzLjUgNTMuNXQxMDggMzQuNXQxNDIuNSAzMS41cTE4NiAzMSA0NjUgLTdxMSAwIDEwIC0zcTExIC02IDE0IC0xN3QtMyAtMjJsLTE5NCAtMzQ1cS0xNSAtMjkgLTQ3IC0yMnEtMTI4IDI0IC0zNTQgMjRxLTE0NiAwIC00MDIgLTQ0LjV0LTM5MiAtNDYuNXEtODIgLTEgLTE0OSAxM3QtMTA3IDM3dC02MSA0MHQtMzMgMzRsLTEgMXYycTAgNiA2IDZxMTM4IDAgMzcxIDU1cTE5MiAzNjYgMzc0LjUgNTI0dDM4My41IDE1OApxNSAwIDE0LjUgLTAuNXQzOCAtNXQ1NSAtMTJ0NjEuNSAtMjQuNXQ2MyAtMzkuNXQ1NCAtNTl0NDAgLTgyLjVsMTAyIDE3N3EyIDQgMjEgNDIuNXQ0NC41IDg2LjV0NjEgMTA5LjV0ODQgMTMzLjV0MTAwLjUgMTM3cTY2IDgyIDEyOCAxNDEuNXQxMjEuNSA5Ni41dDkyLjUgNTMuNXQ4OCAzOS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkIwIiB1bmljb2RlPSImI3hmMmIwOyIgCmQ9Ik0xMzIyIDY0MHEwIC00NSAtNSAtNzZsLTIzNiAxNGwyMjQgLTc4cS0xOSAtNzMgLTU4IC0xNDFsLTIxNCAxMDNsMTc3IC0xNThxLTQ0IC02MSAtMTA3IC0xMDhsLTE1NyAxNzhsMTAzIC0yMTVxLTYxIC0zNyAtMTQwIC01OWwtNzkgMjI4bDE0IC0yNDBxLTM4IC02IC03NiAtNnQtNzYgNmwxNCAyMzhsLTc4IC0yMjZxLTc0IDE5IC0xNDAgNTlsMTAzIDIxNWwtMTU3IC0xNzhxLTU5IDQzIC0xMDggMTA4bDE3OCAxNThsLTIxNCAtMTA0CnEtMzkgNjkgLTU4IDE0MWwyMjQgNzlsLTIzNyAtMTRxLTUgNDIgLTUgNzZxMCAzNSA1IDc3bDIzOCAtMTRsLTIyNSA3OXExOSA3MyA1OCAxNDBsMjE0IC0xMDRsLTE3NyAxNTlxNDYgNjEgMTA3IDEwOGwxNTggLTE3OGwtMTAzIDIxNXE2NyAzOSAxNDAgNThsNzcgLTIyNGwtMTMgMjM2cTM2IDYgNzUgNnEzOCAwIDc2IC02bC0xNCAtMjM3bDc4IDIyNXE3NCAtMTkgMTQwIC01OWwtMTAzIC0yMTRsMTU4IDE3OHE2MSAtNDcgMTA3IC0xMDgKbC0xNzcgLTE1OWwyMTMgMTA0cTM3IC02MiA1OCAtMTQxbC0yMjQgLTc4bDIzNyAxNHE1IC0zMSA1IC03N3pNMTM1MiA2NDBxMCAxNjAgLTc4LjUgMjk1LjV0LTIxMyAyMTR0LTI5Mi41IDc4LjVxLTExOSAwIC0yMjcgLTQ2LjV0LTE4Ni41IC0xMjV0LTEyNC41IC0xODcuNXQtNDYgLTIyOXEwIC0xMTkgNDYgLTIyOHQxMjQuNSAtMTg3LjV0MTg2LjUgLTEyNXQyMjcgLTQ2LjVxMTU4IDAgMjkyLjUgNzguNXQyMTMgMjE0dDc4LjUgMjk0LjV6Ck0xNDI1IDEwMjN2LTc2NmwtNjU3IC0zODNsLTY1NyAzODN2NzY2bDY1NyAzODN6TTc2OCAtMTgzbDcwOCA0MTJ2ODIzbC03MDggNDExbC03MDggLTQxMXYtODIzek0xNTM2IDEwODh2LTg5NmwtNzY4IC00NDhsLTc2OCA0NDh2ODk2bDc2OCA0NDh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjEiIHVuaWNvZGU9IiYjeGYyYjE7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0zMzkgMTMxOGg2OTFsLTI2IC03MmgtNjY1cS0xMTAgMCAtMTg4LjUgLTc5dC03OC41IC0xODl2LTc3MXEwIC05NSA2MC41IC0xNjkuNXQxNTMuNSAtOTMuNXEyMyAtNSA5OCAtNXYtNzJoLTQ1cS0xNDAgMCAtMjM5LjUgMTAwdC05OS41IDI0MHY3NzFxMCAxNDAgOTkuNSAyNDB0MjM5LjUgMTAwek0xMTkwIDE1MzZoMjQ3bC00ODIgLTEyOTRxLTIzIC02MSAtNDAuNSAtMTAzLjV0LTQ1IC05OHQtNTQgLTkzLjV0LTY0LjUgLTc4LjUKdC03OS41IC02NXQtOTUuNSAtNDF0LTExNiAtMTguNXYxOTVxMTYzIDI2IDIyMCAxODJxMjAgNTIgMjAgMTA1cTAgNTQgLTIwIDEwNmwtMjg1IDczM2gyMjhsMTg3IC01ODV6TTE2NjQgOTc4di0xMTExaC03OTVxMzcgNTUgNDUgNzNoNjc4djEwMzhxMCA4NSAtNDkuNSAxNTV0LTEyOS41IDk5bDI1IDY3cTEwMSAtMzQgMTYzLjUgLTEyMy41dDYyLjUgLTE5Ny41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkIyIiB1bmljb2RlPSImI3hmMmIyOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNODUyIDEyMjdxMCAtMjkgLTE3IC01Mi41dC00NSAtMjMuNXQtNDUgMjMuNXQtMTcgNTIuNXQxNyA1Mi41dDQ1IDIzLjV0NDUgLTIzLjV0MTcgLTUyLjV6TTY4OCAtMTQ5djExNHEwIDMwIC0yMC41IDUxLjV0LTUwLjUgMjEuNXQtNTAgLTIxLjV0LTIwIC01MS41di0xMTRxMCAtMzAgMjAuNSAtNTJ0NDkuNSAtMjJxMzAgMCA1MC41IDIydDIwLjUgNTJ6TTg2MCAtMTQ5djExNHEwIDMwIC0yMCA1MS41dC01MCAyMS41dC01MC41IC0yMS41CnQtMjAuNSAtNTEuNXYtMTE0cTAgLTMwIDIwLjUgLTUydDUwLjUgLTIycTI5IDAgNDkuNSAyMnQyMC41IDUyek0xMDM0IC0xNDl2MTE0cTAgMzAgLTIwLjUgNTEuNXQtNTAuNSAyMS41dC01MC41IC0yMS41dC0yMC41IC01MS41di0xMTRxMCAtMzAgMjAuNSAtNTJ0NTAuNSAtMjJ0NTAuNSAyMnQyMC41IDUyek0xMjA4IC0xNDl2MTE0cTAgMzAgLTIwLjUgNTEuNXQtNTAuNSAyMS41dC01MC41IC0yMS41dC0yMC41IC01MS41di0xMTQKcTAgLTMwIDIwLjUgLTUydDUwLjUgLTIydDUwLjUgMjJ0MjAuNSA1MnpNMTQ3NiA1MzVxLTg0IC0xNjAgLTIzMiAtMjU5LjV0LTMyMyAtOTkuNXEtMTIzIDAgLTIyOS41IDUxLjV0LTE3OC41IDEzN3QtMTEzIDE5Ny41dC00MSAyMzJxMCA4OCAyMSAxNzRxLTEwNCAtMTc1IC0xMDQgLTM5MHEwIC0xNjIgNjUgLTMxMnQxODUgLTI1MXEzMCA1NyA5MSA1N3E1NiAwIDg2IC01MHEzMiA1MCA4NyA1MHE1NiAwIDg2IC01MHEzMiA1MCA4NyA1MHQ4NyAtNTAKcTMwIDUwIDg2IDUwcTI4IDAgNTIuNSAtMTUuNXQzNy41IC00MC41cTExMiA5NCAxNzcgMjMxLjV0NzMgMjg3LjV6TTEzMjYgNTY0cTAgNzUgLTcyIDc1cS0xNyAwIC00NyAtNnEtOTUgLTE5IC0xNDkgLTE5cS0yMjYgMCAtMjI2IDI0M3EwIDg2IDMwIDIwNHEtODMgLTEyNyAtODMgLTI3NXEwIC0xNTAgODkgLTI2MC41dDIzNSAtMTEwLjVxMTExIDAgMjEwIDcwcTEzIDQ4IDEzIDc5ek04ODQgMTIyM3EwIDUwIC0zMiA4OS41dC04MSAzOS41CnQtODEgLTM5LjV0LTMyIC04OS41cTAgLTUxIDMxLjUgLTkwLjV0ODEuNSAtMzkuNXQ4MS41IDM5LjV0MzEuNSA5MC41ek0xNTEzIDg4NHEwIDk2IC0zNy41IDE3OXQtMTEzIDEzN3QtMTczLjUgNTRxLTc3IDAgLTE0OSAtMzV0LTEyNyAtOTRxLTQ4IC0xNTkgLTQ4IC0yNjhxMCAtMTA0IDQ1LjUgLTE1N3QxNDcuNSAtNTNxNTMgMCAxNDIgMTlxMzYgNiA1MyA2cTUxIDAgNzcuNSAtMjh0MjYuNSAtODBxMCAtMjYgLTQgLTQ2CnE3NSA2OCAxMTcuNSAxNjUuNXQ0Mi41IDIwMC41ek0xNzkyIDY2N3EwIC0xMTEgLTMzLjUgLTI0OS41dC05My41IC0yMDQuNXEtNTggLTY0IC0xOTUgLTE0Mi41dC0yMjggLTEwNC41bC00IC0xdi0xMTRxMCAtNDMgLTI5LjUgLTc1dC03Mi41IC0zMnEtNTYgMCAtODYgNTBxLTMyIC01MCAtODcgLTUwdC04NyA1MHEtMzAgLTUwIC04NiAtNTBxLTU1IDAgLTg3IDUwcS0zMCAtNTAgLTg2IC01MHEtNDcgMCAtNzUgMzMuNXQtMjggODEuNQpxLTkwIC02OCAtMTk4IC02OHEtMTE4IDAgLTIxMSA4MHE1NCAxIDEwNiAyMHEtMTEzIDMxIC0xODIgMTI3cTMyIC03IDcxIC03cTg5IDAgMTY0IDQ2cS0xOTIgMTkyIC0yNDAgMzA2cS0yNCA1NiAtMjQgMTYwcTAgNTcgOSAxMjUuNXQzMS41IDE0Ni41dDU1IDE0MXQ4Ni41IDEwNXQxMjAgNDJxNTkgMCA4MSAtNTJxMTkgMjkgNDIgNTRxMiAzIDEyIDEzdDEzIDE2cTEwIDE1IDIzIDM4dDI1IDQydDI4IDM5cTg3IDExMSAyMTEuNSAxNzcKdDI2MC41IDY2cTM1IDAgNjIgLTRxNTkgNjQgMTQ2IDY0cTgzIDAgMTQwIC01N3E1IC01IDUgLTEycTAgLTUgLTYgLTEzLjV0LTEyLjUgLTE2dC0xNiAtMTdsLTEwLjUgLTEwLjVxMTcgLTYgMzYgLTE4dDE5IC0yNHEwIC02IC0xNiAtMjVxMTU3IC0xMzggMTk3IC0zNzhxMjUgMzAgNjAgMzBxNDUgMCAxMDAgLTQ5cTkwIC04MCA5MCAtMjc5eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkIzIiB1bmljb2RlPSImI3hmMmIzOyIgCmQ9Ik05MTcgNjMxcTAgMzMgLTYgNjRoLTM2MnYtMTMyaDIxN3EtMTIgLTc2IC03NC41IC0xMjAuNXQtMTQyLjUgLTQ0LjVxLTk5IDAgLTE2OSA3MS41dC03MCAxNzAuNXQ3MCAxNzAuNXQxNjkgNzEuNXE5MyAwIDE1MyAtNTlsMTA0IDEwMXEtMTA4IDEwMCAtMjU3IDEwMHEtMTYwIDAgLTI3MiAtMTEyLjV0LTExMiAtMjcxLjV0MTEyIC0yNzEuNXQyNzIgLTExMi41cTE2NSAwIDI2Ni41IDEwNXQxMDEuNSAyNzB6TTEyNjIgNTg1aDEwOXYxMTAKaC0xMDl2MTEwaC0xMTB2LTExMGgtMTEwdi0xMTBoMTEwdi0xMTBoMTEwdjExMHpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjQiIHVuaWNvZGU9IiYjeGYyYjQ7IiAKZD0iTTE1MzYgMTAyNHYtODM5cTAgLTQ4IC00OSAtNjJxLTE3NCAtNTIgLTMzOCAtNTJxLTczIDAgLTIxNS41IDI5LjV0LTIyNy41IDI5LjVxLTE2NCAwIC0zNzAgLTQ4di0zMzhoLTE2MHYxMzY4cS02MyAyNSAtMTAxIDgxdC0zOCAxMjRxMCA5MSA2NCAxNTV0MTU1IDY0dDE1NSAtNjR0NjQgLTE1NXEwIC02OCAtMzggLTEyNHQtMTAxIC04MXYtNjhxMTkwIDQ0IDM0MyA0NHE5OSAwIDE5OCAtMTVxMTQgLTIgMTExLjUgLTIyLjV0MTQ5LjUgLTIwLjUKcTc3IDAgMTY1IDE4cTExIDIgODAgMjF0ODkgMTlxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkI1IiB1bmljb2RlPSImI3hmMmI1OyIgaG9yaXotYWR2LXg9IjIzMDQiIApkPSJNMTkyIDM4NHE0MCAwIDU2IDMydDAgNjR0LTU2IDMydC01NiAtMzJ0MCAtNjR0NTYgLTMyek0xNjY1IDQ0MnEtMTAgMTMgLTM4LjUgNTB0LTQxLjUgNTR0LTM4IDQ5dC00Mi41IDUzdC00MC41IDQ3dC00NSA0OWwtMTI1IC0xNDBxLTgzIC05NCAtMjA4LjUgLTkydC0yMDUuNSA5OHEtNTcgNjkgLTU2LjUgMTU4dDU4LjUgMTU3bDE3NyAyMDZxLTIyIDExIC01MSAxNi41dC00Ny41IDZ0LTU2LjUgLTAuNXQtNDkgLTFxLTkyIDAgLTE1OCAtNjYKbC0xNTggLTE1OGgtMTU1di01NDRxNSAwIDIxIDAuNXQyMiAwdDE5LjUgLTJ0MjAuNSAtNC41dDE3LjUgLTguNXQxOC41IC0xMy41bDI5NyAtMjkycTExNSAtMTExIDIyNyAtMTExcTc4IDAgMTI1IDQ3cTU3IC0yMCAxMTIuNSA4dDcyLjUgODVxNzQgLTYgMTI3IDQ0cTIwIDE4IDM2IDQ1LjV0MTQgNTAuNXExMCAtMTAgNDMgLTEwcTQzIDAgNzcgMjF0NDkuNSA1M3QxMiA3MS41dC0zMC41IDczLjV6TTE4MjQgMzg0aDk2djUxMmgtOTNsLTE1NyAxODAKcS02NiA3NiAtMTY5IDc2aC0xNjdxLTg5IDAgLTE0NiAtNjdsLTIwOSAtMjQzcS0yOCAtMzMgLTI4IC03NXQyNyAtNzVxNDMgLTUxIDExMCAtNTJ0MTExIDQ5bDE5MyAyMThxMjUgMjMgNTMuNSAyMS41dDQ3IC0yN3Q4LjUgLTU2LjVxMTYgLTE5IDU2IC02M3Q2MCAtNjhxMjkgLTM2IDgyLjUgLTEwNS41dDY0LjUgLTg0LjVxNTIgLTY2IDYwIC0xNDB6TTIxMTIgMzg0cTQwIDAgNTYgMzJ0MCA2NHQtNTYgMzJ0LTU2IC0zMnQwIC02NHQ1NiAtMzJ6Ck0yMzA0IDk2MHYtNjQwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNDM0cS0yNyAtNjUgLTgyIC0xMDYuNXQtMTI1IC01MS41cS0zMyAtNDggLTgwLjUgLTgxLjV0LTEwMi41IC00NS41cS00MiAtNTMgLTEwNC41IC04MS41dC0xMjguNSAtMjQuNXEtNjAgLTM0IC0xMjYgLTM5LjV0LTEyNy41IDE0dC0xMTcgNTMuNXQtMTAzLjUgODFsLTI4NyAyODJoLTM1OHEtMjYgMCAtNDUgMTl0LTE5IDQ1djY3MnEwIDI2IDE5IDQ1dDQ1IDE5aDQyMQpxMTQgMTQgNDcgNDh0NDcuNSA0OHQ0NCA0MHQ1MC41IDM3LjV0NTEgMjUuNXQ2MiAxOS41dDY4IDUuNWgxMTdxOTkgMCAxODEgLTU2cTgyIDU2IDE4MSA1NmgxNjdxMzUgMCA2NyAtNnQ1Ni41IC0xNC41dDUxLjUgLTI2LjV0NDQuNSAtMzF0NDMgLTM5LjV0MzkgLTQydDQxIC00OHQ0MS41IC00OC41aDM1NXEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjYiIHVuaWNvZGU9IiYjeGYyYjY7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNzkyIDg4MnYtOTc4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NzhxMCAxNSAxMSAyNHE4IDcgMzkgMzQuNXQ0MS41IDM2dDQ1LjUgMzcuNXQ3MCA1NS41dDk2IDczdDE0My41IDEwN3QxOTIuNSAxNDAuNXE1IDQgNTIuNSA0MHQ3MS41IDUyLjV0NjQgMzV0NjkgMTguNXQ2OSAtMTguNXQ2NSAtMzUuNXQ3MSAtNTJ0NTIgLTQwcTExMCAtODAgMTkyLjUgLTE0MC41dDE0My41IC0xMDcKdDk2IC03M3Q3MCAtNTUuNXQ0NS41IC0zNy41dDQxLjUgLTM2dDM5IC0zNC41cTExIC05IDExIC0yNHpNMTIyOCAyOTdxMjYzIDE5MSAzNDUgMjUycTExIDggMTIuNSAyMC41dC02LjUgMjMuNWwtMzggNTJxLTggMTEgLTIxIDEyLjV0LTI0IC02LjVxLTIzMSAtMTY5IC0zNDMgLTI1MHEtNSAtMyAtNTIgLTM5dC03MS41IC01Mi41dC02NC41IC0zNXQtNjkgLTE4LjV0LTY5IDE4LjV0LTY0LjUgMzV0LTcxLjUgNTIuNXQtNTIgMzkKcS0xODYgMTM0IC0zNDMgMjUwcS0xMSA4IC0yNCA2LjV0LTIxIC0xMi41bC0zOCAtNTJxLTggLTExIC02LjUgLTIzLjV0MTIuNSAtMjAuNXE4MiAtNjEgMzQ1IC0yNTJxMTAgLTggNTAgLTM4dDY1IC00N3Q2NCAtMzkuNXQ3Ny41IC0zMy41dDc1LjUgLTExdDc1LjUgMTF0NzkgMzQuNXQ2NC41IDM5LjV0NjUgNDcuNXQ0OCAzNi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkI3IiB1bmljb2RlPSImI3hmMmI3OyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTQ3NCA2MjNsMzkgLTUxcTggLTExIDYuNSAtMjMuNXQtMTEuNSAtMjAuNXEtNDMgLTM0IC0xMjYuNSAtOTguNXQtMTQ2LjUgLTExM3QtNjcgLTUxLjVxLTM5IC0zMiAtNjAgLTQ4dC02MC41IC00MXQtNzYuNSAtMzYuNXQtNzQgLTExLjVoLTFoLTFxLTM3IDAgLTc0IDExLjV0LTc2IDM2LjV0LTYxIDQxLjV0LTYwIDQ3LjVxLTUgNCAtNjUgNTAuNXQtMTQzLjUgMTExdC0xMjIuNSA5NC41cS0xMSA4IC0xMi41IDIwLjV0Ni41IDIzLjUKbDM3IDUycTggMTEgMjEuNSAxM3QyNC41IC03cTk0IC03MyAzMDYgLTIzNnE1IC00IDQzLjUgLTM1dDYwLjUgLTQ2LjV0NTYuNSAtMzIuNXQ1OC41IC0xN2gxaDFxMjQgMCA1OC41IDE3dDU2LjUgMzIuNXQ2MC41IDQ2LjV0NDMuNSAzNXEyNTggMTk4IDMxMyAyNDJxMTEgOCAyNCA2LjV0MjEgLTEyLjV6TTE2NjQgLTk2djkyOHEtOTAgODMgLTE1OSAxMzlxLTkxIDc0IC0zODkgMzA0cS0zIDIgLTQzIDM1dC02MSA0OHQtNTYgMzIuNXQtNTkgMTcuNQpoLTFoLTFxLTI0IDAgLTU5IC0xNy41dC01NiAtMzIuNXQtNjEgLTQ4dC00MyAtMzVxLTIxNSAtMTY2IC0zMTUuNSAtMjQ1LjV0LTEyOS41IC0xMDR0LTgyIC03NC41cS0xNCAtMTIgLTIxIC0xOXYtOTI4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTQ3MnExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNzkyIDgzMnYtOTI4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5MjhxMCA1NiA0MSA5NApxMTIzIDExNCAzNTAgMjkwLjV0MjMzIDE4MS41cTM2IDMwIDU5IDQ3LjV0NjEuNSA0MnQ3NiAzNi41dDc0LjUgMTJoMWgxcTM3IDAgNzQuNSAtMTJ0NzYgLTM2LjV0NjEuNSAtNDJ0NTkgLTQ3LjVxNDMgLTM2IDE1NiAtMTIydDIyNiAtMTc3dDIwMSAtMTczcTQxIC0zOCA0MSAtOTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjgiIHVuaWNvZGU9IiYjeGYyYjg7IiAKZD0iTTMzMCAxbDIwMiAtMjE0bC0zNCAyMzZsLTIxNiAyMTN6TTU1NiAtMjI1bDI3NCAyMThsLTExIDI0NWwtMzAwIC0yMTV6TTI0NSA0MTNsMjI3IC0yMTNsLTQ4IDMyN2wtMjQ1IDIwNHpNNDk1IDE4OWwzMTcgMjE0bC0xNCAzMjRsLTM1MiAtMjAwek04NDMgMTc4bDk1IC04MGwtMiAyMzlsLTEwMyA3OXEwIC0xIDEgLTguNXQwIC0xMnQtNSAtNy41bC03OCAtNTJsODUgLTcwcTcgLTYgNyAtODh6TTEzOCA5MzBsMjU2IC0yMDBsLTY4IDQ2NQpsLTI3OSAxNzN6TTExNzMgMjY3bDE1IDIzNGwtMjMwIC0xNjRsMiAtMjQwek00MTcgNzIybDM3MyAxOTRsLTE5IDQ0MWwtNDIzIC0xNjN6TTEyNzAgMzU3bDIwIDIzM2wtMjI2IDE0MmwtMiAtMTA1bDE0NCAtOTVxNiAtNCA0IC05bC03IC0xMTl6TTE0NjEgNDk2bDMwIDIyMmwtMTc5IC0xMjhsLTIwIC0yMjh6TTEyNzMgMzI5bC03MSA0OWwtOCAtMTE3cTAgLTUgLTQgLThsLTIzNCAtMTg3cS03IC01IC0xNCAwbC05OCA4M2w3IC0xNjEKcTAgLTUgLTQgLThsLTI5MyAtMjM0cS00IC0yIC02IC0ycS04IDIgLTggM2wtMjI4IDI0MnEtNCA0IC01OSAyNzdxLTIgNyA1IDExbDYxIDM3cS05NCA4NiAtOTUgOTJsLTcyIDM1MXEtMiA3IDYgMTJsOTQgNDVxLTEzMyAxMDAgLTEzNSAxMDhsLTk2IDQ2NnEtMiAxMCA3IDEzbDQzMyAxMzVxNSAwIDggLTFsMzE3IC0xNTNxNiAtNCA2IC05bDIwIC00NjNxMCAtNyAtNiAtMTBsLTExOCAtNjFsMTI2IC04NXE1IC0yIDUgLThsNSAtMTIzbDEyMSA3NApxNSA0IDExIDBsODQgLTU2bDMgMTEwcTAgNiA1IDlsMjA2IDEyNnE2IDMgMTEgMGwyNDUgLTEzNXE0IC00IDUgLTd0LTYuNSAtNjB0LTE3LjUgLTEyNC41dC0xMCAtNzAuNXEwIC01IC00IC03bC0xOTEgLTE1M3EtNiAtNSAtMTMgMHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCOSIgdW5pY29kZT0iJiN4ZjJiOTsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTEyMDEgMjk4cTAgNTcgLTUuNSAxMDd0LTIxIDEwMC41dC0zOS41IDg2dC02NCA1OHQtOTEgMjIuNXEtNiAtNCAtMzMuNSAtMjAuNXQtNDIuNSAtMjQuNXQtNDAuNSAtMjB0LTQ5IC0xN3QtNDYuNSAtNXQtNDYuNSA1dC00OSAxN3QtNDAuNSAyMHQtNDIuNSAyNC41dC0zMy41IDIwLjVxLTUxIDAgLTkxIC0yMi41dC02NCAtNTh0LTM5LjUgLTg2dC0yMSAtMTAwLjV0LTUuNSAtMTA3cTAgLTczIDQyIC0xMjEuNXQxMDMgLTQ4LjVoNTc2CnE2MSAwIDEwMyA0OC41dDQyIDEyMS41ek0xMDI4IDg5MnEwIDEwOCAtNzYuNSAxODR0LTE4My41IDc2dC0xODMuNSAtNzZ0LTc2LjUgLTE4NHEwIC0xMDcgNzYuNSAtMTgzdDE4My41IC03NnQxODMuNSA3NnQ3Ni41IDE4M3pNMTY2NCAzNTJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtMjI0cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxNDcycTAgNjYgNDcgMTEzdDExMyA0N2gxMjE2CnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMjI0aDk2cTE0IDAgMjMgLTl0OSAtMjN2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtMTI4aDk2cTE0IDAgMjMgLTl0OSAtMjN2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtMTI4aDk2cTE0IDAgMjMgLTl0OSAtMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQkEiIHVuaWNvZGU9IiYjeGYyYmE7IiBob3Jpei1hZHYteD0iMTY2NCIgCmQ9Ik0xMDI4IDg5MnEwIC0xMDcgLTc2LjUgLTE4M3QtMTgzLjUgLTc2dC0xODMuNSA3NnQtNzYuNSAxODNxMCAxMDggNzYuNSAxODR0MTgzLjUgNzZ0MTgzLjUgLTc2dDc2LjUgLTE4NHpNOTgwIDY3MnE0NiAwIDgyLjUgLTE3dDYwIC00Ny41dDM5LjUgLTY3dDI0IC04MXQxMS41IC04Mi41dDMuNSAtNzlxMCAtNjcgLTM5LjUgLTExOC41dC0xMDUuNSAtNTEuNWgtNTc2cS02NiAwIC0xMDUuNSA1MS41dC0zOS41IDExOC41cTAgNDggNC41IDkzLjUKdDE4LjUgOTguNXQzNi41IDkxLjV0NjMgNjQuNXQ5My41IDI2aDVxNyAtNCAzMiAtMTkuNXQzNS41IC0yMXQzMyAtMTd0MzcgLTE2dDM1IC05dDM5LjUgLTQuNXQzOS41IDQuNXQzNSA5dDM3IDE2dDMzIDE3dDM1LjUgMjF0MzIgMTkuNXpNMTY2NCA5MjhxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC05NnYtMTI4aDk2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTZ2LTEyOGg5NgpxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC05NnYtMjI0cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxNDcycTAgNjYgNDcgMTEzdDExMyA0N2gxMjE2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0yMjRoOTZxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJ6TTE0MDggLTk2djE0NzJxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC0xMjE2CnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTE0NzJxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxMjE2cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQkIiIHVuaWNvZGU9IiYjeGYyYmI7IiBob3Jpei1hZHYteD0iMjA0OCIgCmQ9Ik0xMDI0IDQwNXEwIDY0IC05IDExNy41dC0yOS41IDEwM3QtNjAuNSA3OHQtOTcgMjguNXEtNiAtNCAtMzAgLTE4dC0zNy41IC0yMS41dC0zNS41IC0xNy41dC00MyAtMTQuNXQtNDIgLTQuNXQtNDIgNC41dC00MyAxNC41dC0zNS41IDE3LjV0LTM3LjUgMjEuNXQtMzAgMThxLTU3IDAgLTk3IC0yOC41dC02MC41IC03OHQtMjkuNSAtMTAzdC05IC0xMTcuNXQzNyAtMTA2LjV0OTEgLTQyLjVoNTEycTU0IDAgOTEgNDIuNXQzNyAxMDYuNXoKTTg2NyA5MjVxMCA5NCAtNjYuNSAxNjAuNXQtMTYwLjUgNjYuNXQtMTYwLjUgLTY2LjV0LTY2LjUgLTE2MC41dDY2LjUgLTE2MC41dDE2MC41IC02Ni41dDE2MC41IDY2LjV0NjYuNSAxNjAuNXpNMTc5MiA0MTZ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNTc2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDU3NnExNCAwIDIzIDl0OSAyM3pNMTc5MiA2NzZ2NTZxMCAxNSAtMTAuNSAyNS41dC0yNS41IDEwLjVoLTU2OApxLTE1IDAgLTI1LjUgLTEwLjV0LTEwLjUgLTI1LjV2LTU2cTAgLTE1IDEwLjUgLTI1LjV0MjUuNSAtMTAuNWg1NjhxMTUgMCAyNS41IDEwLjV0MTAuNSAyNS41ek0xNzkyIDkyOHY2NHEwIDE0IC05IDIzdC0yMyA5aC01NzZxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNTc2cTE0IDAgMjMgOXQ5IDIzek0yMDQ4IDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTM1MnY5NnEwIDE0IC05IDIzdC0yMyA5CmgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtOTZoLTc2OHY5NnEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi05NmgtMzUycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxNzI4cTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkJDIiB1bmljb2RlPSImI3hmMmJjOyIgaG9yaXotYWR2LXg9IjIwNDgiIApkPSJNMTAyNCA0MDVxMCAtNjQgLTM3IC0xMDYuNXQtOTEgLTQyLjVoLTUxMnEtNTQgMCAtOTEgNDIuNXQtMzcgMTA2LjV0OSAxMTcuNXQyOS41IDEwM3Q2MC41IDc4dDk3IDI4LjVxNiAtNCAzMCAtMTh0MzcuNSAtMjEuNXQzNS41IC0xNy41dDQzIC0xNC41dDQyIC00LjV0NDIgNC41dDQzIDE0LjV0MzUuNSAxNy41dDM3LjUgMjEuNXQzMCAxOHE1NyAwIDk3IC0yOC41dDYwLjUgLTc4dDI5LjUgLTEwM3Q5IC0xMTcuNXpNODY3IDkyNQpxMCAtOTQgLTY2LjUgLTE2MC41dC0xNjAuNSAtNjYuNXQtMTYwLjUgNjYuNXQtNjYuNSAxNjAuNXQ2Ni41IDE2MC41dDE2MC41IDY2LjV0MTYwLjUgLTY2LjV0NjYuNSAtMTYwLjV6TTE3OTIgNDgwdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC01NzZxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNTc2cTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgNzMydi01NnEwIC0xNSAtMTAuNSAtMjUuNXQtMjUuNSAtMTAuNWgtNTY4CnEtMTUgMCAtMjUuNSAxMC41dC0xMC41IDI1LjV2NTZxMCAxNSAxMC41IDI1LjV0MjUuNSAxMC41aDU2OHExNSAwIDI1LjUgLTEwLjV0MTAuNSAtMjUuNXpNMTc5MiA5OTJ2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTU3NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg1NzZxMTQgMCAyMyAtOXQ5IC0yM3pNMTkyMCAzMnYxMjE2cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTcyOHEtMTMgMCAtMjIuNSAtOS41CnQtOS41IC0yMi41di0xMjE2cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMzUydjk2cTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN2LTk2aDc2OHY5NnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi05NmgzNTJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMjA0OCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNzI4cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzCnQxMTMgNDdoMTcyOHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCRCIgdW5pY29kZT0iJiN4ZjJiZDsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE1MjMgMTk3cS0yMiAxNTUgLTg3LjUgMjU3LjV0LTE4NC41IDExOC41cS02NyAtNzQgLTE1OS41IC0xMTUuNXQtMTk1LjUgLTQxLjV0LTE5NS41IDQxLjV0LTE1OS41IDExNS41cS0xMTkgLTE2IC0xODQuNSAtMTE4LjV0LTg3LjUgLTI1Ny41cTEwNiAtMTUwIDI3MSAtMjM3LjV0MzU2IC04Ny41dDM1NiA4Ny41dDI3MSAyMzcuNXpNMTI4MCA4OTZxMCAxNTkgLTExMi41IDI3MS41dC0yNzEuNSAxMTIuNXQtMjcxLjUgLTExMi41CnQtMTEyLjUgLTI3MS41dDExMi41IC0yNzEuNXQyNzEuNSAtMTEyLjV0MjcxLjUgMTEyLjV0MTEyLjUgMjcxLjV6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0Ny41dC0xOTAuNSAtMjg2dC0yODUuNSAtMTkxLjV0LTM0OSAtNzFxLTE4MiAwIC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQkUiIHVuaWNvZGU9IiYjeGYyYmU7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik04OTYgMTUzNnExODIgMCAzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDhxMCAtMTgxIC03MC41IC0zNDd0LTE5MC41IC0yODZ0LTI4NiAtMTkxLjV0LTM0OSAtNzEuNXQtMzQ5IDcxdC0yODUuNSAxOTEuNXQtMTkwLjUgMjg2dC03MSAzNDcuNXQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXpNMTUxNSAxODVxMTQ5IDIwNSAxNDkgNDU1cTAgMTU2IC02MSAyOTh0LTE2NCAyNDV0LTI0NSAxNjR0LTI5OCA2MXQtMjk4IC02MQp0LTI0NSAtMTY0dC0xNjQgLTI0NXQtNjEgLTI5OHEwIC0yNTAgMTQ5IC00NTVxNjYgMzI3IDMwNiAzMjdxMTMxIC0xMjggMzEzIC0xMjh0MzEzIDEyOHEyNDAgMCAzMDYgLTMyN3pNMTI4MCA4MzJxMCAxNTkgLTExMi41IDI3MS41dC0yNzEuNSAxMTIuNXQtMjcxLjUgLTExMi41dC0xMTIuNSAtMjcxLjV0MTEyLjUgLTI3MS41dDI3MS41IC0xMTIuNXQyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDMCIgdW5pY29kZT0iJiN4ZjJjMDsiIApkPSJNMTIwMSA3NTJxNDcgLTE0IDg5LjUgLTM4dDg5IC03M3Q3OS41IC0xMTUuNXQ1NSAtMTcydDIyIC0yMzYuNXEwIC0xNTQgLTEwMCAtMjYzLjV0LTI0MSAtMTA5LjVoLTg1NHEtMTQxIDAgLTI0MSAxMDkuNXQtMTAwIDI2My41cTAgMTMxIDIyIDIzNi41dDU1IDE3MnQ3OS41IDExNS41dDg5IDczdDg5LjUgMzhxLTc5IDEyNSAtNzkgMjcycTAgMTA0IDQwLjUgMTk4LjV0MTA5LjUgMTYzLjV0MTYzLjUgMTA5LjV0MTk4LjUgNDAuNQp0MTk4LjUgLTQwLjV0MTYzLjUgLTEwOS41dDEwOS41IC0xNjMuNXQ0MC41IC0xOTguNXEwIC0xNDcgLTc5IC0yNzJ6TTc2OCAxNDA4cS0xNTkgMCAtMjcxLjUgLTExMi41dC0xMTIuNSAtMjcxLjV0MTEyLjUgLTI3MS41dDI3MS41IC0xMTIuNXQyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXQtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41ek0xMTk1IC0xMjhxODggMCAxNTAuNSA3MS41dDYyLjUgMTczLjVxMCAyMzkgLTc4LjUgMzc3dC0yMjUuNSAxNDUKcS0xNDUgLTEyNyAtMzM2IC0xMjd0LTMzNiAxMjdxLTE0NyAtNyAtMjI1LjUgLTE0NXQtNzguNSAtMzc3cTAgLTEwMiA2Mi41IC0xNzMuNXQxNTAuNSAtNzEuNWg4NTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzEiIHVuaWNvZGU9IiYjeGYyYzE7IiBob3Jpei1hZHYteD0iMTI4MCIgCmQ9Ik0xMDI0IDI3OHEwIC02NCAtMzcgLTEwN3QtOTEgLTQzaC01MTJxLTU0IDAgLTkxIDQzdC0zNyAxMDd0OSAxMTh0MjkuNSAxMDR0NjEgNzguNXQ5Ni41IDI4LjVxODAgLTc1IDE4OCAtNzV0MTg4IDc1cTU2IDAgOTYuNSAtMjguNXQ2MSAtNzguNXQyOS41IC0xMDR0OSAtMTE4ek04NzAgNzk3cTAgLTk0IC02Ny41IC0xNjAuNXQtMTYyLjUgLTY2LjV0LTE2Mi41IDY2LjV0LTY3LjUgMTYwLjV0NjcuNSAxNjAuNXQxNjIuNSA2Ni41CnQxNjIuNSAtNjYuNXQ2Ny41IC0xNjAuNXpNMTE1MiAtOTZ2MTM3NmgtMTAyNHYtMTM3NnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDk2MHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMjgwIDEzNzZ2LTE0NzJxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTk2MHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTQ3MnEwIDY2IDQ3IDExM3QxMTMgNDdoMzUydi05NnEwIC0xNCA5IC0yM3QyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN2OTZoMzUyCnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDMiIgdW5pY29kZT0iJiN4ZjJjMjsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTg5NiAzMjRxMCA1NCAtNy41IDEwMC41dC0yNC41IDkwdC01MSA2OC41dC04MSAyNXEtNjQgLTY0IC0xNTYgLTY0dC0xNTYgNjRxLTQ3IDAgLTgxIC0yNXQtNTEgLTY4LjV0LTI0LjUgLTkwdC03LjUgLTEwMC41cTAgLTU1IDMxLjUgLTkzLjV0NzUuNSAtMzguNWg0MjZxNDQgMCA3NS41IDM4LjV0MzEuNSA5My41ek03NjggNzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnQxMzYgNTYKdDU2IDEzNnpNMTc5MiAyODh2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNzA0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDcwNHExNCAwIDIzIDl0OSAyM3pNMTQwOCA1NDR2NjRxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDMyMHExNCAwIDIzIDl0OSAyM3pNMTc5MiA1NDR2NjRxMCAxNCAtOSAyM3QtMjMgOWgtMTkycS0xNCAwIC0yMyAtOXQtOSAtMjMKdi02NHEwIC0xNCA5IC0yM3QyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN6TTE3OTIgODAwdjY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDRxMTQgMCAyMyA5dDkgMjN6TTEyOCAxMTUyaDE3OTJ2OTZxMCAxNCAtOSAyM3QtMjMgOWgtMTcyOHEtMTQgMCAtMjMgLTl0LTkgLTIzdi05NnpNMjA0OCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNzI4CnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExM3QxMTMgNDdoMTcyOHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDMyIgdW5pY29kZT0iJiN4ZjJjMzsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTg5NiAzMjRxMCAtNTUgLTMxLjUgLTkzLjV0LTc1LjUgLTM4LjVoLTQyNnEtNDQgMCAtNzUuNSAzOC41dC0zMS41IDkzLjVxMCA1NCA3LjUgMTAwLjV0MjQuNSA5MHQ1MSA2OC41dDgxIDI1cTY0IC02NCAxNTYgLTY0dDE1NiA2NHE0NyAwIDgxIC0yNXQ1MSAtNjguNXQyNC41IC05MHQ3LjUgLTEwMC41ek03NjggNzY4cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnoKTTE3OTIgMzUydi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC03MDRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNzA0cTE0IDAgMjMgLTl0OSAtMjN6TTE0MDggNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMzIwcTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2NjQKcTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNzkyIDg2NHYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDcwNHExNCAwIDIzIC05dDkgLTIzek0xOTIwIDMydjExMjBoLTE3OTJ2LTExMjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxNzI4cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTIwNDggMTI0OHYtMTIxNnEwIC02NiAtNDcgLTExM3QtMTEzIC00NwpoLTE3MjhxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE3MjhxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzQiIHVuaWNvZGU9IiYjeGYyYzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMjU1IDc0OXEwIDMxOCAtMTA1IDQ3NC41dC0zMzAgMTU2LjVxLTIyMiAwIC0zMjYgLTE1N3QtMTA0IC00NzRxMCAtMzE2IDEwNCAtNDcxLjV0MzI2IC0xNTUuNXE3NCAwIDEzMSAxN3EtMjIgNDMgLTM5IDczdC00NCA2NXQtNTMuNSA1Ni41dC02MyAzNnQtNzcuNSAxNC41cS00NiAwIC03OSAtMTZsLTQ5IDk3cTEwNSA5MSAyNzYgOTFxMTMyIDAgMjE1LjUgLTU0dDE1MC41IC0xNTVxNjcgMTQ5IDY3IDQwMnpNMTY0NSAxMTdoMTE3CnEzIC0yNyAtMiAtNjd0LTI2LjUgLTk1dC01OCAtMTAwLjV0LTEwNyAtNzh0LTE2Mi41IC0zMi41cS03MSAwIC0xMzAuNSAxOXQtMTA1LjUgNTZ0LTc5IDc4dC02NiA5NnEtOTcgLTI3IC0yMDUgLTI3cS0xNTAgMCAtMjkyLjUgNTh0LTI1MyAxNTguNXQtMTc4IDI0OXQtNjcuNSAzMTcuNXEwIDE3MCA2Ny41IDMxOS41dDE3OC41IDI1MC41dDI1My41IDE1OXQyOTEuNSA1OHExMjEgMCAyMzguNSAtMzZ0MjE3IC0xMDZ0MTc2IC0xNjQuNQp0MTE5LjUgLTIxOXQ0MyAtMjYxLjVxMCAtMTkwIC04MC41IC0zNDcuNXQtMjE4LjUgLTI2NC41cTQ3IC03MCA5My41IC0xMDYuNXQxMDQuNSAtMzYuNXE2MSAwIDk0IDM3LjV0MzggODUuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDNSIgdW5pY29kZT0iJiN4ZjJjNTsiIGhvcml6LWFkdi14PSIyMzA0IiAKZD0iTTQ1MyAtMTAxcTAgLTIxIC0xNiAtMzcuNXQtMzcgLTE2LjVxLTEgMCAtMTMgM3EtNjMgMTUgLTE2MiAxNDBxLTIyNSAyODQgLTIyNSA2NzZxMCAzNDEgMjEzIDYxNHEzOSA1MSA5NSAxMDMuNXQ5NCA1Mi41cTE5IDAgMzUgLTEzLjV0MTYgLTMyLjVxMCAtMjcgLTYzIC05MHEtOTggLTEwMiAtMTQ3IC0xODRxLTExOSAtMTk5IC0xMTkgLTQ0OXEwIC0yODEgMTIzIC00OTFxNTAgLTg1IDEzNiAtMTczcTIgLTMgMTQuNSAtMTZ0MTkuNSAtMjEKdDE3IC0yMC41dDE0LjUgLTIzLjV0NC41IC0yMXpNMTc5NiAzM3EwIC0yOSAtMTcuNSAtNDguNXQtNDYuNSAtMTkuNWgtMTA4MXEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMjkgMTcuNSA0OC41dDQ2LjUgMTkuNWgxMDgxcTI2IDAgNDUgLTE5dDE5IC00NXpNMTU4MSA2NDRxMCAtMTM0IC02NyAtMjMzcS0yNSAtMzggLTY5LjUgLTc4LjV0LTgzLjUgLTYwLjVxLTE2IC0xMCAtMjcgLTEwcS03IDAgLTE1IDZ0LTggMTJxMCA5IDE5IDMwdDQyIDQ2CnQ0MiA2Ny41dDE5IDg4LjVxMCA3NiAtMzUgMTMwcS0yOSA0MiAtNDYgNDJxLTMgMCAtMyAtNXEwIC0xMiA3LjUgLTM1LjV0Ny41IC0zNi41cTAgLTIyIC0yMS41IC0zNXQtNDQuNSAtMTNxLTY2IDAgLTY2IDc2cTAgMTUgMS41IDQ0dDEuNSA0NHEwIDI1IC0xMCA0NnEtMTMgMjUgLTQyIDUzLjV0LTUxIDI4LjVxLTUgMCAtNyAtMC41dC0zLjUgLTIuNXQtMS41IC02cTAgLTIgMTYgLTI2dDE2IC01NHEwIC0zNyAtMTkgLTY4dC00NiAtNTQKdC01My41IC00NnQtNDUuNSAtNTR0LTE5IC02OHEwIC05OCA0MiAtMTYwcTI5IC00MyA3OSAtNjNxMTYgLTUgMTcgLTEwcTEgLTIgMSAtNXEwIC0xNiAtMTggLTE2cS02IDAgLTMzIDExcS0xMTkgNDMgLTE5NSAxMzkuNXQtNzYgMjE4LjVxMCA1NSAyNC41IDExNS41dDYwIDExNXQ3MC41IDEwOC41dDU5LjUgMTEzLjV0MjQuNSAxMTEuNXEwIDUzIC0yNSA5NHEtMjkgNDggLTU2IDY0cS0xOSA5IC0xOSAyMXEwIDIwIDQxIDIwcTUwIDAgMTEwIC0yOQpxNDEgLTE5IDcxIC00NC41dDQ5LjUgLTUxdDMzLjUgLTYyLjV0MjIgLTY5dDE2IC04MHEwIC0xIDMgLTE3LjV0NC41IC0yNXQ1LjUgLTI1dDkgLTI3dDExIC0yMS41dDE0LjUgLTE2LjV0MTguNSAtNS41cTIzIDAgMzcgMTR0MTQgMzdxMCAyNSAtMjAgNjd0LTIwIDUydDEwIDEwcTI3IDAgOTMgLTcwcTcyIC03NiAxMDIuNSAtMTU2dDMwLjUgLTE4NnpNMjMwNCA2MTVxMCAtMjc0IC0xMzggLTUwM3EtMTkgLTMyIC00OCAtNzJ0LTY4IC04Ni41CnQtODEgLTc3dC03NCAtMzAuNXEtMTYgMCAtMzEgMTUuNXQtMTUgMzEuNXEwIDE1IDI5IDUwLjV0NjguNSA3N3Q0OC41IDUyLjVxMTgzIDIzMCAxODMgNTMxcTAgMTMxIC0yMC41IDIzNXQtNzIuNSAyMTFxLTU4IDExOSAtMTYzIDIyOHEtMiAzIC0xMyAxMy41dC0xNi41IDE2LjV0LTE1IDE3LjV0LTE1IDIwdC05LjUgMTguNXQtNCAxOXEwIDE5IDE2IDM1LjV0MzUgMTYuNXE3MCAwIDE5NiAtMTY5cTk4IC0xMzEgMTQ2IC0yNzN0NjAgLTMxNApxMiAtNDIgMiAtNjR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzYiIHVuaWNvZGU9IiYjeGYyYzY7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMTg5IDIyOWwxNDcgNjkzcTkgNDQgLTEwLjUgNjN0LTUxLjUgN2wtODY0IC0zMzNxLTI5IC0xMSAtMzkuNSAtMjV0LTIuNSAtMjYuNXQzMiAtMTkuNWwyMjEgLTY5bDUxMyAzMjNxMjEgMTQgMzIgNnE3IC01IC00IC0xNWwtNDE1IC0zNzV2MHYwbC0xNiAtMjI4cTIzIDAgNDUgMjJsMTA4IDEwNGwyMjQgLTE2NXE2NCAtMzYgODEgMzh6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxCnQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkM3IiB1bmljb2RlPSImI3hmMmM3OyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNNjQwIDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA2MCAzNSAxMTB0OTMgNzF2OTA3aDEyOHYtOTA3cTU4IC0yMSA5MyAtNzF0MzUgLTExMHpNNzY4IDE5MnEwIDc3IC0zNCAxNDR0LTk0IDExMnY3NjhxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTc2OHEtNjAgLTQ1IC05NCAtMTEydC0zNCAtMTQ0cTAgLTEzMyA5My41IC0yMjYuNXQyMjYuNSAtOTMuNXQyMjYuNSA5My41CnQ5My41IDIyNi41ek04OTYgMTkycTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDE4MiAxMjggMzEzdjcxMXEwIDEzMyA5My41IDIyNi41dDIyNi41IDkzLjV0MjI2LjUgLTkzLjV0OTMuNSAtMjI2LjV2LTcxMXExMjggLTEzMSAxMjggLTMxM3pNMTAyNCA3Njh2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTAyNHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMjgwdi0xMjhoLTE5Mgp2MTI4aDE5MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDOCIgdW5pY29kZT0iJiN4ZjJjODsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTY0MCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2cTAgNjAgMzUgMTEwdDkzIDcxdjY1MWgxMjh2LTY1MXE1OCAtMjEgOTMgLTcxdDM1IC0xMTB6TTc2OCAxOTJxMCA3NyAtMzQgMTQ0dC05NCAxMTJ2NzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2di03NjhxLTYwIC00NSAtOTQgLTExMnQtMzQgLTE0NHEwIC0xMzMgOTMuNSAtMjI2LjV0MjI2LjUgLTkzLjV0MjI2LjUgOTMuNQp0OTMuNSAyMjYuNXpNODk2IDE5MnEwIC0xODUgLTEzMS41IC0zMTYuNXQtMzE2LjUgLTEzMS41dC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxODIgMTI4IDMxM3Y3MTFxMCAxMzMgOTMuNSAyMjYuNXQyMjYuNSA5My41dDIyNi41IC05My41dDkzLjUgLTIyNi41di03MTFxMTI4IC0xMzEgMTI4IC0zMTN6TTEwMjQgNzY4di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEwMjR2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTI4MHYtMTI4aC0xOTIKdjEyOGgxOTJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzkiIHVuaWNvZGU9IiYjeGYyYzk7IiBob3Jpei1hZHYteD0iMTAyNCIgCmQ9Ik02NDAgMTkycTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnEwIDYwIDM1IDExMHQ5MyA3MXYzOTVoMTI4di0zOTVxNTggLTIxIDkzIC03MXQzNSAtMTEwek03NjggMTkycTAgNzcgLTM0IDE0NHQtOTQgMTEydjc2OHEwIDgwIC01NiAxMzZ0LTEzNiA1NnQtMTM2IC01NnQtNTYgLTEzNnYtNzY4cS02MCAtNDUgLTk0IC0xMTJ0LTM0IC0xNDRxMCAtMTMzIDkzLjUgLTIyNi41dDIyNi41IC05My41dDIyNi41IDkzLjUKdDkzLjUgMjI2LjV6TTg5NiAxOTJxMCAtMTg1IC0xMzEuNSAtMzE2LjV0LTMxNi41IC0xMzEuNXQtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTgyIDEyOCAzMTN2NzExcTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNXQyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXYtNzExcTEyOCAtMTMxIDEyOCAtMzEzek0xMDI0IDc2OHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMDI0di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEyODB2LTEyOGgtMTkyCnYxMjhoMTkyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkNBIiB1bmljb2RlPSImI3hmMmNhOyIgaG9yaXotYWR2LXg9IjEwMjQiIApkPSJNNjQwIDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA2MCAzNSAxMTB0OTMgNzF2MTM5aDEyOHYtMTM5cTU4IC0yMSA5MyAtNzF0MzUgLTExMHpNNzY4IDE5MnEwIDc3IC0zNCAxNDR0LTk0IDExMnY3NjhxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTc2OHEtNjAgLTQ1IC05NCAtMTEydC0zNCAtMTQ0cTAgLTEzMyA5My41IC0yMjYuNXQyMjYuNSAtOTMuNXQyMjYuNSA5My41CnQ5My41IDIyNi41ek04OTYgMTkycTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDE4MiAxMjggMzEzdjcxMXEwIDEzMyA5My41IDIyNi41dDIyNi41IDkzLjV0MjI2LjUgLTkzLjV0OTMuNSAtMjI2LjV2LTcxMXExMjggLTEzMSAxMjggLTMxM3pNMTAyNCA3Njh2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTAyNHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMjgwdi0xMjhoLTE5Mgp2MTI4aDE5MnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDQiIgdW5pY29kZT0iJiN4ZjJjYjsiIGhvcml6LWFkdi14PSIxMDI0IiAKZD0iTTY0MCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2cTAgNzkgNTYgMTM1LjV0MTM2IDU2LjV0MTM2IC01Ni41dDU2IC0xMzUuNXpNNzY4IDE5MnEwIDc3IC0zNCAxNDR0LTk0IDExMnY3NjhxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTc2OHEtNjAgLTQ1IC05NCAtMTEydC0zNCAtMTQ0cTAgLTEzMyA5My41IC0yMjYuNXQyMjYuNSAtOTMuNXQyMjYuNSA5My41dDkzLjUgMjI2LjV6Ck04OTYgMTkycTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDE4MiAxMjggMzEzdjcxMXEwIDEzMyA5My41IDIyNi41dDIyNi41IDkzLjV0MjI2LjUgLTkzLjV0OTMuNSAtMjI2LjV2LTcxMXExMjggLTEzMSAxMjggLTMxM3pNMTAyNCA3Njh2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTAyNHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMjgwdi0xMjhoLTE5MnYxMjhoMTkyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkNDIiB1bmljb2RlPSImI3hmMmNjOyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNMTQzMyAxMjg3cTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtNjI2IC02MjZxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtODIgODJxLTEwIDEwIC0xMCAyM3QxMCAyM2w0NCA0NHEtNzIgOTEgLTgxLjUgMjA3dDQ2LjUgMjE1cS03NCA3MSAtMTc2IDcxcS0xMDYgMCAtMTgxIC03NXQtNzUgLTE4MXYtMTI4MGgtMjU2djEyODBxMCAxMDQgNDAuNSAxOTguNXQxMDkuNSAxNjMuNXQxNjMuNSAxMDkuNXQxOTguNSA0MC41cTEwNiAwIDIwMSAtNDEKdDE2NiAtMTE1cTk0IDM5IDE5NyAyNC41dDE4NSAtNzkuNWw0NCA0NHExMCAxMCAyMyAxMHQyMyAtMTB6TTEzNDQgMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTE2MDAgODk2cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl6TTE4NTYgMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5CnQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xMjE2IDg5NnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTE0MDggODMycTAgMjYgMTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXpNMTcyOCA4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xMDg4IDc2OApxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xMzQ0IDY0MHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5ek0xNjAwIDc2OHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEyMTYgNTEycS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5CnQxOSAtNDV0LTE5IC00NXQtNDUgLTE5ek0xNDcyIDY0MHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEwODggNTEycTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTM0NCA1MTJxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xMjE2IDM4NApxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xMDg4IDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQ0QiIHVuaWNvZGU9IiYjeGYyY2Q7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNjY0IDQ0OHYtMTkycTAgLTE2OSAtMTI4IC0yODZ2LTE5NHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMThxLTYzIC0yMiAtMTI4IC0yMmgtNzY4cS02NSAwIC0xMjggMjJ2LTExMHEwIC0xNyAtOS41IC0yOC41dC0yMi41IC0xMS41aC02NHEtMTMgMCAtMjIuNSAxMS41dC05LjUgMjguNXYxODZxLTEyOCAxMTcgLTEyOCAyODZ2MTkyaDE1MzZ6TTcwNCA4NjRxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOQp0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek03NjggOTI4cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek03MDQgOTkycTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek04MzIgOTkycTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek03NjggMTA1NnEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5CnQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTcwNCAxMTIwcTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek0xNzkyIDYwOHYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTcyOHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnY2NDBxMCAxMDYgNzUgMTgxdDE4MSA3NXExMDggMCAxODQgLTc4cTQ2IDE5IDk4IDEydDkzIC0zOWwyMiAyMnExMSAxMSAyMiAwbDQyIC00MgpxMTEgLTExIDAgLTIybC0zMTQgLTMxNHEtMTEgLTExIC0yMiAwbC00MiA0MnEtMTEgMTEgMCAyMmwyMiAyMnEtMzYgNDYgLTQwLjUgMTA0dDIzLjUgMTA4cS0zNyAzNSAtODggMzVxLTUzIDAgLTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV2LTY0MGgxNTA0cTE0IDAgMjMgLTl0OSAtMjN6TTg5NiAxMDU2cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek04MzIgMTEyMHEwIC0xNCAtOSAtMjN0LTIzIC05CnQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTc2OCAxMTg0cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek05NjAgMTEyMHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNODk2IDExODRxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTgzMiAxMjQ4cTAgLTE0IC05IC0yMwp0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNMTAyNCAxMTg0cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek05NjAgMTI0OHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNMTA4OCAxMjQ4cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkNFIiB1bmljb2RlPSImI3hmMmNlOyIgCmQ9Ik05OTQgMzQ0cTAgLTg2IC0xNyAtMTk3cS0zMSAtMjE1IC01NSAtMzEzcS0yMiAtOTAgLTE1MiAtOTB0LTE1MiA5MHEtMjQgOTggLTU1IDMxM3EtMTcgMTEwIC0xNyAxOTdxMCAxNjggMjI0IDE2OHQyMjQgLTE2OHpNMTUzNiA3NjhxMCAtMjQwIC0xMzQgLTQzNHQtMzUwIC0yODBxLTggLTMgLTE1IDN0LTYgMTVxNyA0OCAxMCA2NnE0IDMyIDYgNDdxMSA5IDkgMTJxMTU5IDgxIDI1NS41IDIzNHQ5Ni41IDMzN3EwIDE4MCAtOTEgMzMwLjUKdC0yNDcgMjM0LjV0LTMzNyA3NHEtMTI0IC03IC0yMzcgLTYxdC0xOTMuNSAtMTQwLjV0LTEyOCAtMjAydC00Ni41IC0yNDAuNXExIC0xODQgOTkgLTMzNi41dDI1NyAtMjMxLjVxNyAtMyA5IC0xMnEzIC0yMSA2IC00NXExIC05IDUgLTMyLjV0NiAtMzUuNXExIC05IC02LjUgLTE1dC0xNS41IC0ycS0xNDggNTggLTI2MSAxNjkuNXQtMTczLjUgMjY0dC01Mi41IDMxOS41cTcgMTQzIDY2IDI3My41dDE1NC41IDIyN3QyMjUgMTU3LjV0MjcyLjUgNzAKcTE2NCAxMCAzMTUuNSAtNDYuNXQyNjEgLTE2MC41dDE3NSAtMjUwLjV0NjUuNSAtMzA4LjV6TTk5NCA4MDBxMCAtOTMgLTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNXQtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV6TTEyODIgNzY4cTAgLTEyMiAtNTMuNSAtMjI4LjV0LTE0Ni41IC0xNzcuNXEtOCAtNiAtMTYgLTJ0LTEwIDE0cS02IDUyIC0yOSA5MnEtNyAxMCAzIDIwCnE1OCA1NCA5MSAxMjd0MzMgMTU1cTAgMTExIC01OC41IDIwNHQtMTU3LjUgMTQxLjV0LTIxMiAzNi41cS0xMzMgLTE1IC0yMjkgLTExM3QtMTA5IC0yMzFxLTEwIC05MiAyMy41IC0xNzZ0OTguNSAtMTQ0cTEwIC0xMCAzIC0yMHEtMjQgLTQxIC0yOSAtOTNxLTIgLTkgLTEwIC0xM3QtMTYgMnEtOTUgNzQgLTE0OC41IDE4M3QtNTEuNSAyMzRxMyAxMzEgNjkgMjQ0dDE3NyAxODEuNXQyNDEgNzQuNXExNDQgNyAyNjggLTYwdDE5Ni41IC0xODcuNQp0NzIuNSAtMjYzLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDAiIHVuaWNvZGU9IiYjeGYyZDA7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0yNTYgMTI4aDEyODB2NzY4aC0xMjgwdi03Njh6TTE3OTIgMTI0OHYtMTIxNnEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTQ3MnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExM3QxMTMgNDdoMTQ3MnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEMSIgdW5pY29kZT0iJiN4ZjJkMTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTE3OTIgMjI0di0xOTJxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjE5MnEwIDY2IDQ3IDExM3QxMTMgNDdoMTQ3MnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEMiIgdW5pY29kZT0iJiN4ZjJkMjsiIGhvcml6LWFkdi14PSIyMDQ4IiAKZD0iTTI1NiAwaDc2OHY1MTJoLTc2OHYtNTEyek0xMjgwIDUxMmg1MTJ2NzY4aC03Njh2LTI1Nmg5NnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMzUyek0yMDQ4IDEzNzZ2LTk2MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtNjA4di0zNTJxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTk2MHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2OTYwcTAgNjYgNDcgMTEzdDExMyA0N2g2MDh2MzUycTAgNjYgNDcgMTEzdDExMyA0N2g5NjBxNjYgMCAxMTMgLTQ3CnQ0NyAtMTEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQzIiB1bmljb2RlPSImI3hmMmQzOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTE3NSAyMTVsMTQ2IDE0NnExMCAxMCAxMCAyM3QtMTAgMjNsLTIzMyAyMzNsMjMzIDIzM3ExMCAxMCAxMCAyM3QtMTAgMjNsLTE0NiAxNDZxLTEwIDEwIC0yMyAxMHQtMjMgLTEwbC0yMzMgLTIzM2wtMjMzIDIzM3EtMTAgMTAgLTIzIDEwdC0yMyAtMTBsLTE0NiAtMTQ2cS0xMCAtMTAgLTEwIC0yM3QxMCAtMjNsMjMzIC0yMzNsLTIzMyAtMjMzcS0xMCAtMTAgLTEwIC0yM3QxMCAtMjNsMTQ2IC0xNDZxMTAgLTEwIDIzIC0xMHQyMyAxMApsMjMzIDIzM2wyMzMgLTIzM3ExMCAtMTAgMjMgLTEwdDIzIDEwek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDQiIHVuaWNvZGU9IiYjeGYyZDQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMjU3IDQyNWwtMTQ2IC0xNDZxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTY5IDE2OWwtMTY5IC0xNjlxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTQ2IDE0NnEtMTAgMTAgLTEwIDIzdDEwIDIzbDE2OSAxNjlsLTE2OSAxNjlxLTEwIDEwIC0xMCAyM3QxMCAyM2wxNDYgMTQ2cTEwIDEwIDIzIDEwdDIzIC0xMGwxNjkgLTE2OWwxNjkgMTY5cTEwIDEwIDIzIDEwdDIzIC0xMGwxNDYgLTE0NnExMCAtMTAgMTAgLTIzdC0xMCAtMjMKbC0xNjkgLTE2OWwxNjkgLTE2OXExMCAtMTAgMTAgLTIzdC0xMCAtMjN6TTI1NiAxMjhoMTI4MHYxMDI0aC0xMjgwdi0xMDI0ek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDUiIHVuaWNvZGU9IiYjeGYyZDU7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xMDcwIDM1OGwzMDYgNTY0aC02NTRsLTMwNiAtNTY0aDY1NHpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2IC0xOTF0LTM0OCAtNzF0LTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJENiIgdW5pY29kZT0iJiN4ZjJkNjsiIGhvcml6LWFkdi14PSIxNzk0IiAKZD0iTTEyOTEgMTA2MHEtMTUgMTcgLTM1IDguNXQtMjYgLTI4LjV0NSAtMzhxMTQgLTE3IDQwIC0xNC41dDM0IDIwLjV0LTE4IDUyek04OTUgODE0cS04IC04IC0xOS41IC04dC0xOC41IDhxLTggOCAtOCAxOXQ4IDE4cTcgOCAxOC41IDh0MTkuNSAtOHE3IC03IDcgLTE4dC03IC0xOXpNMTA2MCA3NDBsLTM1IC0zNXEtMTIgLTEzIC0yOS41IC0xM3QtMzAuNSAxM2wtMzggMzhxLTEyIDEzIC0xMiAzMHQxMiAzMGwzNSAzNXExMiAxMiAyOS41IDEyCnQzMC41IC0xMmwzOCAtMzlxMTIgLTEyIDEyIC0yOS41dC0xMiAtMjkuNXpNOTUxIDg3MHEtNyAtOCAtMTguNSAtOHQtMTkuNSA4cS03IDggLTcgMTl0NyAxOXE4IDggMTkgOHQxOSAtOHQ4IC0xOXQtOCAtMTl6TTEzNTQgOTY4cS0zNCAtNjQgLTEwNy41IC04NS41dC0xMjcuNSAxNi41cS0zOCAyOCAtNjEgNjYuNXQtMjEgODcuNXQzOSA5MnQ3NS41IDUzdDcwLjUgLTV0NzAgLTUxcTIgLTIgMTMgLTEyLjV0MTQuNSAtMTMuNXQxMyAtMTMuNQp0MTIuNSAtMTUuNXQxMCAtMTUuNXQ4LjUgLTE4dDQgLTE4LjV0MSAtMjF0LTUgLTIydC05LjUgLTI0ek0xNTU1IDQ4NnEzIDIwIC04LjUgMzQuNXQtMjcuNSAyMS41dC0zMyAxN3QtMjMgMjBxLTQwIDcxIC04NCA5OC41dC0xMTMgMTEuNXExOSAxMyA0MCAxOC41dDMzIDQuNWwxMiAtMXEyIDQ1IC0zNCA5MHE2IDIwIDYuNSA0MC41dC0yLjUgMzAuNWwtMyAxMHE0MyAyNCA3MSA2NXQzNCA5MXExMCA4NCAtNDMgMTUwLjV0LTEzNyA3Ni41CnEtNjAgNyAtMTE0IC0xOC41dC04MiAtNzQuNXEtMzAgLTUxIC0zMy41IC0xMDF0MTQuNSAtODd0NDMuNSAtNjR0NTYuNSAtNDJxLTQ1IDQgLTg4IDM2dC01NyA4OHEtMjggMTA4IDMyIDIyMnEtMTYgMjEgLTI5IDMycS01MCAwIC04OSAtMTlxMTkgMjQgNDIgMzd0MzYgMTRsMTMgMXEwIDUwIC0xMyA3OHEtMTAgMjEgLTMyLjUgMjguNXQtNDcgLTMuNXQtMzcuNSAtNDBxMiA0IDQgN3EtNyAtMjggLTYuNSAtNzUuNXQxOSAtMTE3dDQ4LjUgLTEyMi41CnEtMjUgLTE0IC00NyAtMzZxLTM1IC0xNiAtODUuNSAtNzAuNXQtODQuNSAtMTAxLjVsLTMzIC00NnEtOTAgLTM0IC0xODEgLTEyNS41dC03NSAtMTYyLjVxMSAtMTYgMTEgLTI3cS0xNSAtMTIgLTMwIC0zMHEtMjEgLTI1IC0yMSAtNTR0MjEuNSAtNDB0NjMuNSA2cTQxIDE5IDc3IDQ5LjV0NTUgNjAuNXEtMiAyIC02LjUgNXQtMjAuNSA3LjV0LTMzIDMuNXEyMyA1IDUxIDEyLjV0NDAgMTB0MjcuNSA2dDI2IDR0MjMuNSAwLjVxMTQgLTcgMjIgMzQKcTcgMzcgNyA5MHEwIDEwMiAtNDAgMTUwcTEwNiAtMTAzIDEwMSAtMjE5cS0xIC0yOSAtMTUgLTUwdC0yNyAtMjdsLTEzIC02cS00IC03IC0xOSAtMzJ0LTI2IC00NS41dC0yNi41IC01MnQtMjUgLTYxdC0xNyAtNjN0LTYuNSAtNjYuNXQxMCAtNjNxLTM1IDU0IC0zNyA4MHEtMjIgLTI0IC0zNC41IC0zOXQtMzMuNSAtNDJ0LTMwLjUgLTQ2dC0xNi41IC00MXQtMC41IC0zOHQyNS41IC0yN3E0NSAtMjUgMTQ0IDY0dDE5MC41IDIyMS41CnQxMjIuNSAyMjguNXE4NiA1MiAxNDUgMTE1LjV0ODYgMTE5LjVxNDcgLTkzIDE1NCAtMTc4cTEwNCAtODMgMTY3IC04MHEzOSAyIDQ2IDQzek0xNzk0IDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYuNSAtMTkxdC0zNDguNSAtNzF0LTM0OC41IDcxdC0yODYuNSAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYuNSAxOTF0MzQ4LjUgNzF0MzQ4LjUgLTcxdDI4Ni41IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJENyIgdW5pY29kZT0iJiN4ZjJkNzsiIApkPSJNNTE4IDEzNTN2LTY1NXExMDMgLTEgMTkxLjUgMS41dDEyNS41IDUuNWwzNyAzcTY4IDIgOTAuNSAyNC41dDM5LjUgOTQuNWwzMyAxNDJoMTAzbC0xNCAtMzIybDcgLTMxOWgtMTAzbC0yOSAxMjdxLTE1IDY4IC00NSA5M3QtODQgMjZxLTg3IDggLTM1MiA4di01NTZxMCAtNzggNDMuNSAtMTE1LjV0MTMzLjUgLTM3LjVoMzU3cTM1IDAgNTkuNSAydDU1IDcuNXQ1NCAxOHQ0OC41IDMydDQ2IDUwLjV0MzkgNzNsOTMgMjE2aDg5CnEtNiAtMzcgLTMxLjUgLTI1MnQtMzAuNSAtMjc2cS0xNDYgNSAtMjYzLjUgOHQtMTYyLjUgNGgtNDRoLTYyOGwtMzc2IC0xMnYxMDJsMTI3IDI1cTY3IDEzIDkxLjUgMzd0MjUuNSA3OWw4IDY0M3EzIDQwMiAtOCA2NDVxLTIgNjEgLTI1LjUgODR0LTkxLjUgMzZsLTEyNyAyNHYxMDJsMzc2IC0xMmg3MDJxMTM5IDAgMzc0IDI3cS02IC02OCAtMTQgLTE5NC41dC0xMiAtMjE5LjVsLTUgLTkyaC05M2wtMzIgMTI0cS0zMSAxMjEgLTc0IDE3OS41CnQtMTEzIDU4LjVoLTU0OHEtMjggMCAtMzUuNSAtOC41dC03LjUgLTMwLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDgiIHVuaWNvZGU9IiYjeGYyZDg7IiAKZD0iTTkyMiA3Mzl2LTE4MnEwIC00IDAuNSAtMTV0MCAtMTVsLTEuNSAtMTJ0LTMuNSAtMTEuNXQtNi41IC03LjV0LTExIC01LjV0LTE2IC0xLjV2MzA5cTkgMCAxNiAtMXQxMSAtNXQ2LjUgLTUuNXQzLjUgLTkuNXQxIC0xMC41di0xMy41di0xNHpNMTIzOCA2NDN2LTEyMXEwIC0xIDAuNSAtMTIuNXQwIC0xNS41dC0yLjUgLTExLjV0LTcuNSAtMTAuNXQtMTMuNSAtM3EtOSAwIC0xNCA5cS00IDEwIC00IDE2NXY3djguNXY5dDEuNSA4LjVsMy41IDcKdDUgNS41dDggMS41cTYgMCAxMCAtMS41dDYuNSAtNC41dDQgLTZ0MiAtOC41dDAuNSAtOHYtOS41di05ek0xODAgNDA3aDEyMnY0NzJoLTEyMnYtNDcyek02MTQgNDA3aDEwNnY0NzJoLTE1OWwtMjggLTIyMXEtMjAgMTQ4IC0zMiAyMjFoLTE1OHYtNDcyaDEwN3YzMTJsNDUgLTMxMmg3Nmw0MyAzMTl2LTMxOXpNMTAzOSA3MTJxMCA2NyAtNSA5MHEtMyAxNiAtMTEgMjguNXQtMTcgMjAuNXQtMjUgMTR0LTI2LjUgOC41dC0zMSA0dC0yOSAxLjUKaC0yOS41aC0xMmgtOTF2LTQ3Mmg1NnExNjkgLTEgMTk3IDI0LjV0MjUgMTgwLjVxLTEgNjIgLTEgMTAwek0xMzU2IDUxNXYxMzNxMCAyOSAtMiA0NXQtOS41IDMzLjV0LTI0LjUgMjV0LTQ2IDcuNXEtNDYgMCAtNzcgLTM0djE1NGgtMTE3di00NzJoMTEwbDcgMzBxMzAgLTM2IDc3IC0zNnE1MCAwIDY2IDMwLjV0MTYgODMuNXpNMTUzNiAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExMwp2MTIxNnEwIDY2IDQ3IDExM3QxMTMgNDdoMTIxNnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEOSIgdW5pY29kZT0iJiN4ZjJkOTsiIGhvcml6LWFkdi14PSIyMTc2IiAKZD0iTTExNDMgLTE5N3EtNiAxIC0xMSA0cS0xMyA4IC0zNiAyM3QtODYgNjV0LTExNi41IDEwNC41dC0xMTIgMTQwdC04OS41IDE3Mi41cS0xNyAzIC0xNzUgMzdxNjYgLTIxMyAyMzUgLTM2MnQzOTEgLTE4NHpNNTAyIDQwOWwxNjggLTI4cS0yNSA3NiAtNDEgMTY3LjV0LTE5IDE0NS41bC00IDUzcS04NCAtODIgLTEyMSAtMjI0cTUgLTY1IDE3IC0xMTR6TTYxMiAxMDE4cS00MyAtNjQgLTc3IC0xNDhxNDQgNDYgNzQgNjh6TTIwNDkgNTg0CnEwIDE2MSAtNjIgMzA3dC0xNjcuNSAyNTJ0LTI1MC41IDE2OC41dC0zMDQgNjIuNXEtMTQ3IDAgLTI4MSAtNTIuNXQtMjQwIC0xNDguNXEtMzAgLTU4IC00NSAtMTYwcTYwIDUxIDE0MyA4My41dDE1OC41IDQzdDE0MyAxMy41dDEwOC41IC0xbDQwIC0zcTMzIC0xIDUzIC0xNS41dDI0LjUgLTMzdDYuNSAtMzd0LTEgLTI4LjVxLTEyNiAxMSAtMjI3LjUgMC41dC0xODMgLTQzLjV0LTE0Mi41IC03MS41dC0xMzEgLTk4LjUKcTQgLTM2IDExLjUgLTkyLjV0MzUuNSAtMTc4dDYyIC0xNzkuNXExMjMgLTYgMjQ3LjUgMTQuNXQyMTQuNSA1My41dDE2Mi41IDY3dDEwOS41IDU5bDM3IDI0cTIyIDE2IDM5LjUgMjAuNXQzMC41IC01dDE3IC0zNC41cTE0IC05NyAtMzkgLTEyMXEtMjA4IC05NyAtNDY3IC0xMzRxLTEzNSAtMjAgLTMxNyAtMTZxNDEgLTk2IDExMCAtMTc2LjV0MTM3IC0xMjd0MTMwLjUgLTc5dDEwMS41IC00My41bDM5IC0xMnExNDMgLTIzIDI2MyAxNQpxMTk1IDk5IDMxNCAyODl0MTE5IDQxOHpNMjEyMyA2MjFxLTE0IC0xMzUgLTQwIC0yMTJxLTcwIC0yMDggLTE4MS41IC0zNDYuNXQtMzE4LjUgLTI1My41cS00OCAtMzMgLTgyIC00NHEtNzIgLTI2IC0xNjMgLTE2cS0zNiAtMyAtNzMgLTNxLTI4MyAwIC01MDQuNSAxNzN0LTI5NS41IDQ0MnEtMSAwIC00IDAuNXQtNSAwLjVxLTYgLTUwIDIuNSAtMTEyLjV0MjYgLTExNXQzNiAtOTh0MzEuNSAtNzEuNWwxNCAtMjZxOCAtMTIgNTQgLTgyCnEtNzEgMzggLTEyNC41IDEwNi41dC03OC41IDE0MHQtMzkuNSAxMzd0LTE3LjUgMTA3LjVsLTIgNDJxLTUgMiAtMzMuNSAxMi41dC00OC41IDE4dC01MyAyMC41dC01Ny41IDI1dC01MCAyNS41dC00Mi41IDI3dC0yNSAyNS41cTE5IC0xMCA1MC41IC0yNS41dDExMyAtNDUuNXQxNDUuNSAtMzhsMiAzMnExMSAxNDkgOTQgMjkwcTQxIDIwMiAxNzYgMzY1cTI4IDExNSA4MSAyMTRxMTUgMjggMzIgNDV0NDkgMzJxMTU4IDc0IDMwMy41IDEwNAp0MzAyIDExdDMwNi41IC05N3EyMjAgLTExNSAzMzMgLTMzNnQ4NyAtNDc0eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkRBIiB1bmljb2RlPSImI3hmMmRhOyIgaG9yaXotYWR2LXg9IjE3OTIiIApkPSJNMTM0MSA3NTJxMjkgNDQgLTYuNSAxMjkuNXQtMTIxLjUgMTQyLjVxLTU4IDM5IC0xMjUuNSA1My41dC0xMTggNC41dC02OC41IC0zN3EtMTIgLTIzIC00LjUgLTI4dDQyLjUgLTEwcTIzIC0zIDM4LjUgLTV0NDQuNSAtOS41dDU2IC0xNy41cTM2IC0xMyA2Ny41IC0zMS41dDUzIC0zN3Q0MCAtMzguNXQzMC41IC0zOHQyMiAtMzQuNXQxNi41IC0yOC41dDEyIC0xOC41dDEwLjUgLTZ0MTEgOS41ek0xNzA0IDE3OApxLTUyIC0xMjcgLTE0OC41IC0yMjB0LTIxNC41IC0xNDEuNXQtMjUzIC02MC41dC0yNjYgMTMuNXQtMjUxIDkxdC0yMTAgMTYxLjV0LTE0MS41IDIzNS41dC00Ni41IDMwMy41cTEgNDEgOC41IDg0LjV0MTIuNSA2NHQyNCA4MC41dDIzIDczcS01MSAtMjA4IDEgLTM5N3QxNzMgLTMxOHQyOTEgLTIwNnQzNDYgLTgzdDM0OSA3NC41dDI4OSAyNDQuNXEyMCAyNyAxOCAxNHEwIC00IC00IC0xNHpNMTQ2NSA2MjdxMCAtMTA0IC00MC41IC0xOTkKdC0xMDguNSAtMTY0dC0xNjIgLTEwOS41dC0xOTggLTQwLjV0LTE5OCA0MC41dC0xNjIgMTA5LjV0LTEwOC41IDE2NHQtNDAuNSAxOTl0NDAuNSAxOTl0MTA4LjUgMTY0dDE2MiAxMDkuNXQxOTggNDAuNXQxOTggLTQwLjV0MTYyIC0xMDkuNXQxMDguNSAtMTY0dDQwLjUgLTE5OXpNMTc1MiA5MTVxLTY1IDE0NyAtMTgwLjUgMjUxdC0yNTMgMTUzLjV0LTI5MiA1My41dC0zMDEgLTM2LjV0LTI3NS41IC0xMjl0LTIyMCAtMjExLjV0LTEzMSAtMjk3CnQtMTAgLTM3M3EtNDkgMTYxIC01MS41IDMxMS41dDM1LjUgMjcyLjV0MTA5IDIyN3QxNjUuNSAxODAuNXQyMDcgMTI2dDIzMiA3MXQyNDIuNSA5dDIzNiAtNTR0MjE2IC0xMjQuNXQxNzggLTE5N3EzMyAtNTAgNjIgLTEyMXQzMSAtMTEyek0xNjkwIDU3M3ExMiAyNDQgLTEzNi41IDQxNnQtMzk2LjUgMjQwcS04IDAgLTEwIDV0MjQgOHExMjUgLTQgMjMwIC01MHQxNzMgLTEyMHQxMTYgLTE2OC41dDU4LjUgLTE5OXQtMSAtMjA4CnQtNjEuNSAtMTk3LjV0LTEyMi41IC0xNjd0LTE4NSAtMTE3LjV0LTI0OC41IC00Ni41cTEwOCAzMCAyMDEuNSA4MHQxNzQgMTIzdDEyOS41IDE3Ni41dDU1IDIyNS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkRCIiB1bmljb2RlPSImI3hmMmRiOyIgCmQ9Ik0xOTIgMjU2di0xMjhoLTExMnEtMTYgMCAtMTYgMTZ2MTZoLTQ4cS0xNiAwIC0xNiAxNnYzMnEwIDE2IDE2IDE2aDQ4djE2cTAgMTYgMTYgMTZoMTEyek0xOTIgNTEydi0xMjhoLTExMnEtMTYgMCAtMTYgMTZ2MTZoLTQ4cS0xNiAwIC0xNiAxNnYzMnEwIDE2IDE2IDE2aDQ4djE2cTAgMTYgMTYgMTZoMTEyek0xOTIgNzY4di0xMjhoLTExMnEtMTYgMCAtMTYgMTZ2MTZoLTQ4cS0xNiAwIC0xNiAxNnYzMnEwIDE2IDE2IDE2aDQ4djE2CnEwIDE2IDE2IDE2aDExMnpNMTkyIDEwMjR2LTEyOGgtMTEycS0xNiAwIC0xNiAxNnYxNmgtNDhxLTE2IDAgLTE2IDE2djMycTAgMTYgMTYgMTZoNDh2MTZxMCAxNiAxNiAxNmgxMTJ6TTE5MiAxMjgwdi0xMjhoLTExMnEtMTYgMCAtMTYgMTZ2MTZoLTQ4cS0xNiAwIC0xNiAxNnYzMnEwIDE2IDE2IDE2aDQ4djE2cTAgMTYgMTYgMTZoMTEyek0xMjgwIDE0NDB2LTE0NzJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC04MzJxLTQwIDAgLTY4IDI4CnQtMjggNjh2MTQ3MnEwIDQwIDI4IDY4dDY4IDI4aDgzMnE0MCAwIDY4IC0yOHQyOCAtNjh6TTE1MzYgMjA4di0zMnEwIC0xNiAtMTYgLTE2aC00OHYtMTZxMCAtMTYgLTE2IC0xNmgtMTEydjEyOGgxMTJxMTYgMCAxNiAtMTZ2LTE2aDQ4cTE2IDAgMTYgLTE2ek0xNTM2IDQ2NHYtMzJxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNmg0OHExNiAwIDE2IC0xNnpNMTUzNiA3MjB2LTMyCnEwIC0xNiAtMTYgLTE2aC00OHYtMTZxMCAtMTYgLTE2IC0xNmgtMTEydjEyOGgxMTJxMTYgMCAxNiAtMTZ2LTE2aDQ4cTE2IDAgMTYgLTE2ek0xNTM2IDk3NnYtMzJxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNmg0OHExNiAwIDE2IC0xNnpNMTUzNiAxMjMydi0zMnEwIC0xNiAtMTYgLTE2aC00OHYtMTZxMCAtMTYgLTE2IC0xNmgtMTEydjEyOGgxMTJxMTYgMCAxNiAtMTZ2LTE2Cmg0OHExNiAwIDE2IC0xNnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEQyIgdW5pY29kZT0iJiN4ZjJkYzsiIGhvcml6LWFkdi14PSIxNjY0IiAKZD0iTTE1NjYgNDE5bC0xNjcgLTMzbDE4NiAtMTA3cTIzIC0xMyAyOS41IC0zOC41dC02LjUgLTQ4LjVxLTE0IC0yMyAtMzkgLTI5LjV0LTQ4IDYuNWwtMTg2IDEwNmw1NSAtMTYwcTEzIC0zOCAtMTIgLTYzLjV0LTYwLjUgLTIwLjV0LTQ4LjUgNDJsLTEwMiAzMDBsLTI3MSAxNTZ2LTMxM2wyMDggLTIzOHExNiAtMTggMTcgLTM5dC0xMSAtMzYuNXQtMjguNSAtMjV0LTM3IC01LjV0LTM2LjUgMjJsLTExMiAxMjh2LTIxNHEwIC0yNiAtMTkgLTQ1CnQtNDUgLTE5dC00NSAxOXQtMTkgNDV2MjE0bC0xMTIgLTEyOHEtMTYgLTE4IC0zNi41IC0yMnQtMzcgNS41dC0yOC41IDI1dC0xMSAzNi41dDE3IDM5bDIwOCAyMzh2MzEzbC0yNzEgLTE1NmwtMTAyIC0zMDBxLTEzIC0zNyAtNDguNSAtNDJ0LTYwLjUgMjAuNXQtMTIgNjMuNWw1NSAxNjBsLTE4NiAtMTA2cS0yMyAtMTMgLTQ4IC02LjV0LTM5IDI5LjVxLTEzIDIzIC02LjUgNDguNXQyOS41IDM4LjVsMTg2IDEwN2wtMTY3IDMzCnEtMjkgNiAtNDIgMjl0LTguNSA0Ni41dDI1LjUgNDB0NTAgMTAuNWwzMTAgLTYybDI3MSAxNTdsLTI3MSAxNTdsLTMxMCAtNjJxLTQgLTEgLTEzIC0xcS0yNyAwIC00NCAxOHQtMTkgNDB0MTEgNDN0NDAgMjZsMTY3IDMzbC0xODYgMTA3cS0yMyAxMyAtMjkuNSAzOC41dDYuNSA0OC41dDM5IDMwdDQ4IC03bDE4NiAtMTA2bC01NSAxNjBxLTEzIDM4IDEyIDYzLjV0NjAuNSAyMC41dDQ4LjUgLTQybDEwMiAtMzAwbDI3MSAtMTU2djMxMwpsLTIwOCAyMzhxLTE2IDE4IC0xNyAzOXQxMSAzNi41dDI4LjUgMjV0MzcgNS41dDM2LjUgLTIybDExMiAtMTI4djIxNHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV2LTIxNGwxMTIgMTI4cTE2IDE4IDM2LjUgMjJ0MzcgLTUuNXQyOC41IC0yNXQxMSAtMzYuNXQtMTcgLTM5bC0yMDggLTIzOHYtMzEzbDI3MSAxNTZsMTAyIDMwMHExMyAzNyA0OC41IDQydDYwLjUgLTIwLjV0MTIgLTYzLjVsLTU1IC0xNjBsMTg2IDEwNgpxMjMgMTMgNDggNi41dDM5IC0yOS41cTEzIC0yMyA2LjUgLTQ4LjV0LTI5LjUgLTM4LjVsLTE4NiAtMTA3bDE2NyAtMzNxMjcgLTUgNDAgLTI2dDExIC00M3QtMTkgLTQwdC00NCAtMThxLTkgMCAtMTMgMWwtMzEwIDYybC0yNzEgLTE1N2wyNzEgLTE1N2wzMTAgNjJxMjkgNiA1MCAtMTAuNXQyNS41IC00MHQtOC41IC00Ni41dC00MiAtMjl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyREQiIHVuaWNvZGU9IiYjeGYyZGQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCmQ9Ik0xNDczIDYwN3E3IDExOCAtMzMgMjI2LjV0LTExMyAxODl0LTE3NyAxMzF0LTIyMSA1Ny41cS0xMTYgNyAtMjI1LjUgLTMydC0xOTIgLTExMC41dC0xMzUgLTE3NXQtNTkuNSAtMjIwLjVxLTcgLTExOCAzMyAtMjI2LjV0MTEzIC0xODl0MTc3LjUgLTEzMXQyMjEuNSAtNTcuNXExNTUgLTkgMjkzIDU5dDIyNCAxOTUuNXQ5NCAyODMuNXpNMTc5MiAxNTM2bC0zNDkgLTM0OHExMjAgLTExNyAxODAuNSAtMjcydDUwLjUgLTMyMQpxLTExIC0xODMgLTEwMiAtMzM5dC0yNDEgLTI1NS41dC0zMzIgLTEyNC41bC05OTkgLTEzMmwzNDcgMzQ3cS0xMjAgMTE2IC0xODAuNSAyNzEuNXQtNTAuNSAzMjEuNXExMSAxODQgMTAyIDM0MHQyNDEuNSAyNTUuNXQzMzIuNSAxMjQuNXExNjcgMjIgNTAwIDY2dDUwMCA2NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJERSIgdW5pY29kZT0iJiN4ZjJkZTsiIGhvcml6LWFkdi14PSIxNzkyIiAKZD0iTTk0OCA1MDhsMTYzIC0zMjloLTUxbC0xNzUgMzUwbC0xNzEgLTM1MGgtNDlsMTc5IDM3NGwtNzggMzNsMjEgNDlsMjQwIC0xMDJsLTIxIC01MHpNNTYzIDExMDBsMzA0IC0xMzBsLTEzMCAtMzA0bC0zMDQgMTMwek05MDcgOTE1bDI0MCAtMTAzbC0xMDMgLTIzOWwtMjM5IDEwMnpNMTE4OCA3NjVsMTkxIC04MWwtODIgLTE5MGwtMTkwIDgxek0xNjgwIDY0MHEwIDE1OSAtNjIgMzA0dC0xNjcuNSAyNTAuNXQtMjUwLjUgMTY3LjV0LTMwNCA2Mgp0LTMwNCAtNjJ0LTI1MC41IC0xNjcuNXQtMTY3LjUgLTI1MC41dC02MiAtMzA0dDYyIC0zMDR0MTY3LjUgLTI1MC41dDI1MC41IC0xNjcuNXQzMDQgLTYydDMwNCA2MnQyNTAuNSAxNjcuNXQxNjcuNSAyNTAuNXQ2MiAzMDR6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxCnQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkUwIiB1bmljb2RlPSImI3hmMmUwOyIgaG9yaXotYWR2LXg9IjE5MjAiIApkPSJNMTMzNCAzMDJxLTQgMjQgLTI3LjUgMzR0LTQ5LjUgMTAuNXQtNDguNSAxMi41dC0yNS41IDM4cS01IDQ3IDMzIDEzOS41dDc1IDE4MXQzMiAxMjcuNXEtMTQgMTAxIC0xMTcgMTAzcS00NSAxIC03NSAtMTZsLTMgLTJsLTUgLTIuNXQtNC41IC0ydC01IC0ydC01IC0wLjV0LTYgMS41dC02IDMuNXQtNi41IDVxLTMgMiAtOSA4LjV0LTkgOXQtOC41IDcuNXQtOS41IDcuNXQtOS41IDUuNXQtMTEgNC41dC0xMS41IDIuNXEtMzAgNSAtNDggLTMKdC00NSAtMzFxLTEgLTEgLTkgLTguNXQtMTIuNSAtMTF0LTE1IC0xMHQtMTYuNSAtNS41dC0xNyAzcS01NCAyNyAtODQgNDBxLTQxIDE4IC05NCAtNXQtNzYgLTY1cS0xNiAtMjggLTQxIC05OC41dC00My41IC0xMzIuNXQtNDAgLTEzNHQtMjEuNSAtNzNxLTIyIC02OSAxOC41IC0xMTl0MTEwLjUgLTQ2cTMwIDIgNTAuNSAxNXQzOC41IDQ2cTcgMTMgNzkgMTk5LjV0NzcgMTk0LjVxNiAxMSAyMS41IDE4dDI5LjUgMHEyNyAtMTUgMjEgLTUzCnEtMiAtMTggLTUxIC0xMzkuNXQtNTAgLTEzMi41cS02IC0zOCAxOS41IC01Ni41dDYwLjUgLTd0NTUgNDkuNXE0IDggNDUuNSA5MnQ4MS41IDE2My41dDQ2IDg4LjVxMjAgMjkgNDEgMjhxMjkgMCAyNSAtMzhxLTIgLTE2IC02NS41IC0xNDcuNXQtNzAuNSAtMTU5LjVxLTEyIC01MyAxMyAtMTAzdDc0IC03NHExNyAtOSA1MSAtMTUuNXQ3MS41IC04dDYyLjUgMTR0MjAgNDguNXpNMzgzIDg2cTMgLTE1IC01IC0yNy41dC0yMyAtMTUuNQpxLTE0IC0zIC0yNi41IDV0LTE1LjUgMjNxLTMgMTQgNSAyN3QyMiAxNnQyNyAtNXQxNiAtMjN6TTk1MyAtMTc3cTEyIC0xNyA4LjUgLTM3LjV0LTIwLjUgLTMyLjV0LTM3LjUgLTh0LTMyLjUgMjFxLTExIDE3IC03LjUgMzcuNXQyMC41IDMyLjV0MzcuNSA4dDMxLjUgLTIxek0xNzcgNjM1cS0xOCAtMjcgLTQ5LjUgLTMzdC01Ny41IDEzcS0yNiAxOCAtMzIgNTB0MTIgNThxMTggMjcgNDkuNSAzM3Q1Ny41IC0xMnEyNiAtMTkgMzIgLTUwLjUKdC0xMiAtNTguNXpNMTQ2NyAtNDJxMTkgLTI4IDEzIC02MS41dC0zNCAtNTIuNXQtNjAuNSAtMTN0LTUxLjUgMzR0LTEzIDYxdDMzIDUzcTI4IDE5IDYwLjUgMTN0NTIuNSAtMzR6TTE1NzkgNTYycTY5IC0xMTMgNDIuNSAtMjQ0LjV0LTEzNC41IC0yMDcuNXEtOTAgLTYzIC0xOTkgLTYwcS0yMCAtODAgLTg0LjUgLTEyN3QtMTQzLjUgLTQ0LjV0LTE0MCA1Ny41cS0xMiAtOSAtMTMgLTEwcS0xMDMgLTcxIC0yMjUgLTQ4LjV0LTE5MyAxMjYuNQpxLTUwIDczIC01MyAxNjRxLTgzIDE0IC0xNDIuNSA3MC41dC04MC41IDEyOHQtMiAxNTJ0ODEgMTM4LjVxLTM2IDYwIC0zOCAxMjh0MjQuNSAxMjV0NzkuNSA5OC41dDEyMSA1MC41cTMyIDg1IDk5IDE0OHQxNDYuNSA5MS41dDE2OCAxN3QxNTkuNSAtNjYuNXE3MiAyMSAxNDAgMTcuNXQxMjguNSAtMzZ0MTA0LjUgLTgwdDY3LjUgLTExNXQxNy41IC0xNDAuNXE1MiAtMTYgODcgLTU3dDQ1LjUgLTg5dC01LjUgLTk5LjV0LTU4IC04Ny41egpNNDU1IDEyMjJxMTQgLTIwIDkuNSAtNDQuNXQtMjQuNSAtMzguNXEtMTkgLTE0IC00My41IC05LjV0LTM3LjUgMjQuNXEtMTQgMjAgLTkuNSA0NC41dDI0LjUgMzguNXExOSAxNCA0My41IDkuNXQzNy41IC0yNC41ek02MTQgMTUwM3E0IC0xNiAtNSAtMzAuNXQtMjYgLTE4LjV0LTMxIDUuNXQtMTggMjYuNXEtMyAxNyA2LjUgMzF0MjUuNSAxOHExNyA0IDMxIC01LjV0MTcgLTI2LjV6TTE4MDAgNTU1cTQgLTIwIC02LjUgLTM3dC0zMC41IC0yMQpxLTE5IC00IC0zNiA2LjV0LTIxIDMwLjV0Ni41IDM3dDMwLjUgMjJxMjAgNCAzNi41IC03LjV0MjAuNSAtMzAuNXpNMTEzNiAxNDQ4cTE2IC0yNyA4LjUgLTU4LjV0LTM1LjUgLTQ3LjVxLTI3IC0xNiAtNTcuNSAtOC41dC00Ni41IDM0LjVxLTE2IDI4IC04LjUgNTl0MzQuNSA0OHQ1OCA5dDQ3IC0zNnpNMTg4MiA3OTJxNCAtMTUgLTQgLTI3LjV0LTIzIC0xNi41cS0xNSAtMyAtMjcuNSA1LjV0LTE1LjUgMjIuNXEtMyAxNSA1IDI4dDIzIDE2CnExNCAzIDI2LjUgLTV0MTUuNSAtMjN6TTE2OTEgMTAzM3ExNSAtMjIgMTAuNSAtNDl0LTI2LjUgLTQzcS0yMiAtMTUgLTQ5IC0xMHQtNDIgMjd0LTEwIDQ5dDI3IDQzdDQ4LjUgMTF0NDEuNSAtMjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTEiIHVuaWNvZGU9IiYjeGYyZTE7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTIiIHVuaWNvZGU9IiYjeGYyZTI7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTMiIHVuaWNvZGU9IiYjeGYyZTM7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTQiIHVuaWNvZGU9IiYjeGYyZTQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTUiIHVuaWNvZGU9IiYjeGYyZTU7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTYiIHVuaWNvZGU9IiYjeGYyZTY7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTciIHVuaWNvZGU9IiYjeGYyZTc7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Il82OTgiIHVuaWNvZGU9IiYjeGYyZTg7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTkiIHVuaWNvZGU9IiYjeGYyZTk7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRUEiIHVuaWNvZGU9IiYjeGYyZWE7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRUIiIHVuaWNvZGU9IiYjeGYyZWI7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRUMiIHVuaWNvZGU9IiYjeGYyZWM7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRUQiIHVuaWNvZGU9IiYjeGYyZWQ7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRUUiIHVuaWNvZGU9IiYjeGYyZWU7IiBob3Jpei1hZHYteD0iMTc5MiIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Imxlc3NlcXVhbCIgdW5pY29kZT0iJiN4ZjUwMDsiIGhvcml6LWFkdi14PSIxNzkyIiAKIC8+CiAgPC9mb250Pgo8L2RlZnM+PC9zdmc+Cg==#fontawesomeregular) format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eee; - border-radius: .1em; -} -.fa-pull-left { - float: left; -} -.fa-pull-right { - float: right; -} -.fa.fa-pull-left { - margin-right: .3em; -} -.fa.fa-pull-right { - margin-left: .3em; -} -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #fff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\F000"; -} -.fa-music:before { - content: "\F001"; -} -.fa-search:before { - content: "\F002"; -} -.fa-envelope-o:before { - content: "\F003"; -} -.fa-heart:before { - content: "\F004"; -} -.fa-star:before { - content: "\F005"; -} -.fa-star-o:before { - content: "\F006"; -} -.fa-user:before { - content: "\F007"; -} -.fa-film:before { - content: "\F008"; -} -.fa-th-large:before { - content: "\F009"; -} -.fa-th:before { - content: "\F00A"; -} -.fa-th-list:before { - content: "\F00B"; -} -.fa-check:before { - content: "\F00C"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\F00D"; -} -.fa-search-plus:before { - content: "\F00E"; -} -.fa-search-minus:before { - content: "\F010"; -} -.fa-power-off:before { - content: "\F011"; -} -.fa-signal:before { - content: "\F012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\F013"; -} -.fa-trash-o:before { - content: "\F014"; -} -.fa-home:before { - content: "\F015"; -} -.fa-file-o:before { - content: "\F016"; -} -.fa-clock-o:before { - content: "\F017"; -} -.fa-road:before { - content: "\F018"; -} -.fa-download:before { - content: "\F019"; -} -.fa-arrow-circle-o-down:before { - content: "\F01A"; -} -.fa-arrow-circle-o-up:before { - content: "\F01B"; -} -.fa-inbox:before { - content: "\F01C"; -} -.fa-play-circle-o:before { - content: "\F01D"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\F01E"; -} -.fa-refresh:before { - content: "\F021"; -} -.fa-list-alt:before { - content: "\F022"; -} -.fa-lock:before { - content: "\F023"; -} -.fa-flag:before { - content: "\F024"; -} -.fa-headphones:before { - content: "\F025"; -} -.fa-volume-off:before { - content: "\F026"; -} -.fa-volume-down:before { - content: "\F027"; -} -.fa-volume-up:before { - content: "\F028"; -} -.fa-qrcode:before { - content: "\F029"; -} -.fa-barcode:before { - content: "\F02A"; -} -.fa-tag:before { - content: "\F02B"; -} -.fa-tags:before { - content: "\F02C"; -} -.fa-book:before { - content: "\F02D"; -} -.fa-bookmark:before { - content: "\F02E"; -} -.fa-print:before { - content: "\F02F"; -} -.fa-camera:before { - content: "\F030"; -} -.fa-font:before { - content: "\F031"; -} -.fa-bold:before { - content: "\F032"; -} -.fa-italic:before { - content: "\F033"; -} -.fa-text-height:before { - content: "\F034"; -} -.fa-text-width:before { - content: "\F035"; -} -.fa-align-left:before { - content: "\F036"; -} -.fa-align-center:before { - content: "\F037"; -} -.fa-align-right:before { - content: "\F038"; -} -.fa-align-justify:before { - content: "\F039"; -} -.fa-list:before { - content: "\F03A"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\F03B"; -} -.fa-indent:before { - content: "\F03C"; -} -.fa-video-camera:before { - content: "\F03D"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\F03E"; -} -.fa-pencil:before { - content: "\F040"; -} -.fa-map-marker:before { - content: "\F041"; -} -.fa-adjust:before { - content: "\F042"; -} -.fa-tint:before { - content: "\F043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\F044"; -} -.fa-share-square-o:before { - content: "\F045"; -} -.fa-check-square-o:before { - content: "\F046"; -} -.fa-arrows:before { - content: "\F047"; -} -.fa-step-backward:before { - content: "\F048"; -} -.fa-fast-backward:before { - content: "\F049"; -} -.fa-backward:before { - content: "\F04A"; -} -.fa-play:before { - content: "\F04B"; -} -.fa-pause:before { - content: "\F04C"; -} -.fa-stop:before { - content: "\F04D"; -} -.fa-forward:before { - content: "\F04E"; -} -.fa-fast-forward:before { - content: "\F050"; -} -.fa-step-forward:before { - content: "\F051"; -} -.fa-eject:before { - content: "\F052"; -} -.fa-chevron-left:before { - content: "\F053"; -} -.fa-chevron-right:before { - content: "\F054"; -} -.fa-plus-circle:before { - content: "\F055"; -} -.fa-minus-circle:before { - content: "\F056"; -} -.fa-times-circle:before { - content: "\F057"; -} -.fa-check-circle:before { - content: "\F058"; -} -.fa-question-circle:before { - content: "\F059"; -} -.fa-info-circle:before { - content: "\F05A"; -} -.fa-crosshairs:before { - content: "\F05B"; -} -.fa-times-circle-o:before { - content: "\F05C"; -} -.fa-check-circle-o:before { - content: "\F05D"; -} -.fa-ban:before { - content: "\F05E"; -} -.fa-arrow-left:before { - content: "\F060"; -} -.fa-arrow-right:before { - content: "\F061"; -} -.fa-arrow-up:before { - content: "\F062"; -} -.fa-arrow-down:before { - content: "\F063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\F064"; -} -.fa-expand:before { - content: "\F065"; -} -.fa-compress:before { - content: "\F066"; -} -.fa-plus:before { - content: "\F067"; -} -.fa-minus:before { - content: "\F068"; -} -.fa-asterisk:before { - content: "\F069"; -} -.fa-exclamation-circle:before { - content: "\F06A"; -} -.fa-gift:before { - content: "\F06B"; -} -.fa-leaf:before { - content: "\F06C"; -} -.fa-fire:before { - content: "\F06D"; -} -.fa-eye:before { - content: "\F06E"; -} -.fa-eye-slash:before { - content: "\F070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\F071"; -} -.fa-plane:before { - content: "\F072"; -} -.fa-calendar:before { - content: "\F073"; -} -.fa-random:before { - content: "\F074"; -} -.fa-comment:before { - content: "\F075"; -} -.fa-magnet:before { - content: "\F076"; -} -.fa-chevron-up:before { - content: "\F077"; -} -.fa-chevron-down:before { - content: "\F078"; -} -.fa-retweet:before { - content: "\F079"; -} -.fa-shopping-cart:before { - content: "\F07A"; -} -.fa-folder:before { - content: "\F07B"; -} -.fa-folder-open:before { - content: "\F07C"; -} -.fa-arrows-v:before { - content: "\F07D"; -} -.fa-arrows-h:before { - content: "\F07E"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\F080"; -} -.fa-twitter-square:before { - content: "\F081"; -} -.fa-facebook-square:before { - content: "\F082"; -} -.fa-camera-retro:before { - content: "\F083"; -} -.fa-key:before { - content: "\F084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\F085"; -} -.fa-comments:before { - content: "\F086"; -} -.fa-thumbs-o-up:before { - content: "\F087"; -} -.fa-thumbs-o-down:before { - content: "\F088"; -} -.fa-star-half:before { - content: "\F089"; -} -.fa-heart-o:before { - content: "\F08A"; -} -.fa-sign-out:before { - content: "\F08B"; -} -.fa-linkedin-square:before { - content: "\F08C"; -} -.fa-thumb-tack:before { - content: "\F08D"; -} -.fa-external-link:before { - content: "\F08E"; -} -.fa-sign-in:before { - content: "\F090"; -} -.fa-trophy:before { - content: "\F091"; -} -.fa-github-square:before { - content: "\F092"; -} -.fa-upload:before { - content: "\F093"; -} -.fa-lemon-o:before { - content: "\F094"; -} -.fa-phone:before { - content: "\F095"; -} -.fa-square-o:before { - content: "\F096"; -} -.fa-bookmark-o:before { - content: "\F097"; -} -.fa-phone-square:before { - content: "\F098"; -} -.fa-twitter:before { - content: "\F099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\F09A"; -} -.fa-github:before { - content: "\F09B"; -} -.fa-unlock:before { - content: "\F09C"; -} -.fa-credit-card:before { - content: "\F09D"; -} -.fa-feed:before, -.fa-rss:before { - content: "\F09E"; -} -.fa-hdd-o:before { - content: "\F0A0"; -} -.fa-bullhorn:before { - content: "\F0A1"; -} -.fa-bell:before { - content: "\F0F3"; -} -.fa-certificate:before { - content: "\F0A3"; -} -.fa-hand-o-right:before { - content: "\F0A4"; -} -.fa-hand-o-left:before { - content: "\F0A5"; -} -.fa-hand-o-up:before { - content: "\F0A6"; -} -.fa-hand-o-down:before { - content: "\F0A7"; -} -.fa-arrow-circle-left:before { - content: "\F0A8"; -} -.fa-arrow-circle-right:before { - content: "\F0A9"; -} -.fa-arrow-circle-up:before { - content: "\F0AA"; -} -.fa-arrow-circle-down:before { - content: "\F0AB"; -} -.fa-globe:before { - content: "\F0AC"; -} -.fa-wrench:before { - content: "\F0AD"; -} -.fa-tasks:before { - content: "\F0AE"; -} -.fa-filter:before { - content: "\F0B0"; -} -.fa-briefcase:before { - content: "\F0B1"; -} -.fa-arrows-alt:before { - content: "\F0B2"; -} -.fa-group:before, -.fa-users:before { - content: "\F0C0"; -} -.fa-chain:before, -.fa-link:before { - content: "\F0C1"; -} -.fa-cloud:before { - content: "\F0C2"; -} -.fa-flask:before { - content: "\F0C3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\F0C4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\F0C5"; -} -.fa-paperclip:before { - content: "\F0C6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\F0C7"; -} -.fa-square:before { - content: "\F0C8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\F0C9"; -} -.fa-list-ul:before { - content: "\F0CA"; -} -.fa-list-ol:before { - content: "\F0CB"; -} -.fa-strikethrough:before { - content: "\F0CC"; -} -.fa-underline:before { - content: "\F0CD"; -} -.fa-table:before { - content: "\F0CE"; -} -.fa-magic:before { - content: "\F0D0"; -} -.fa-truck:before { - content: "\F0D1"; -} -.fa-pinterest:before { - content: "\F0D2"; -} -.fa-pinterest-square:before { - content: "\F0D3"; -} -.fa-google-plus-square:before { - content: "\F0D4"; -} -.fa-google-plus:before { - content: "\F0D5"; -} -.fa-money:before { - content: "\F0D6"; -} -.fa-caret-down:before { - content: "\F0D7"; -} -.fa-caret-up:before { - content: "\F0D8"; -} -.fa-caret-left:before { - content: "\F0D9"; -} -.fa-caret-right:before { - content: "\F0DA"; -} -.fa-columns:before { - content: "\F0DB"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\F0DC"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\F0DD"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\F0DE"; -} -.fa-envelope:before { - content: "\F0E0"; -} -.fa-linkedin:before { - content: "\F0E1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\F0E2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\F0E3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\F0E4"; -} -.fa-comment-o:before { - content: "\F0E5"; -} -.fa-comments-o:before { - content: "\F0E6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\F0E7"; -} -.fa-sitemap:before { - content: "\F0E8"; -} -.fa-umbrella:before { - content: "\F0E9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\F0EA"; -} -.fa-lightbulb-o:before { - content: "\F0EB"; -} -.fa-exchange:before { - content: "\F0EC"; -} -.fa-cloud-download:before { - content: "\F0ED"; -} -.fa-cloud-upload:before { - content: "\F0EE"; -} -.fa-user-md:before { - content: "\F0F0"; -} -.fa-stethoscope:before { - content: "\F0F1"; -} -.fa-suitcase:before { - content: "\F0F2"; -} -.fa-bell-o:before { - content: "\F0A2"; -} -.fa-coffee:before { - content: "\F0F4"; -} -.fa-cutlery:before { - content: "\F0F5"; -} -.fa-file-text-o:before { - content: "\F0F6"; -} -.fa-building-o:before { - content: "\F0F7"; -} -.fa-hospital-o:before { - content: "\F0F8"; -} -.fa-ambulance:before { - content: "\F0F9"; -} -.fa-medkit:before { - content: "\F0FA"; -} -.fa-fighter-jet:before { - content: "\F0FB"; -} -.fa-beer:before { - content: "\F0FC"; -} -.fa-h-square:before { - content: "\F0FD"; -} -.fa-plus-square:before { - content: "\F0FE"; -} -.fa-angle-double-left:before { - content: "\F100"; -} -.fa-angle-double-right:before { - content: "\F101"; -} -.fa-angle-double-up:before { - content: "\F102"; -} -.fa-angle-double-down:before { - content: "\F103"; -} -.fa-angle-left:before { - content: "\F104"; -} -.fa-angle-right:before { - content: "\F105"; -} -.fa-angle-up:before { - content: "\F106"; -} -.fa-angle-down:before { - content: "\F107"; -} -.fa-desktop:before { - content: "\F108"; -} -.fa-laptop:before { - content: "\F109"; -} -.fa-tablet:before { - content: "\F10A"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\F10B"; -} -.fa-circle-o:before { - content: "\F10C"; -} -.fa-quote-left:before { - content: "\F10D"; -} -.fa-quote-right:before { - content: "\F10E"; -} -.fa-spinner:before { - content: "\F110"; -} -.fa-circle:before { - content: "\F111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\F112"; -} -.fa-github-alt:before { - content: "\F113"; -} -.fa-folder-o:before { - content: "\F114"; -} -.fa-folder-open-o:before { - content: "\F115"; -} -.fa-smile-o:before { - content: "\F118"; -} -.fa-frown-o:before { - content: "\F119"; -} -.fa-meh-o:before { - content: "\F11A"; -} -.fa-gamepad:before { - content: "\F11B"; -} -.fa-keyboard-o:before { - content: "\F11C"; -} -.fa-flag-o:before { - content: "\F11D"; -} -.fa-flag-checkered:before { - content: "\F11E"; -} -.fa-terminal:before { - content: "\F120"; -} -.fa-code:before { - content: "\F121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\F122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\F123"; -} -.fa-location-arrow:before { - content: "\F124"; -} -.fa-crop:before { - content: "\F125"; -} -.fa-code-fork:before { - content: "\F126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\F127"; -} -.fa-question:before { - content: "\F128"; -} -.fa-info:before { - content: "\F129"; -} -.fa-exclamation:before { - content: "\F12A"; -} -.fa-superscript:before { - content: "\F12B"; -} -.fa-subscript:before { - content: "\F12C"; -} -.fa-eraser:before { - content: "\F12D"; -} -.fa-puzzle-piece:before { - content: "\F12E"; -} -.fa-microphone:before { - content: "\F130"; -} -.fa-microphone-slash:before { - content: "\F131"; -} -.fa-shield:before { - content: "\F132"; -} -.fa-calendar-o:before { - content: "\F133"; -} -.fa-fire-extinguisher:before { - content: "\F134"; -} -.fa-rocket:before { - content: "\F135"; -} -.fa-maxcdn:before { - content: "\F136"; -} -.fa-chevron-circle-left:before { - content: "\F137"; -} -.fa-chevron-circle-right:before { - content: "\F138"; -} -.fa-chevron-circle-up:before { - content: "\F139"; -} -.fa-chevron-circle-down:before { - content: "\F13A"; -} -.fa-html5:before { - content: "\F13B"; -} -.fa-css3:before { - content: "\F13C"; -} -.fa-anchor:before { - content: "\F13D"; -} -.fa-unlock-alt:before { - content: "\F13E"; -} -.fa-bullseye:before { - content: "\F140"; -} -.fa-ellipsis-h:before { - content: "\F141"; -} -.fa-ellipsis-v:before { - content: "\F142"; -} -.fa-rss-square:before { - content: "\F143"; -} -.fa-play-circle:before { - content: "\F144"; -} -.fa-ticket:before { - content: "\F145"; -} -.fa-minus-square:before { - content: "\F146"; -} -.fa-minus-square-o:before { - content: "\F147"; -} -.fa-level-up:before { - content: "\F148"; -} -.fa-level-down:before { - content: "\F149"; -} -.fa-check-square:before { - content: "\F14A"; -} -.fa-pencil-square:before { - content: "\F14B"; -} -.fa-external-link-square:before { - content: "\F14C"; -} -.fa-share-square:before { - content: "\F14D"; -} -.fa-compass:before { - content: "\F14E"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\F150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\F151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\F152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\F153"; -} -.fa-gbp:before { - content: "\F154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\F155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\F156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\F157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\F158"; -} -.fa-won:before, -.fa-krw:before { - content: "\F159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\F15A"; -} -.fa-file:before { - content: "\F15B"; -} -.fa-file-text:before { - content: "\F15C"; -} -.fa-sort-alpha-asc:before { - content: "\F15D"; -} -.fa-sort-alpha-desc:before { - content: "\F15E"; -} -.fa-sort-amount-asc:before { - content: "\F160"; -} -.fa-sort-amount-desc:before { - content: "\F161"; -} -.fa-sort-numeric-asc:before { - content: "\F162"; -} -.fa-sort-numeric-desc:before { - content: "\F163"; -} -.fa-thumbs-up:before { - content: "\F164"; -} -.fa-thumbs-down:before { - content: "\F165"; -} -.fa-youtube-square:before { - content: "\F166"; -} -.fa-youtube:before { - content: "\F167"; -} -.fa-xing:before { - content: "\F168"; -} -.fa-xing-square:before { - content: "\F169"; -} -.fa-youtube-play:before { - content: "\F16A"; -} -.fa-dropbox:before { - content: "\F16B"; -} -.fa-stack-overflow:before { - content: "\F16C"; -} -.fa-instagram:before { - content: "\F16D"; -} -.fa-flickr:before { - content: "\F16E"; -} -.fa-adn:before { - content: "\F170"; -} -.fa-bitbucket:before { - content: "\F171"; -} -.fa-bitbucket-square:before { - content: "\F172"; -} -.fa-tumblr:before { - content: "\F173"; -} -.fa-tumblr-square:before { - content: "\F174"; -} -.fa-long-arrow-down:before { - content: "\F175"; -} -.fa-long-arrow-up:before { - content: "\F176"; -} -.fa-long-arrow-left:before { - content: "\F177"; -} -.fa-long-arrow-right:before { - content: "\F178"; -} -.fa-apple:before { - content: "\F179"; -} -.fa-windows:before { - content: "\F17A"; -} -.fa-android:before { - content: "\F17B"; -} -.fa-linux:before { - content: "\F17C"; -} -.fa-dribbble:before { - content: "\F17D"; -} -.fa-skype:before { - content: "\F17E"; -} -.fa-foursquare:before { - content: "\F180"; -} -.fa-trello:before { - content: "\F181"; -} -.fa-female:before { - content: "\F182"; -} -.fa-male:before { - content: "\F183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\F184"; -} -.fa-sun-o:before { - content: "\F185"; -} -.fa-moon-o:before { - content: "\F186"; -} -.fa-archive:before { - content: "\F187"; -} -.fa-bug:before { - content: "\F188"; -} -.fa-vk:before { - content: "\F189"; -} -.fa-weibo:before { - content: "\F18A"; -} -.fa-renren:before { - content: "\F18B"; -} -.fa-pagelines:before { - content: "\F18C"; -} -.fa-stack-exchange:before { - content: "\F18D"; -} -.fa-arrow-circle-o-right:before { - content: "\F18E"; -} -.fa-arrow-circle-o-left:before { - content: "\F190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\F191"; -} -.fa-dot-circle-o:before { - content: "\F192"; -} -.fa-wheelchair:before { - content: "\F193"; -} -.fa-vimeo-square:before { - content: "\F194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\F195"; -} -.fa-plus-square-o:before { - content: "\F196"; -} -.fa-space-shuttle:before { - content: "\F197"; -} -.fa-slack:before { - content: "\F198"; -} -.fa-envelope-square:before { - content: "\F199"; -} -.fa-wordpress:before { - content: "\F19A"; -} -.fa-openid:before { - content: "\F19B"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\F19C"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\F19D"; -} -.fa-yahoo:before { - content: "\F19E"; -} -.fa-google:before { - content: "\F1A0"; -} -.fa-reddit:before { - content: "\F1A1"; -} -.fa-reddit-square:before { - content: "\F1A2"; -} -.fa-stumbleupon-circle:before { - content: "\F1A3"; -} -.fa-stumbleupon:before { - content: "\F1A4"; -} -.fa-delicious:before { - content: "\F1A5"; -} -.fa-digg:before { - content: "\F1A6"; -} -.fa-pied-piper-pp:before { - content: "\F1A7"; -} -.fa-pied-piper-alt:before { - content: "\F1A8"; -} -.fa-drupal:before { - content: "\F1A9"; -} -.fa-joomla:before { - content: "\F1AA"; -} -.fa-language:before { - content: "\F1AB"; -} -.fa-fax:before { - content: "\F1AC"; -} -.fa-building:before { - content: "\F1AD"; -} -.fa-child:before { - content: "\F1AE"; -} -.fa-paw:before { - content: "\F1B0"; -} -.fa-spoon:before { - content: "\F1B1"; -} -.fa-cube:before { - content: "\F1B2"; -} -.fa-cubes:before { - content: "\F1B3"; -} -.fa-behance:before { - content: "\F1B4"; -} -.fa-behance-square:before { - content: "\F1B5"; -} -.fa-steam:before { - content: "\F1B6"; -} -.fa-steam-square:before { - content: "\F1B7"; -} -.fa-recycle:before { - content: "\F1B8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\F1B9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\F1BA"; -} -.fa-tree:before { - content: "\F1BB"; -} -.fa-spotify:before { - content: "\F1BC"; -} -.fa-deviantart:before { - content: "\F1BD"; -} -.fa-soundcloud:before { - content: "\F1BE"; -} -.fa-database:before { - content: "\F1C0"; -} -.fa-file-pdf-o:before { - content: "\F1C1"; -} -.fa-file-word-o:before { - content: "\F1C2"; -} -.fa-file-excel-o:before { - content: "\F1C3"; -} -.fa-file-powerpoint-o:before { - content: "\F1C4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\F1C5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\F1C6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\F1C7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\F1C8"; -} -.fa-file-code-o:before { - content: "\F1C9"; -} -.fa-vine:before { - content: "\F1CA"; -} -.fa-codepen:before { - content: "\F1CB"; -} -.fa-jsfiddle:before { - content: "\F1CC"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\F1CD"; -} -.fa-circle-o-notch:before { - content: "\F1CE"; -} -.fa-ra:before, -.fa-resistance:before, -.fa-rebel:before { - content: "\F1D0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\F1D1"; -} -.fa-git-square:before { - content: "\F1D2"; -} -.fa-git:before { - content: "\F1D3"; -} -.fa-y-combinator-square:before, -.fa-yc-square:before, -.fa-hacker-news:before { - content: "\F1D4"; -} -.fa-tencent-weibo:before { - content: "\F1D5"; -} -.fa-qq:before { - content: "\F1D6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\F1D7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\F1D8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\F1D9"; -} -.fa-history:before { - content: "\F1DA"; -} -.fa-circle-thin:before { - content: "\F1DB"; -} -.fa-header:before { - content: "\F1DC"; -} -.fa-paragraph:before { - content: "\F1DD"; -} -.fa-sliders:before { - content: "\F1DE"; -} -.fa-share-alt:before { - content: "\F1E0"; -} -.fa-share-alt-square:before { - content: "\F1E1"; -} -.fa-bomb:before { - content: "\F1E2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\F1E3"; -} -.fa-tty:before { - content: "\F1E4"; -} -.fa-binoculars:before { - content: "\F1E5"; -} -.fa-plug:before { - content: "\F1E6"; -} -.fa-slideshare:before { - content: "\F1E7"; -} -.fa-twitch:before { - content: "\F1E8"; -} -.fa-yelp:before { - content: "\F1E9"; -} -.fa-newspaper-o:before { - content: "\F1EA"; -} -.fa-wifi:before { - content: "\F1EB"; -} -.fa-calculator:before { - content: "\F1EC"; -} -.fa-paypal:before { - content: "\F1ED"; -} -.fa-google-wallet:before { - content: "\F1EE"; -} -.fa-cc-visa:before { - content: "\F1F0"; -} -.fa-cc-mastercard:before { - content: "\F1F1"; -} -.fa-cc-discover:before { - content: "\F1F2"; -} -.fa-cc-amex:before { - content: "\F1F3"; -} -.fa-cc-paypal:before { - content: "\F1F4"; -} -.fa-cc-stripe:before { - content: "\F1F5"; -} -.fa-bell-slash:before { - content: "\F1F6"; -} -.fa-bell-slash-o:before { - content: "\F1F7"; -} -.fa-trash:before { - content: "\F1F8"; -} -.fa-copyright:before { - content: "\F1F9"; -} -.fa-at:before { - content: "\F1FA"; -} -.fa-eyedropper:before { - content: "\F1FB"; -} -.fa-paint-brush:before { - content: "\F1FC"; -} -.fa-birthday-cake:before { - content: "\F1FD"; -} -.fa-area-chart:before { - content: "\F1FE"; -} -.fa-pie-chart:before { - content: "\F200"; -} -.fa-line-chart:before { - content: "\F201"; -} -.fa-lastfm:before { - content: "\F202"; -} -.fa-lastfm-square:before { - content: "\F203"; -} -.fa-toggle-off:before { - content: "\F204"; -} -.fa-toggle-on:before { - content: "\F205"; -} -.fa-bicycle:before { - content: "\F206"; -} -.fa-bus:before { - content: "\F207"; -} -.fa-ioxhost:before { - content: "\F208"; -} -.fa-angellist:before { - content: "\F209"; -} -.fa-cc:before { - content: "\F20A"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\F20B"; -} -.fa-meanpath:before { - content: "\F20C"; -} -.fa-buysellads:before { - content: "\F20D"; -} -.fa-connectdevelop:before { - content: "\F20E"; -} -.fa-dashcube:before { - content: "\F210"; -} -.fa-forumbee:before { - content: "\F211"; -} -.fa-leanpub:before { - content: "\F212"; -} -.fa-sellsy:before { - content: "\F213"; -} -.fa-shirtsinbulk:before { - content: "\F214"; -} -.fa-simplybuilt:before { - content: "\F215"; -} -.fa-skyatlas:before { - content: "\F216"; -} -.fa-cart-plus:before { - content: "\F217"; -} -.fa-cart-arrow-down:before { - content: "\F218"; -} -.fa-diamond:before { - content: "\F219"; -} -.fa-ship:before { - content: "\F21A"; -} -.fa-user-secret:before { - content: "\F21B"; -} -.fa-motorcycle:before { - content: "\F21C"; -} -.fa-street-view:before { - content: "\F21D"; -} -.fa-heartbeat:before { - content: "\F21E"; -} -.fa-venus:before { - content: "\F221"; -} -.fa-mars:before { - content: "\F222"; -} -.fa-mercury:before { - content: "\F223"; -} -.fa-intersex:before, -.fa-transgender:before { - content: "\F224"; -} -.fa-transgender-alt:before { - content: "\F225"; -} -.fa-venus-double:before { - content: "\F226"; -} -.fa-mars-double:before { - content: "\F227"; -} -.fa-venus-mars:before { - content: "\F228"; -} -.fa-mars-stroke:before { - content: "\F229"; -} -.fa-mars-stroke-v:before { - content: "\F22A"; -} -.fa-mars-stroke-h:before { - content: "\F22B"; -} -.fa-neuter:before { - content: "\F22C"; -} -.fa-genderless:before { - content: "\F22D"; -} -.fa-facebook-official:before { - content: "\F230"; -} -.fa-pinterest-p:before { - content: "\F231"; -} -.fa-whatsapp:before { - content: "\F232"; -} -.fa-server:before { - content: "\F233"; -} -.fa-user-plus:before { - content: "\F234"; -} -.fa-user-times:before { - content: "\F235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\F236"; -} -.fa-viacoin:before { - content: "\F237"; -} -.fa-train:before { - content: "\F238"; -} -.fa-subway:before { - content: "\F239"; -} -.fa-medium:before { - content: "\F23A"; -} -.fa-yc:before, -.fa-y-combinator:before { - content: "\F23B"; -} -.fa-optin-monster:before { - content: "\F23C"; -} -.fa-opencart:before { - content: "\F23D"; -} -.fa-expeditedssl:before { - content: "\F23E"; -} -.fa-battery-4:before, -.fa-battery:before, -.fa-battery-full:before { - content: "\F240"; -} -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\F241"; -} -.fa-battery-2:before, -.fa-battery-half:before { - content: "\F242"; -} -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\F243"; -} -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\F244"; -} -.fa-mouse-pointer:before { - content: "\F245"; -} -.fa-i-cursor:before { - content: "\F246"; -} -.fa-object-group:before { - content: "\F247"; -} -.fa-object-ungroup:before { - content: "\F248"; -} -.fa-sticky-note:before { - content: "\F249"; -} -.fa-sticky-note-o:before { - content: "\F24A"; -} -.fa-cc-jcb:before { - content: "\F24B"; -} -.fa-cc-diners-club:before { - content: "\F24C"; -} -.fa-clone:before { - content: "\F24D"; -} -.fa-balance-scale:before { - content: "\F24E"; -} -.fa-hourglass-o:before { - content: "\F250"; -} -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\F251"; -} -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\F252"; -} -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\F253"; -} -.fa-hourglass:before { - content: "\F254"; -} -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\F255"; -} -.fa-hand-stop-o:before, -.fa-hand-paper-o:before { - content: "\F256"; -} -.fa-hand-scissors-o:before { - content: "\F257"; -} -.fa-hand-lizard-o:before { - content: "\F258"; -} -.fa-hand-spock-o:before { - content: "\F259"; -} -.fa-hand-pointer-o:before { - content: "\F25A"; -} -.fa-hand-peace-o:before { - content: "\F25B"; -} -.fa-trademark:before { - content: "\F25C"; -} -.fa-registered:before { - content: "\F25D"; -} -.fa-creative-commons:before { - content: "\F25E"; -} -.fa-gg:before { - content: "\F260"; -} -.fa-gg-circle:before { - content: "\F261"; -} -.fa-tripadvisor:before { - content: "\F262"; -} -.fa-odnoklassniki:before { - content: "\F263"; -} -.fa-odnoklassniki-square:before { - content: "\F264"; -} -.fa-get-pocket:before { - content: "\F265"; -} -.fa-wikipedia-w:before { - content: "\F266"; -} -.fa-safari:before { - content: "\F267"; -} -.fa-chrome:before { - content: "\F268"; -} -.fa-firefox:before { - content: "\F269"; -} -.fa-opera:before { - content: "\F26A"; -} -.fa-internet-explorer:before { - content: "\F26B"; -} -.fa-tv:before, -.fa-television:before { - content: "\F26C"; -} -.fa-contao:before { - content: "\F26D"; -} -.fa-500px:before { - content: "\F26E"; -} -.fa-amazon:before { - content: "\F270"; -} -.fa-calendar-plus-o:before { - content: "\F271"; -} -.fa-calendar-minus-o:before { - content: "\F272"; -} -.fa-calendar-times-o:before { - content: "\F273"; -} -.fa-calendar-check-o:before { - content: "\F274"; -} -.fa-industry:before { - content: "\F275"; -} -.fa-map-pin:before { - content: "\F276"; -} -.fa-map-signs:before { - content: "\F277"; -} -.fa-map-o:before { - content: "\F278"; -} -.fa-map:before { - content: "\F279"; -} -.fa-commenting:before { - content: "\F27A"; -} -.fa-commenting-o:before { - content: "\F27B"; -} -.fa-houzz:before { - content: "\F27C"; -} -.fa-vimeo:before { - content: "\F27D"; -} -.fa-black-tie:before { - content: "\F27E"; -} -.fa-fonticons:before { - content: "\F280"; -} -.fa-reddit-alien:before { - content: "\F281"; -} -.fa-edge:before { - content: "\F282"; -} -.fa-credit-card-alt:before { - content: "\F283"; -} -.fa-codiepie:before { - content: "\F284"; -} -.fa-modx:before { - content: "\F285"; -} -.fa-fort-awesome:before { - content: "\F286"; -} -.fa-usb:before { - content: "\F287"; -} -.fa-product-hunt:before { - content: "\F288"; -} -.fa-mixcloud:before { - content: "\F289"; -} -.fa-scribd:before { - content: "\F28A"; -} -.fa-pause-circle:before { - content: "\F28B"; -} -.fa-pause-circle-o:before { - content: "\F28C"; -} -.fa-stop-circle:before { - content: "\F28D"; -} -.fa-stop-circle-o:before { - content: "\F28E"; -} -.fa-shopping-bag:before { - content: "\F290"; -} -.fa-shopping-basket:before { - content: "\F291"; -} -.fa-hashtag:before { - content: "\F292"; -} -.fa-bluetooth:before { - content: "\F293"; -} -.fa-bluetooth-b:before { - content: "\F294"; -} -.fa-percent:before { - content: "\F295"; -} -.fa-gitlab:before { - content: "\F296"; -} -.fa-wpbeginner:before { - content: "\F297"; -} -.fa-wpforms:before { - content: "\F298"; -} -.fa-envira:before { - content: "\F299"; -} -.fa-universal-access:before { - content: "\F29A"; -} -.fa-wheelchair-alt:before { - content: "\F29B"; -} -.fa-question-circle-o:before { - content: "\F29C"; -} -.fa-blind:before { - content: "\F29D"; -} -.fa-audio-description:before { - content: "\F29E"; -} -.fa-volume-control-phone:before { - content: "\F2A0"; -} -.fa-braille:before { - content: "\F2A1"; -} -.fa-assistive-listening-systems:before { - content: "\F2A2"; -} -.fa-asl-interpreting:before, -.fa-american-sign-language-interpreting:before { - content: "\F2A3"; -} -.fa-deafness:before, -.fa-hard-of-hearing:before, -.fa-deaf:before { - content: "\F2A4"; -} -.fa-glide:before { - content: "\F2A5"; -} -.fa-glide-g:before { - content: "\F2A6"; -} -.fa-signing:before, -.fa-sign-language:before { - content: "\F2A7"; -} -.fa-low-vision:before { - content: "\F2A8"; -} -.fa-viadeo:before { - content: "\F2A9"; -} -.fa-viadeo-square:before { - content: "\F2AA"; -} -.fa-snapchat:before { - content: "\F2AB"; -} -.fa-snapchat-ghost:before { - content: "\F2AC"; -} -.fa-snapchat-square:before { - content: "\F2AD"; -} -.fa-pied-piper:before { - content: "\F2AE"; -} -.fa-first-order:before { - content: "\F2B0"; -} -.fa-yoast:before { - content: "\F2B1"; -} -.fa-themeisle:before { - content: "\F2B2"; -} -.fa-google-plus-circle:before, -.fa-google-plus-official:before { - content: "\F2B3"; -} -.fa-fa:before, -.fa-font-awesome:before { - content: "\F2B4"; -} -.fa-handshake-o:before { - content: "\F2B5"; -} -.fa-envelope-open:before { - content: "\F2B6"; -} -.fa-envelope-open-o:before { - content: "\F2B7"; -} -.fa-linode:before { - content: "\F2B8"; -} -.fa-address-book:before { - content: "\F2B9"; -} -.fa-address-book-o:before { - content: "\F2BA"; -} -.fa-vcard:before, -.fa-address-card:before { - content: "\F2BB"; -} -.fa-vcard-o:before, -.fa-address-card-o:before { - content: "\F2BC"; -} -.fa-user-circle:before { - content: "\F2BD"; -} -.fa-user-circle-o:before { - content: "\F2BE"; -} -.fa-user-o:before { - content: "\F2C0"; -} -.fa-id-badge:before { - content: "\F2C1"; -} -.fa-drivers-license:before, -.fa-id-card:before { - content: "\F2C2"; -} -.fa-drivers-license-o:before, -.fa-id-card-o:before { - content: "\F2C3"; -} -.fa-quora:before { - content: "\F2C4"; -} -.fa-free-code-camp:before { - content: "\F2C5"; -} -.fa-telegram:before { - content: "\F2C6"; -} -.fa-thermometer-4:before, -.fa-thermometer:before, -.fa-thermometer-full:before { - content: "\F2C7"; -} -.fa-thermometer-3:before, -.fa-thermometer-three-quarters:before { - content: "\F2C8"; -} -.fa-thermometer-2:before, -.fa-thermometer-half:before { - content: "\F2C9"; -} -.fa-thermometer-1:before, -.fa-thermometer-quarter:before { - content: "\F2CA"; -} -.fa-thermometer-0:before, -.fa-thermometer-empty:before { - content: "\F2CB"; -} -.fa-shower:before { - content: "\F2CC"; -} -.fa-bathtub:before, -.fa-s15:before, -.fa-bath:before { - content: "\F2CD"; -} -.fa-podcast:before { - content: "\F2CE"; -} -.fa-window-maximize:before { - content: "\F2D0"; -} -.fa-window-minimize:before { - content: "\F2D1"; -} -.fa-window-restore:before { - content: "\F2D2"; -} -.fa-times-rectangle:before, -.fa-window-close:before { - content: "\F2D3"; -} -.fa-times-rectangle-o:before, -.fa-window-close-o:before { - content: "\F2D4"; -} -.fa-bandcamp:before { - content: "\F2D5"; -} -.fa-grav:before { - content: "\F2D6"; -} -.fa-etsy:before { - content: "\F2D7"; -} -.fa-imdb:before { - content: "\F2D8"; -} -.fa-ravelry:before { - content: "\F2D9"; -} -.fa-eercast:before { - content: "\F2DA"; -} -.fa-microchip:before { - content: "\F2DB"; -} -.fa-snowflake-o:before { - content: "\F2DC"; -} -.fa-superpowers:before { - content: "\F2DD"; -} -.fa-wpexplorer:before { - content: "\F2DE"; -} -.fa-meetup:before { - content: "\F2E0"; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -body, -html { - min-width: 1080px; - position: relative; - z-index: 1; - font-family: tahoma,arial,Hiragino Sans GB,Microsoft YaHei; - margin: 0; -} -ul { - margin: 0; - padding: 0; - list-style: none; -} -.row { - width: 1080px; - margin: 0 auto; -} -.row::after { - content: ""; - display: block; - clear: both; -} -a { - text-decoration: none; - cursor: pointer; -} -header.site-header { - height: 60px; - background-color: #000000; - padding: 0 100px; -} -header.site-header > nav.row > * { - display: inline-block; - height: 60px; -} -header.site-header .logo { - height: 60px; - float: left; -} -header.site-header .logo > img { - height: 40px; - margin: 10px 10px 10px 10px; -} -header.site-header .top-nav { - margin-left: 235px; - margin-right: auto; - font-size: 14px; -} -header.site-header .top-nav .site-links { - float: left; - display: inline-block; -} -header.site-header .top-nav .site-links > li { - display: inline-block; - float: left; - height: 60px; -} -header.site-header .top-nav .site-links > li > a { - display: inline-block; - height: 100%; - line-height: 60px; - padding: 0 20px; - color: rgba(255, 255, 255, 0.7); -} -header.site-header .top-nav .site-links > li > a.active, -header.site-header .top-nav .site-links > li > a:hover { - color: #fff; -} -header.site-header .top-nav .version-switcher { - position: relative; - display: inline-block; - height: 60px; - float: left; -} -header.site-header .top-nav .version-switcher:hover > a { - color: #fff; -} -header.site-header .top-nav .version-switcher:hover > a .fa::before { - content: "\F106"; -} -header.site-header .top-nav .version-switcher > a { - color: rgba(255, 255, 255, 0.7); - line-height: 60px; - display: inline-block; - padding: 0 20px; -} -header.site-header .top-nav .version-switcher > a .fa::before { - margin-left: 5px; - content: "\F107"; -} -header.site-header .top-nav .version-switcher ul { - display: none; - top: 50px; - width: 60px; - text-align: center; - line-height: 30px; - background: rgba(0, 0, 0, 0.85); - color: #0073eb; - position: absolute; - left: 0; -} -header.site-header .top-nav .version-switcher ul > li > a { - color: #ababab; -} -header.site-header .top-nav .version-switcher ul > li > a:hover { - color: #0073eb; -} -header.site-header .top-nav .version-switcher:hover ul { - display: inline-block; -} -header.site-header .right-nav { - float: right; - font-size: 14px; -} -header.site-header .right-nav .language-switcher { - position: relative; - display: inline-block; - height: 60px; - float: left; -} -header.site-header .right-nav .language-switcher:hover > a { - color: #fff; -} -header.site-header .right-nav .language-switcher:hover > a .fa::before { - content: "\F106"; -} -header.site-header .right-nav .language-switcher > a { - color: rgba(255, 255, 255, 0.7); - line-height: 60px; - display: inline-block; - margin-right: 10px; -} -header.site-header .right-nav .language-switcher > a .fa::before { - margin-left: 5px; - content: "\F107"; -} -header.site-header .right-nav .language-switcher ul { - display: none; - top: 50px; - width: 60px; - text-align: center; - line-height: 30px; - background: rgba(0, 0, 0, 0.85); - color: #0073eb; - position: absolute; - left: 0; -} -header.site-header .right-nav .language-switcher ul > li > a { - color: #ababab; -} -header.site-header .right-nav .language-switcher ul > li > a:hover { - color: #0073eb; -} -header.site-header .right-nav .language-switcher:hover ul { - display: inline-block; -} -header.site-header .github-fork { - float: left; - margin-left: 20px; -} -header.site-header .github-fork > a { - display: inline-block; - line-height: 40px; - width: 100px; - color: rgba(255, 255, 255, 0.7); - padding: 0 10px; - margin: 10px 0; - font-size: 14px; -} -header.site-header .github-fork > a .fa { - font-size: 20px; - margin-right: 10px; - margin-top: 8px; - float: left; -} -header.site-header .github-fork > a span { - margin-right: 10px; - float: left; -} -header.site-header .github-fork > a:hover { - color: #fff; -} -.head-banner { - background: url(./../images/banner.jpg) no-repeat center bottom; - background-size: cover; - height: 399px; - color: #fff; - text-align: center; - padding-top: 126px; - padding-bottom: auto; -} -.head-banner .banner { - color: #fff; - padding-top: 10px; -} -.head-banner .banner h1 { - margin: 0 0 0 0; - font-size: 48px; - line-height: 60px; - font-weight: normal; -} -.head-banner .banner p { - font-size: 16px; - line-height: 20px; - font-weight: normal; - margin: 40px 0 50px 0; -} -.head-banner .banner .quick-start { - display: inline-block; - line-height: 60px; - color: #ffffff; - font-size: 18px; - width: 212px; - border: 1px solid #fff; -} -.head-banner .banner .quick-start:hover { - display: inline-block; - line-height: 60px; - color: #333; - font-size: 18px; - width: 212px; - background-color: #fff; - border: 1px solid #fff; -} -.head-banner .banner .github-counter { - display: inline-block; - margin: 50px 20px 0; - line-height: 35px; - color: #ffff; -} -.head-banner .banner .github-counter > span { - display: inline-block; - font-size: 18px; - line-height: 26px; - float: left; - padding: 0 5px; -} -.services { - background-color: #f4f5f7; -} -.services h2 { - padding-top: 80px; - position: relative; - text-align: center; - margin-top: 0px; - margin-bottom: 0px; -} -.services h2 span { - color: #333; - font-size: 30px; - font-weight: normal; - position: relative; - z-index: 1; -} -.services .sub-title { - text-align: center; - font-size: 16px; - color: #999; - font-weight: normal; - margin-top: 30px; - margin-bottom: 30px; -} -.services > .row > div { - width: 50%; - float: left; - display: inline-block; - height: 400px; - text-align: left; - position: relative; -} -.services > .row > div > * { - position: absolute; - top: 50%; - left: 0; - transform: translateY(-50%); -} -.services > .row > div .service-desc { - left: 50px; - right: 0; -} -.services > .row > div:nth-child(2n+1) { - text-align: right; -} -.services > .row > div:nth-child(2n+1) .service-desc { - right: 50px; - left: 0; -} -.services .service-icon { - text-align: center; - max-width: 100%; - max-height: 100%; -} -.services .service-desc h3 { - color: #333; - font-size: 24px; - font-weight: normal; - margin: 0; -} -.services .service-desc p { - margin: 20px 0; - font-size: 16px; - font-weight: 100; - line-height: 24px; - color: #999; -} -.services .service-desc a.view-more { - color: #666; - font-size: 16px; - display: inline-block; -} -.features { - background-color: #ffffff; - padding-top: 80px; - padding-bottom: 60px; -} -.features h2 { - text-align: center; - margin-bottom: 70px; - margin-top: 0px; - font-size: 30px; - color: #333; -} -.features h2 span { - position: relative; - z-index: 1; - font-weight: normal; - color: #333; -} -.features .feature-desc { - width: 25%; - float: left; - text-align: center; -} -.features .feature-desc h3 { - color: #333; - margin: 30px 0 20px; - font-size: 18px; - font-weight: normal; -} -.features .feature-desc p { - font-size: 14px; - text-align: center; - line-height: 24px; - color: #999; - max-width: 75%; - margin: 0; - display: inline-block; -} -.get-started { - background-color: #ffffff; - text-align: center; - padding-bottom: 80px; -} -.get-started h2 { - font-size: 30px; - color: #333; - margin-bottom: 30px; - font-weight: normal; -} -.get-started p { - font-size: 16px; - font-weight: 100; - color: #999; - margin-bottom: 30px; -} -.get-started .quick-start { - color: #fff; - background-color: #0073eb; - font-size: 18px; - display: inline-block; - line-height: 60px; - width: 212px; -} -.get-started .quick-start:hover { - color: #fff; - background-color: #3095ff; - font-size: 18px; - display: inline-block; - line-height: 60px; - width: 212px; -} -.footer-nav { - background-color: #333; - color: ccc; -} -.footer-nav .intern-console { - margin-left: 50px; - margin-right: 19px; - color: #ccc; - font-size: 12px; - line-height: 30px; - width: 150px; - float: left; - display: inline; -} -.footer-nav .chat-console { - padding-left: 50px; - color: #ccc; - font-size: 12px; - width: 600px; - float: left; - display: inline; - border-left: 1px solid rgba(241, 242, 244, 0.2); - border-right: 1px solid rgba(241, 242, 244, 0.2); -} -.footer-nav .chat-console .sub-top-nava > li { - line-height: 30px; - width: 25%; - float: left; - display: inline; - margin-bottom: 20px; -} -.footer-nav .public-console { - margin-left: 49px; - margin-right: 50px; - width: 100px; - float: left; - display: inline; -} -.footer-nav .public-console > * { - vertical-align: left; -} -.footer-nav .public-console > img { - margin-right: 5px; -} -.footer-nav .public-console > p { - color: #ccc; - font-size: 14px; -} -.footer-nav .contact-us { - color: #fff; - text-align: center; - line-height: 30px; - font-size: 14px; - margin-bottom: 20px; - padding-top: 40px; -} -.footer-nav .contact-us > * { - vertical-align: middle; -} -.footer-nav .contact-us > img { - margin-right: 5px; -} -.footer-nav .contact-us > a { - color: #fff; -} -.footer-nav .friendly-links { - text-align: center; - margin-bottom: 40px; -} -.footer-nav .friendly-links > li { - display: inline-block; - padding: 0 10px; - line-height: 12px; -} -.footer-nav .friendly-links > li > a { - color: #ccc; - font-size: 12px; -} -.footer-nav .copyright { - color: #666; - font-size: 12px; - text-align: center; - padding: 20px 0 20px; - margin-bottom: -10px; -} -.footer-nav .copyright > a { - color: #fff; -} - -/*# sourceMappingURL=home.css.map*/ \ No newline at end of file diff --git a/python/paddlecloud/notebook/static/css/home.css.map b/python/paddlecloud/notebook/static/css/home.css.map deleted file mode 100644 index 47baa8ae..00000000 --- a/python/paddlecloud/notebook/static/css/home.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"../css/home.css","sourceRoot":""} \ No newline at end of file diff --git a/python/paddlecloud/notebook/static/images/baidu_ai.png b/python/paddlecloud/notebook/static/images/baidu_ai.png deleted file mode 100644 index e7896893..00000000 Binary files a/python/paddlecloud/notebook/static/images/baidu_ai.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/banner.jpg b/python/paddlecloud/notebook/static/images/banner.jpg deleted file mode 100644 index c443088e..00000000 Binary files a/python/paddlecloud/notebook/static/images/banner.jpg and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/digital-446729_1920.jpg b/python/paddlecloud/notebook/static/images/digital-446729_1920.jpg deleted file mode 100644 index 83dff7b8..00000000 Binary files a/python/paddlecloud/notebook/static/images/digital-446729_1920.jpg and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/email-pic.png b/python/paddlecloud/notebook/static/images/email-pic.png deleted file mode 100644 index 0b03f4c3..00000000 Binary files a/python/paddlecloud/notebook/static/images/email-pic.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/feature-1.png b/python/paddlecloud/notebook/static/images/feature-1.png deleted file mode 100644 index cb1f6274..00000000 Binary files a/python/paddlecloud/notebook/static/images/feature-1.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/feature-2.png b/python/paddlecloud/notebook/static/images/feature-2.png deleted file mode 100644 index 0b45408d..00000000 Binary files a/python/paddlecloud/notebook/static/images/feature-2.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/feature-3.png b/python/paddlecloud/notebook/static/images/feature-3.png deleted file mode 100644 index cce1be65..00000000 Binary files a/python/paddlecloud/notebook/static/images/feature-3.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/feature-4.png b/python/paddlecloud/notebook/static/images/feature-4.png deleted file mode 100644 index a6160d5a..00000000 Binary files a/python/paddlecloud/notebook/static/images/feature-4.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/get-started-bg.jpg b/python/paddlecloud/notebook/static/images/get-started-bg.jpg deleted file mode 100644 index 2a4b01fa..00000000 Binary files a/python/paddlecloud/notebook/static/images/get-started-bg.jpg and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/logo.png b/python/paddlecloud/notebook/static/images/logo.png deleted file mode 100644 index 88cf5d87..00000000 Binary files a/python/paddlecloud/notebook/static/images/logo.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/outsell_loading.gif b/python/paddlecloud/notebook/static/images/outsell_loading.gif deleted file mode 100644 index 58a58402..00000000 Binary files a/python/paddlecloud/notebook/static/images/outsell_loading.gif and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/pr-code.png b/python/paddlecloud/notebook/static/images/pr-code.png deleted file mode 100644 index e8c02b2f..00000000 Binary files a/python/paddlecloud/notebook/static/images/pr-code.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/service-1.png b/python/paddlecloud/notebook/static/images/service-1.png deleted file mode 100644 index e8f1662d..00000000 Binary files a/python/paddlecloud/notebook/static/images/service-1.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/service-2.png b/python/paddlecloud/notebook/static/images/service-2.png deleted file mode 100644 index 3e47a38c..00000000 Binary files a/python/paddlecloud/notebook/static/images/service-2.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/service-3.png b/python/paddlecloud/notebook/static/images/service-3.png deleted file mode 100644 index 4052a892..00000000 Binary files a/python/paddlecloud/notebook/static/images/service-3.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/images/service-4.png b/python/paddlecloud/notebook/static/images/service-4.png deleted file mode 100644 index 9603051f..00000000 Binary files a/python/paddlecloud/notebook/static/images/service-4.png and /dev/null differ diff --git a/python/paddlecloud/notebook/static/js/common.bundle.js b/python/paddlecloud/notebook/static/js/common.bundle.js deleted file mode 100644 index a6d3d449..00000000 --- a/python/paddlecloud/notebook/static/js/common.bundle.js +++ /dev/null @@ -1,153 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // install a JSONP callback for chunk loading -/******/ var parentJsonpFunction = window["webpackJsonp"]; -/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0, resolves = [], result; -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(installedChunks[chunkId]) { -/******/ resolves.push(installedChunks[chunkId][0]); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ for(moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ modules[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); -/******/ while(resolves.length) { -/******/ resolves.shift()(); -/******/ } -/******/ if(executeModules) { -/******/ for(i=0; i < executeModules.length; i++) { -/******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]); -/******/ } -/******/ } -/******/ return result; -/******/ }; -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // objects to store loaded and loading chunks -/******/ var installedChunks = { -/******/ 1: 0 -/******/ }; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = function requireEnsure(chunkId) { -/******/ if(installedChunks[chunkId] === 0) { -/******/ return Promise.resolve(); -/******/ } -/******/ -/******/ // a Promise means "currently loading". -/******/ if(installedChunks[chunkId]) { -/******/ return installedChunks[chunkId][2]; -/******/ } -/******/ -/******/ // setup Promise in chunk cache -/******/ var promise = new Promise(function(resolve, reject) { -/******/ installedChunks[chunkId] = [resolve, reject]; -/******/ }); -/******/ installedChunks[chunkId][2] = promise; -/******/ -/******/ // start chunk loading -/******/ var head = document.getElementsByTagName('head')[0]; -/******/ var script = document.createElement('script'); -/******/ script.type = 'text/javascript'; -/******/ script.charset = 'utf-8'; -/******/ script.async = true; -/******/ script.timeout = 120000; -/******/ -/******/ if (__webpack_require__.nc) { -/******/ script.setAttribute("nonce", __webpack_require__.nc); -/******/ } -/******/ script.src = __webpack_require__.p + "" + chunkId + ".bundle.js"; -/******/ var timeout = setTimeout(onScriptComplete, 120000); -/******/ script.onerror = script.onload = onScriptComplete; -/******/ function onScriptComplete() { -/******/ // avoid mem leaks in IE. -/******/ script.onerror = script.onload = null; -/******/ clearTimeout(timeout); -/******/ var chunk = installedChunks[chunkId]; -/******/ if(chunk !== 0) { -/******/ if(chunk) { -/******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); -/******/ } -/******/ installedChunks[chunkId] = undefined; -/******/ } -/******/ }; -/******/ head.appendChild(script); -/******/ -/******/ return promise; -/******/ }; -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/Users/baidu/Desktop/cloud/dist/js"; -/******/ -/******/ // on error function for async loading -/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; -/******/ }) -/************************************************************************/ -/******/ ([]); -//# sourceMappingURL=common.bundle.js.map \ No newline at end of file diff --git a/python/paddlecloud/notebook/static/js/common.bundle.js.map b/python/paddlecloud/notebook/static/js/common.bundle.js.map deleted file mode 100644 index a559be71..00000000 --- a/python/paddlecloud/notebook/static/js/common.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap e07d307031c70ef76879"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAY,2BAA2B;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mDAA2C,cAAc;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,kDAA0C,oBAAoB,WAAW","file":"common.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0) {\n \t\t\treturn Promise.resolve();\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".bundle.js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/Users/baidu/Desktop/cloud/dist/js\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e07d307031c70ef76879"],"sourceRoot":""} \ No newline at end of file diff --git a/python/paddlecloud/notebook/static/js/home.bundle.js b/python/paddlecloud/notebook/static/js/home.bundle.js deleted file mode 100644 index 04bb2821..00000000 --- a/python/paddlecloud/notebook/static/js/home.bundle.js +++ /dev/null @@ -1,10304 +0,0 @@ -webpackJsonp([0],[ -/* 0 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * jQuery JavaScript Library v3.2.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2017-03-20T18:59Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var document = window.document; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - - - - function DOMEval( code, doc ) { - doc = doc || document; - - var script = doc.createElement( "script" ); - - script.text = code; - doc.head.appendChild( script ).parentNode.removeChild( script ); - } -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.2.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && Array.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // As of jQuery 3.0, isNumeric is limited to - // strings and numbers (primitives or objects) - // that can be coerced to finite numbers (gh-2662) - var type = jQuery.type( obj ); - return ( type === "number" || type === "string" ) && - - // parseFloat NaNs numeric-cast false positives ("") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - !isNaN( obj - parseFloat( obj ) ); - }, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - - /* eslint-disable no-unused-vars */ - // See https://github.com/eslint/eslint/issues/6125 - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - DOMEval( code ); - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE <=9 - 11, Edge 12 - 13 - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.3 - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-08-08 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - disabledAncestor = addCombinator( - function( elem ) { - return elem.disabled === true && ("form" in elem || "label" in elem); - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - disabledAncestor( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( el ) { - el.className = "i"; - return !el.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID filter and find - if ( support.getById ) { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( el ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( el ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Simple selector that can be filtered directly, removing non-Elements - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - // Complex selector, compare the two sets, removing non-Elements - qualifier = jQuery.filter( qualifier, elements ); - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( nodeName( elem, "iframe" ) ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( jQuery.isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - jQuery.isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - jQuery.isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - jQuery.isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ jQuery.camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ jQuery.camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( jQuery.camelCase ); - } else { - key = jQuery.camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - jQuery.contains( elem.ownerDocument, elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); -var documentElement = document.documentElement; - - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 only -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: jQuery.isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( ">tbody", elem )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rmargin = ( /^margin/ ); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - div.style.cssText = - "box-sizing:border-box;" + - "position:relative;display:block;" + - "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - div.innerHTML = ""; - documentElement.appendChild( container ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = divStyle.marginLeft === "2px"; - boxSizingReliableVal = divStyle.width === "4px"; - - // Support: Android 4.0 - 4.3 only - // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = divStyle.marginRight === "4px"; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - container.appendChild( div ); - - jQuery.extend( support, { - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelMarginRight: function() { - computeStyleTests(); - return pixelMarginRightVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. -function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i, - val = 0; - - // If we already have the right measurement, avoid augmentation - if ( extra === ( isBorderBox ? "border" : "content" ) ) { - i = 4; - - // Otherwise initialize for horizontal or vertical properties - } else { - i = name === "width" ? 1 : 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with computed style - var valueIsBorderBox, - styles = getStyles( elem ), - val = curCSS( elem, name, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test( val ) ) { - return val; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Fall back to offsetWidth/Height when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - if ( val === "auto" ) { - val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; - } - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - - // Use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - } ) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = extra && getStyles( elem ), - subtract = extra && augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ); - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ name ] = value; - value = jQuery.css( elem, name ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 13 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( type === "string" ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = value.match( rnothtmlwhite ) || []; - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, isFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - - - -support.focusin = "onfocusin" in window; - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = jQuery.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = jQuery.isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 13 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available, append data to url - if ( s.data ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( jQuery.isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - {% if notebook_status == "running" %} -
- -
- {% else %} -
- -
- {% endif %} -{% endblock %} diff --git a/python/paddlecloud/notebook/templates/user_certs.html b/python/paddlecloud/notebook/templates/user_certs.html deleted file mode 100644 index 594d4f4f..00000000 --- a/python/paddlecloud/notebook/templates/user_certs.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "account/base.html" %} - -{% load i18n %} -{% load bootstrap %} - -{% block body_class %}account account-certs{% endblock %} - -{% block head_title %}{% trans "Account" %}{% endblock %} - -{% block body %} -
-
-

{% trans "X509 Certificates" %}

-
- - {% for user_key in user_keys %} - - - - {% endfor %} -
- {{ user_key }} -
- {% if key_exist %} - {% blocktrans %}Download{% endblocktrans %} - {% else %} - {% blocktrans %}Generate{% endblocktrans %} - {% endif %} -
-
-{% endblock %} diff --git a/python/paddlecloud/notebook/tests.py b/python/paddlecloud/notebook/tests.py deleted file mode 100644 index 5982e6bc..00000000 --- a/python/paddlecloud/notebook/tests.py +++ /dev/null @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.test import TestCase - -# Create your tests here. diff --git a/python/paddlecloud/notebook/tls.py b/python/paddlecloud/notebook/tls.py deleted file mode 100644 index 35b8e08c..00000000 --- a/python/paddlecloud/notebook/tls.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import subprocess -import os -from django.conf import settings - - -def __check_cert_requirements__(program): - def is_exe(fpath): - return os.path.isfile(fpath) and os.access(fpath, os.X_OK) - - fpath, fname = os.path.split(program) - if fpath: - if is_exe(program): - return program - else: - for path in os.environ["PATH"].split(os.pathsep): - path = path.strip('"') - exe_file = os.path.join(path, program) - if is_exe(exe_file): - return exe_file - - return None - - -def create_user_cert(ca_path, username): - """ - @ca_path directory that contains ca.pem and ca-key.pem - """ - if not username: - raise AttributeError("username must be specified!") - if not __check_cert_requirements__("openssl"): - raise AssertionError("create user key depends on openssl command!") - user_cert_cmds = [] - user_cert_dir = os.path.join(settings.USER_CERTS_PATH, username) - user_cert_cmds.append("mkdir -p %s" % user_cert_dir) - user_cert_cmds.append("openssl genrsa -out \ - %s/%s-key.pem 2048" % (user_cert_dir, username)) - user_cert_cmds.append("openssl req -new -key %s/%s-key.pem -out\ - %s/%s.csr -subj \"/CN=%s\"" - %\ - (user_cert_dir, username, - user_cert_dir, username, username)) - user_cert_cmds.append("openssl x509 -req -in %s/%s.csr -CA %s -CAkey %s \ - -CAcreateserial -out %s/%s.pem -days 365" - % \ - (user_cert_dir, username, - settings.CA_PATH, settings.CA_KEY_PATH, - user_cert_dir, username)) - for cmd in user_cert_cmds: - process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) - process.wait() - out, err = process.communicate() - if process.returncode != 0: - raise RuntimeError("%s error with: (%d) - %s" % - (cmd, process.returncode, err)) diff --git a/python/paddlecloud/notebook/utils.py b/python/paddlecloud/notebook/utils.py deleted file mode 100644 index 8a4ca0e0..00000000 --- a/python/paddlecloud/notebook/utils.py +++ /dev/null @@ -1,315 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.conf import settings -import os -import kubernetes -import hashlib -import copy -import logging - - -def email_escape(email): - """ - Escape email to a safe string of kubernetes namespace - """ - safe_email = email.replace("@", "-") - safe_email = safe_email.replace(".", "-") - safe_email = safe_email.replace("_", "-") - return safe_email - - -def get_user_api_client(username): - """ - Update kubernetes client to use current logined user's crednetials - """ - - conf_obj = kubernetes.client.Configuration() - conf_obj.host = settings.K8S_HOST - conf_obj.ssl_ca_cert = os.path.join(settings.CA_PATH) - conf_obj.cert_file = os.path.join(settings.USER_CERTS_PATH, username, - "%s.pem" % username) - conf_obj.key_file = os.path.join(settings.USER_CERTS_PATH, username, - "%s-key.pem" % username) - api_client = kubernetes.client.ApiClient(config=conf_obj) - return api_client - - -def get_admin_api_client(): - """ - Update kubernetes client to use admin user to create namespace and authorizations - """ - - conf_obj = kubernetes.client.Configuration() - conf_obj.host = settings.K8S_HOST - conf_obj.ssl_ca_cert = os.path.join(settings.CA_PATH) - conf_obj.cert_file = os.path.join(settings.USER_CERTS_PATH, "admin.pem") - conf_obj.key_file = os.path.join(settings.USER_CERTS_PATH, "admin-key.pem") - api_client = kubernetes.client.ApiClient(config=conf_obj) - return api_client - - -def user_certs_exist(username): - """ - Return True if the user's certs already generated. User's keys are of pairs. - """ - has_cert = os.path.isfile( - os.path.join(settings.USER_CERTS_PATH, username, "%s.pem" % username)) - has_key = os.path.isfile( - os.path.join(settings.USER_CERTS_PATH, username, "%s-key.pem" % - username)) - if has_cert and has_key: - return True - else: - return False - - -# a class for creating jupyter notebook resources -class UserNotebook(): - dep_body = { - "apiVersion": "extensions/v1beta1", - "kind": "Deployment", - "metadata": { - "name": "cloud-notebook-deployment" - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "labels": { - "app": "cloud-notebook" - } - }, - "spec": { - "containers": [{ - "name": "cloud-notebook", - "image": settings.PADDLE_BOOK_IMAGE, - "command": [ - "sh", "-c", - "mkdir -p /root/.jupyter; echo \"c.NotebookApp.base_url = '/notebook/%s'\" > /root/.jupyter/jupyter_notebook_config.py; echo \"c.NotebookApp.allow_origin = '*'\" >> /root/.jupyter/jupyter_notebook_config.py; jupyter notebook --ip=0.0.0.0 --no-browser --allow-root --NotebookApp.token='' --NotebookApp.disable_check_xsrf=True /book/" - ], - "ports": [{ - "containerPort": settings.PADDLE_BOOK_PORT - }], - "resources": { - "requests": { - "memory": "4Gi", - "cpu": "1", - }, - "limits": { - "memory": "4Gi", - "cpu": "1", - } - }, - "env": [ - { - "name": "USER_NAMESPACE", - "valueFrom": { - "fieldRef": { - "fieldPath": "metadata.namespace" - } - } - }, - { - "name": "USER_POD_NAME", - "valueFrom": { - "fieldRef": { - "fieldPath": "metadata.name" - } - } - }, - { - "name": "USER_POD_IP", - "valueFrom": { - "fieldRef": { - "fieldPath": "status.podIP" - } - } - }, - { - "name": "USER_POD_SERVICE_ACCOUNT", - "valueFrom": { - "fieldRef": { - "fieldPath": "spec.serviceAccountName" - } - } - }, - ] - }] - } - } - } - } - service_body = { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "name": "cloud-notebook-service" - }, - "spec": { - "selector": { - "app": "cloud-notebook" - }, - "ports": [{ - "protocol": "TCP", - "port": 8888, - "targetPort": 8888 - }] - } - } - ing_body = { - "apiVersion": "extensions/v1beta1", - "kind": "Ingress", - "metadata": { - "name": "cloud-notebook-ingress" - }, - "spec": { - "rules": [{ - "host": d, - "http": { - "paths": [{ - "path": "/", - "backend": { - "serviceName": "cloud-notebook-service", - "servicePort": 8888 - } - }, ] - } - } for d in settings.NOTEBOOK_DOMAINS] - } - } - - def get_notebook_id(self, username): - # notebook id is md5(username) - m = hashlib.md5() - m.update(username) - - return m.hexdigest()[:8] - - def __wait_api_response(self, resp): - print resp.status - - def __find_item(self, resource_list, match_name): - item_found = False - for item in resource_list.items: - if item.metadata.name == match_name: - item_found = True - return item_found - - def __create_deployment(self, username, namespace): - v1beta1api = kubernetes.client.ExtensionsV1beta1Api( - api_client=get_user_api_client(username)) - dep_list = v1beta1api.list_namespaced_deployment(namespace) - if not self.__find_item(dep_list, "cloud-notebook-deployment"): - dep_body = copy.deepcopy(self.dep_body) - logging.info("command: %s, userid: %s", self.dep_body["spec"][ - "template"]["spec"]["containers"][0]["command"][2], - self.get_notebook_id(username)) - dep_body["spec"]["template"]["spec"]["containers"][0]["command"][2] = \ - dep_body["spec"]["template"]["spec"]["containers"][0]["command"][2] % (self.get_notebook_id(username)) - resp = v1beta1api.create_namespaced_deployment( - namespace, body=dep_body, pretty=True) - self.__wait_api_response(resp) - - def __create_service(self, username, namespace): - v1api = kubernetes.client.CoreV1Api( - api_client=get_user_api_client(username)) - service_list = v1api.list_namespaced_service(namespace) - if not self.__find_item(service_list, "cloud-notebook-service"): - resp = v1api.create_namespaced_service( - namespace, body=self.service_body) - self.__wait_api_response(resp) - - def __create_ingress(self, username, namespace): - v1beta1api = kubernetes.client.ExtensionsV1beta1Api( - api_client=get_user_api_client(username)) - ing_list = v1beta1api.list_namespaced_ingress(namespace) - if not self.__find_item(ing_list, "cloud-notebook-ingress"): - # FIXME: must split this for different users - ing_body = copy.deepcopy(self.ing_body) - ing_body["spec"]["rules"][0]["http"]["paths"][0][ - "path"] = "/notebook/" + self.get_notebook_id(username) - resp = v1beta1api.create_namespaced_ingress( - namespace, body=ing_body) - self.__wait_api_response(resp) - - def start_all(self, username, namespace): - """ - start deployment, service, ingress to start a notebook service for current user - """ - self.__create_deployment(username, namespace) - self.__create_service(username, namespace) - self.__create_ingress(username, namespace) - - def stop_all(self, username, namespace): - v1beta1api = kubernetes.client.ExtensionsV1beta1Api( - api_client=get_user_api_client(username)) - v1api = kubernetes.client.CoreV1Api( - api_client=get_user_api_client(username)) - v1beta1api.delete_namespaced_deployment("cloud-notebook-deployment", - namespace) - v1beta1api.delete_namespaced_ingress("cloud-notebook-ingress", - namespace) - v1api.delete_namespaced_service("cloud-notebook-service", namespace) - - def status(self, username, namespace): - """ - check notebook deployment status - @return: running starting stopped - """ - v1api = kubernetes.client.CoreV1Api( - api_client=get_user_api_client(username)) - v1beta1api = kubernetes.client.ExtensionsV1beta1Api( - api_client=get_user_api_client(username)) - d, s, i = (True, True, True) - # -------------------- deployment status -------------------- - dep_list = v1beta1api.list_namespaced_deployment(namespace) - if not self.__find_item(dep_list, "cloud-notebook-deployment"): - d = False - else: - # notebook must have at least one replica running - for i in dep_list.items: - if i.status.ready_replicas < 1: - d = False - # -------------------- service status -------------------- - service_list = v1api.list_namespaced_service(namespace) - if not self.__find_item(service_list, "cloud-notebook-service"): - s = False - else: - # service is ready when the endpoints to pods has been found - endpoints_list = v1api.list_namespaced_endpoints(namespace) - if not self.__find_item(endpoints_list, "cloud-notebook-service"): - s = False - # -------------------- ingress status -------------------- - ing_list = v1beta1api.list_namespaced_ingress(namespace) - if not self.__find_item(ing_list, "cloud-notebook-ingress"): - i = False - else: - i = False - try: - # ingress is ready when the remote ip is assigned - for i in ing_list.items: - if i: - for ing in i.status.load_balancer.ingress: - if not ing.ip: - i = False - except: - pass - - if d and s and i: - return "running" - elif d or s or i: - return "starting" - else: - return "stopped" diff --git a/python/paddlecloud/notebook/views.py b/python/paddlecloud/notebook/views.py deleted file mode 100644 index d50a6f1e..00000000 --- a/python/paddlecloud/notebook/views.py +++ /dev/null @@ -1,298 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.shortcuts import render -from django.dispatch import receiver -from django.http import HttpResponseRedirect, HttpResponse, JsonResponse -from django.db.models.signals import post_save -from django.contrib.auth.models import User -from django.contrib.auth.decorators import login_required -from django.contrib import messages -from django.conf import settings -# local imports -from notebook.models import PaddleUser -import notebook.forms -import account.views -import tls -import utils -# libraries -import os -import json -import logging -import hashlib -import kubernetes -import zipfile -import cStringIO as StringIO -import base64 -from wsgiref.util import FileWrapper -from rest_framework.authtoken.models import Token -from rest_framework import viewsets, generics, permissions -from rest_framework.response import Response -from rest_framework.views import APIView - - -def healthz(request): - return HttpResponse("OK") - - -class SampleView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - content = { - 'user': - unicode(request.user), # `django.contrib.auth.User` instance. - 'auth': unicode(request.auth), # None - 'result': "sample api result", - } - return Response(content) - - -@receiver(post_save, sender=settings.AUTH_USER_MODEL) -def create_auth_token(sender, instance=None, created=False, **kwargs): - if created: - Token.objects.create(user=instance) - - -@receiver(post_save, sender=User) -def handle_user_save(sender, instance, created, **kwargs): - if created: - PaddleUser.objects.create(user=instance) - - -class LoginView(account.views.LoginView): - - form_class = account.forms.LoginEmailForm - - -class SignupView(account.views.SignupView): - form_class = notebook.forms.SignupForm - identifier_field = "email" - - def after_signup(self, form): - self.update_profile(form) - logging.info("creating default user certs...") - tls.create_user_cert(settings.CA_PATH, form.cleaned_data["email"]) - # HACK: username is the same as user email - # create user's default RBAC permissions - logging.info("creating default user namespace and RBAC...") - create_user_namespace(form.cleaned_data["email"]) - create_user_RBAC_permissions(form.cleaned_data["email"]) - # create user's cephfs storage dir - try: - os.mkdir( - os.path.join(settings.STORAGE_PATH, form.cleaned_data[ - "email"])) - except Exception, e: - # FIXME: all exception is ignored - logging.error("create user's storage path error: %s", e) - - super(SignupView, self).after_signup(form) - - def update_profile(self, form): - profile = self.created_user.paddleuser # replace with your reverse one-to-one profile attribute - data = form.cleaned_data - profile.school = data["school"] - profile.studentID = data["studentID"] - profile.major = data["major"] - profile.save() - - def generate_username(self, form): - # do something to generate a unique username (required by the - # Django User model, unfortunately) - username = form.cleaned_data["email"] - return username - - -class SettingsView(account.views.SettingsView): - form_class = notebook.forms.SettingsForm - - -@login_required -def user_certs_view(request): - key_exist = utils.user_certs_exist(request.user.username) - user_keys = [ - "%s.pem" % request.user.username, "%s-key.pem" % request.user.username - ] - - return render( - request, - "user_certs.html", - context={"key_exist": key_exist, - "user_keys": user_keys}) - - -@login_required -def user_certs_download(request): - certs_file = StringIO.StringIO() - with zipfile.ZipFile( - certs_file, mode='w', compression=zipfile.ZIP_DEFLATED) as zf: - with open( - os.path.join(settings.USER_CERTS_PATH, request.user.username, - "%s.pem" % request.user.username), "r") as c: - zf.writestr('%s.pem' % request.user.username, c.read()) - with open( - os.path.join(settings.USER_CERTS_PATH, request.user.username, - "%s-key.pem" % request.user.username), "r") as s: - zf.writestr('%s-key.pem' % request.user.username, s.read()) - - response = HttpResponse( - certs_file.getvalue(), content_type='application/zip') - response[ - 'Content-Disposition'] = 'attachment; filename=%s.zip' % request.user.username - response['Content-Length'] = certs_file.tell() - return response - - -@login_required -def user_certs_generate(request): - logging.info("creating default user certs...") - try: - tls.create_user_cert(settings.CA_PATH, request.user.email) - messages.success(request, "X509 certificate generated and updated.") - except Exception, e: - messages.error(request, str(e)) - logging.error(str(e)) - return HttpResponseRedirect(request.META.get('HTTP_REFERER')) - - -def create_user_RBAC_permissions(username): - namespace = utils.email_escape(username) - rbacapi = kubernetes.client.RbacAuthorizationV1beta1Api( - utils.get_admin_api_client()) - body = { - "apiVersion": "rbac.authorization.k8s.io/v1beta1", - "kind": "RoleBinding", - "metadata": { - "name": "%s-admin-binding" % namespace, - "namespace": namespace - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "admin" - }, - "subjects": [{ - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": username - }] - } - try: - rbacapi.create_namespaced_role_binding(namespace, body) - except Exception, e: - logging.error("%s", str(e)) - # create service account permissions - body = { - "apiVersion": "rbac.authorization.k8s.io/v1beta1", - "kind": "RoleBinding", - "metadata": { - "name": "%s-sa-view" % namespace, - "namespace": namespace - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "view" - }, - "subjects": [{ - "kind": "ServiceAccount", - "name": "default", - "namespace": namespace - }] - } - try: - rbacapi.create_namespaced_role_binding(namespace, body) - except Exception, e: - logging.error("%s", str(e)) - - -def create_user_namespace(username): - v1api = kubernetes.client.CoreV1Api(utils.get_admin_api_client()) - namespaces = v1api.list_namespace() - user_namespace_found = False - user_namespace = utils.email_escape(username) - for ns in namespaces.items: - # must commit to user's namespace - if ns.metadata.name == user_namespace: - user_namespace_found = True - # Create user's namespace if it does not exist - if not user_namespace_found: - v1api.create_namespace({ - "apiVersion": "v1", - "kind": "Namespace", - "metadata": { - "name": user_namespace - } - }) - for dc, cfg in settings.DATACENTERS.items(): - #create DataCenter sercret if not exists - secrets = v1api.list_namespaced_secret(user_namespace) - secret_names = [item.metadata.name for item in secrets.items] - - # create Kubernetes Secret for ceph admin key - if cfg["fstype"] == "cephfs" and cfg["secret"] not in secret_names: - with open(cfg["admin_key"], "r") as f: - key = f.read() - encoded = base64.b64encode(key) - v1api.create_namespaced_secret(user_namespace, { - "apiVersion": "v1", - "kind": "Secret", - "metadata": { - "name": cfg["secret"] - }, - "data": { - "key": encoded - } - }) - # create docker registry secret - registry_secret = settings.JOB_DOCKER_IMAGE.get("registry_secret", None) - if registry_secret and registry_secret not in secret_names: - docker_config = settings.JOB_DOCKER_IMAGE["docker_config"] - encode = base64.b64encode(json.dumps(docker_config)) - v1api.create_namespaced_secret(user_namespace, { - "apiVersion": "v1", - "kind": "Secret", - "metadata": { - "name": registry_secret - }, - "data": { - ".dockerconfigjson": encode - }, - "type": "kubernetes.io/dockerconfigjson" - }) - return user_namespace - - -@login_required -def notebook_view(request): - """ - call kubernetes client to create a Deployment of jupyter notebook, - mount user's default volume in the pod, then jump to the notebook webpage. - """ - # NOTICE: username is the same to user's email - # NOTICE: escape the username to safe string to create namespaces - username = request.user.username - - # FIXME: notebook must be started under username's namespace - user_namespace = create_user_namespace(username) - - ub = utils.UserNotebook() - ub.start_all(username, user_namespace) - - return render( - request, - "notebook.html", - context={ - "notebook_id": ub.get_notebook_id(username), - "notebook_status": ub.status(username, user_namespace) - }) - - -@login_required -def stop_notebook_backend(request): - username = request.user.username - utils.update_user_k8s_config(username) - ub = utils.UserNotebook() - ub.stop_all(username, user_namespace) - return HttpResponseRedirect("/") diff --git a/python/paddlecloud/package.json b/python/paddlecloud/package.json deleted file mode 100644 index 3b17b2f5..00000000 --- a/python/paddlecloud/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "repository": { - "type": "git", - "url": "https://github.com/pinax/pinax-project" - }, - "scripts": { - "clean": "rm -rf static/dist && mkdir -p static/dist/js && mkdir -p static/dist/css && mkdir -p static/dist/fonts && mkdir -p static/dist/images", - "watch:babel": "babel static/src/js --out-dir static/dist/js --quiet --watch", - "build:babel": "babel static/src/js --out-dir static/dist/js --quiet", - "build:js": "browserify -t [ babelify --presets [ es2015 stage-1 ] ] -t envify static/src/js/index.js | uglifyjs -c warnings=false -o static/dist/js/site.js", - "build:css": "lessc --include-path=node_modules/font-awesome/less:node_modules/bootstrap/less static/src/less/site.less static/dist/css/site.css", - "copy:fonts": "cp node_modules/bootstrap/fonts/* static/dist/fonts/ && cp node_modules/font-awesome/fonts/* static/dist/fonts/", - "copy:images": "cp -r static/src/images/* static/dist/images/ 2>/dev/null || :", - "optimize:js": "uglifyjs static/dist/js/site.js -m -c warnings=false -o static/dist/js/site.js", - "optimize:css": "cssnano static/dist/css/site.css static/dist/css/site.css", - "optimize": "npm run optimize:js && npm run optimize:css", - "watch:test": "onchange static/src/js/**/*.js -- npm run test", - "watch:lint": "onchange static/src/js/**/*.js -- npm run lint", - "watch:js": "watchify -t [ babelify --presets [ es2015 stage-1 ] ] -t envify static/src/js/index.js -o 'exorcist static/dist/js/site.js.map > static/dist/js/site.js' -dv", - "watch:css": "onchange static/src/less/**/*.less -- npm run build:css", - "build": "npm run clean && concurrently \"npm run build:babel\" \"npm run build:js\" \"npm run build:css\" \"npm run copy:fonts\" \"npm run copy:images\" && npm run optimize", - "watch": "npm run clean && npm run copy:fonts && npm run copy:images && npm run build:css && concurrently --raw \"npm run watch:lint\" \"npm run watch:babel\" \"npm run watch:js\" \"npm run watch:css\"", - "dev:browser-sync": "browser-sync start --no-open --proxy localhost:8000 --files \"static/dist/js/*.js, static/dist/css/*.css\"", - "dev": "concurrently --raw \"./manage.py runserver\" \"npm run watch\" \"npm run dev:browser-sync\"", - "lint": "eslint static/src/**/**/*.js", - "test": "mocha --recursive --compilers js:babel-register static/src/tests/index.js" - }, - "license": "UNLICENSED", - "dependencies": { - "bootstrap": "3.3.7", - "font-awesome": "4.7.0", - "jquery": "3.2.0", - "babel-cli": "6.24.1", - "babel-preset-es2015": "6.24.1", - "babel-preset-stage-1": "6.24.1", - "babelify": "7.3.0", - "browser-sync": "2.18.8", - "browserify": "14.3.0", - "chai": "3.5.0", - "concurrently": "3.4.0", - "cssnano": "3.10.0", - "cssnano-cli": "1.0.5", - "envify": "4.0.0", - "eslint": "3.19.0", - "eslint-plugin-babel": "4.1.1", - "exorcist": "0.4.0", - "jsdom": "9.12.0", - "jsdom-global": "2.1.1", - "less": "2.7.2", - "mocha": "3.2.0", - "onchange": "3.2.1", - "uglifyjs": "2.4.10", - "watchify": "3.9.0" - } -} diff --git a/python/paddlecloud/paddlecloud/__init__.py b/python/paddlecloud/paddlecloud/__init__.py deleted file mode 100644 index c5b63fb4..00000000 --- a/python/paddlecloud/paddlecloud/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -# -*- coding: utf-8 -*- - -__about__ = """ -In addition to what is provided by the "zero" project, this project -provides thorough integration with django-user-accounts, adding -comprehensive account management functionality. It is a foundation -suitable for most sites that have user accounts. -""" - -default_app_config = "paddlecloud.apps.AppConfig" diff --git a/python/paddlecloud/paddlecloud/apps.py b/python/paddlecloud/paddlecloud/apps.py deleted file mode 100644 index b8323a03..00000000 --- a/python/paddlecloud/paddlecloud/apps.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from importlib import import_module - -from django.apps import AppConfig as BaseAppConfig - - -class AppConfig(BaseAppConfig): - - name = "paddlecloud" - - def ready(self): - import_module("paddlecloud.receivers") diff --git a/python/paddlecloud/paddlecloud/receivers.py b/python/paddlecloud/paddlecloud/receivers.py deleted file mode 100644 index bd3d8fb5..00000000 --- a/python/paddlecloud/paddlecloud/receivers.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.dispatch import receiver - -from account.signals import password_changed -from account.signals import user_sign_up_attempt, user_signed_up -from account.signals import user_login_attempt, user_logged_in - -from pinax.eventlog.models import log - - -@receiver(user_logged_in) -def handle_user_logged_in(sender, **kwargs): - log(user=kwargs.get("user"), action="USER_LOGGED_IN", extra={}) - - -@receiver(password_changed) -def handle_password_changed(sender, **kwargs): - log(user=kwargs.get("user"), action="PASSWORD_CHANGED", extra={}) - - -@receiver(user_login_attempt) -def handle_user_login_attempt(sender, **kwargs): - log(user=None, - action="LOGIN_ATTEMPTED", - extra={ - "username": kwargs.get("username"), - "result": kwargs.get("result") - }) - - -@receiver(user_sign_up_attempt) -def handle_user_sign_up_attempt(sender, **kwargs): - log(user=None, - action="SIGNUP_ATTEMPTED", - extra={ - "username": kwargs.get("username"), - "email": kwargs.get("email"), - "result": kwargs.get("result") - }) - - -@receiver(user_signed_up) -def handle_user_signed_up(sender, **kwargs): - log(user=kwargs.get("user"), action="USER_SIGNED_UP", extra={}) diff --git a/python/paddlecloud/paddlecloud/settings.py b/python/paddlecloud/paddlecloud/settings.py deleted file mode 100644 index 0f6b8d43..00000000 --- a/python/paddlecloud/paddlecloud/settings.py +++ /dev/null @@ -1,342 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -from kubernetes import config - -PROJECT_ROOT = os.path.abspath( - os.path.join(os.path.dirname(__file__), os.pardir)) -PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__)) -BASE_DIR = PACKAGE_ROOT - -DEBUG = True - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.mysql", - "NAME": "paddlecloud", - 'USER': 'root', - 'PASSWORD': 'root', - 'HOST': '127.0.0.1', # Or an IP Address that your DB is hosted on - 'PORT': '3306', - } -} - -ALLOWED_HOSTS = [ - "127.0.0.1", - "cloud.paddlepaddle.org", -] - -POD_IP = os.getenv("POD_IP") -if POD_IP: - ALLOWED_HOSTS.append(POD_IP) - -REST_FRAMEWORK = { - # Use Django's standard `django.contrib.auth` permissions, - # or allow read-only access for unauthenticated users. - 'DEFAULT_AUTHENTICATION_CLASSES': ( - 'rest_framework.authentication.BasicAuthentication', - 'rest_framework.authentication.SessionAuthentication', - 'rest_framework.authentication.TokenAuthentication', ), - 'DEFAULT_PERMISSION_CLASSES': - ['rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'] -} - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = "UTC" - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = "en-us" - -SITE_ID = int(os.environ.get("SITE_ID", 1)) - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale. -USE_L10N = True - -# If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/home/media/media.lawrence.com/media/" -MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media") - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash. -# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" -MEDIA_URL = "/site_media/media/" - -# Absolute path to the directory static files should be collected to. -# Don"t put anything in this directory yourself; store your static files -# in apps" "static/" subdirectories and in STATICFILES_DIRS. -# Example: "/home/media/media.lawrence.com/static/" -STATIC_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "static") - -# URL prefix for static files. -# Example: "http://media.lawrence.com/static/" -STATIC_URL = "/site_media/static/" - -# Additional locations of static files -STATICFILES_DIRS = [os.path.join(PROJECT_ROOT, "static", "dist"), ] - -STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage" - -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = [ - "django.contrib.staticfiles.finders.FileSystemFinder", - "django.contrib.staticfiles.finders.AppDirectoriesFinder", -] - -# Make this unique, and don't share it with anybody. -SECRET_KEY = "vpu^(5mjr)*tloao^m$wlh)oc(fn1yoiqoq@m0$er((qlocq1k" - -TEMPLATES = [{ - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [os.path.join(PACKAGE_ROOT, "templates"), ], - "APP_DIRS": True, - "OPTIONS": { - "debug": DEBUG, - "context_processors": [ - "django.contrib.auth.context_processors.auth", - "django.template.context_processors.debug", - "django.template.context_processors.i18n", - "django.template.context_processors.media", - "django.template.context_processors.static", - "django.template.context_processors.tz", - "django.template.context_processors.request", - "django.contrib.messages.context_processors.messages", - "account.context_processors.account", - "pinax_theme_bootstrap.context_processors.theme", - ], - }, -}, ] - -MIDDLEWARE = [ - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.auth.middleware.SessionAuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", - "account.middleware.ExpiredPasswordMiddleware", -] - -ROOT_URLCONF = "paddlecloud.urls" - -# Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = "paddlecloud.wsgi.application" - -INSTALLED_APPS = [ - "django.contrib.admin", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.messages", - "django.contrib.sessions", - "django.contrib.sites", - "django.contrib.staticfiles", - # token auth - "rest_framework", - "rest_framework.authtoken", - # paddlecloud apps - # NOTE: load before pinax_theme_bootstrap to customize the theme - "notebook", - - # theme - "bootstrapform", - "pinax_theme_bootstrap", - - # external - "account", - "pinax.eventlog", - "pinax.webanalytics", - - # project - "paddlecloud", -] - -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "filters": { - "require_debug_false": { - "()": "django.utils.log.RequireDebugFalse" - } - }, - 'formatters': { - 'verbose': { - 'format': '[%(levelname)s %(asctime)s @ %(process)d] - %(message)s' - }, - 'simple': { - 'format': '%(levelname)s %(message)s' - }, - }, - "handlers": { - "mail_admins": { - "level": "ERROR", - "filters": ["require_debug_false"], - "class": "django.utils.log.AdminEmailHandler" - }, - "stdout": { - "level": "INFO", - "class": "logging.StreamHandler", - "formatter": "verbose" - }, - }, - "loggers": { - "": { - "handlers": ["stdout"], - "level": "ERROR", - "propagate": True, - }, - "django.request": { - "handlers": ["mail_admins"], - "level": "ERROR", - "propagate": True, - }, - } -} - -FIXTURE_DIRS = [os.path.join(PROJECT_ROOT, "fixtures"), ] - -EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" - -LOGIN_URL = "/account/login" - -ACCOUNT_OPEN_SIGNUP = True -ACCOUNT_EMAIL_UNIQUE = True -ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = False -ACCOUNT_LOGIN_REDIRECT_URL = "home" -ACCOUNT_LOGOUT_REDIRECT_URL = "home" -ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2 -ACCOUNT_USE_AUTH_AUTHENTICATE = True -ACCOUNT_USER_DISPLAY = lambda user: user.email - -ACCOUNT_PASSWORD_EXPIRY = 60 * 60 * 24 * 5 # seconds until pw expires, this example shows five days -ACCOUNT_PASSWORD_USE_HISTORY = True - -AUTHENTICATION_BACKENDS = [ - "account.auth_backends.UsernameAuthenticationBackend", -] - -# secret places to store ca and users keys -CA_PATH = "/certs/ca.pem" -CA_KEY_PATH = "/certs/ca-key.pem" -USER_CERTS_PATH = "/certs" - -K8S_HOST = "https://%s:%s" % (os.getenv("KUBERNETES_SERVICE_HOST"), - os.getenv("KUBERNETES_SERVICE_PORT_HTTPS")) -# PADDLE_BOOK_IMAGE="docker.paddlepaddle.org/book:0.10.0rc2" -PADDLE_BOOK_IMAGE = "yancey1989/book-cloud" -PADDLE_BOOK_PORT = 8888 - -# ============== Datacenter Storage Config Samples ============== -#if Paddle cloud use CephFS as backend storage, configure CEPHFS_CONFIGURATION -#the following is an example: - -#DATACENTERS = { -# "datacenter1":{ -# "fstype": "cephfs", -# "monitors_addr": "172.19.32.166:6789", -# "secret": "ceph-secret", -# "user": "admin", -# "mount_path": "/pfs/%s/home/%s/", # mount_path % ( dc, username ) -# "cephfs_path": "/%s" # cephfs_path % username -# "admin_key": "/certs/admin.secret" -# } -#} -#for HostPath example: -#DATACENTERS = { -# ... -# "dc1":{ -# "fstype": "hostpath", -# "host_path": "/mnt/hdfs/%s/", # host_path % username -# "mount_path" "/pfs/%s/home/%s/" # mount_path % ( dc, username ) -# } -#} -FSTYPE_CEPHFS = "cephfs" -FSTYPE_HOSTPATH = "hostpath" -DATACENTERS = { - "meiyan": { - "fstype": FSTYPE_CEPHFS, - "monitors_addr": ["172.19.32.166:6789"], # must be a list - "secret": "ceph-secret", - "user": "admin", - "mount_path": "/pfs/%s/home/%s/", # mount_path % ( dc, username ) - "cephfs_path": "/%s", # cephfs_path % username - "admin_key": "/certs/admin.secret", - }, - "public": { - "fstype": FSTYPE_CEPHFS, - "monitors_addr": ["172.19.32.166:6789"], # must be a list - "secret": "ceph-secret", - "user": "admin", - "mount_path": "/pfs/%s/public/", # mount_path % ( dc, username ) - "cephfs_path": "/public", # cephfs_path % username - "admin_key": "/certs/admin.secret", - "read_only": True - } -} -# where cephfs root is mounted when using cephfs storage service -STORAGE_PATH = "/pfs" -# HACK: define use HDFS or CEPHFS, in cephfs mode jobpath will be /pfs/jobs/[jobname] -STORAGE_MODE = "HDFS" - -# ===================== Docker image registry ===================== -JOB_DOCKER_IMAGE = { - # These images are built by `docker/build_docker.sh` under this repo. - "image": "typhoon1986/paddlecloud-job", - "image_gpu": "typhoon1986/paddlecloud-job:gpu", - # docker registry credentials - "registry_secret": - "job-registry-secret", # put this to None if not using registry login - "docker_config": { - "auths": { - "registry.baidu.com": { - "auth": "eWFueHUwNTpRTndVSGV1Rldl" - } - } - } -} - -# Path store all cuda, nvidia driver libs -NVIDIA_LIB_PATH = "/usr/local/nvidia/lib64" -# etcd image for fault-tolerant jobs -ETCD_IMAGE = "quay.io/coreos/etcd:v3.2.1" - -# domains that allow notebook to enter -NOTEBOOK_DOMAINS = ["cloud.paddlepaddle.org"] - -# GPU limit for users -# TODO(Yancey1989): -# 1. Implement -# 2. Move GPU quota to Kubernetes -GPU_QUOTA = {"DEFAULT": {"limit": 2}, "yanxu05@baidu.com": {"limit": 5}} diff --git a/python/paddlecloud/paddlecloud/templates/_account_bar.html b/python/paddlecloud/paddlecloud/templates/_account_bar.html deleted file mode 100644 index d896e3dd..00000000 --- a/python/paddlecloud/paddlecloud/templates/_account_bar.html +++ /dev/null @@ -1,26 +0,0 @@ -{% load i18n %} -{% load account_tags %} - - - - - diff --git a/python/paddlecloud/paddlecloud/templates/_footer.html b/python/paddlecloud/paddlecloud/templates/_footer.html deleted file mode 100644 index ac447a2e..00000000 --- a/python/paddlecloud/paddlecloud/templates/_footer.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load i18n %} - -{% trans "© 2017 <paddlepaddle.org>" %} - Github: https://github.com/PaddlePaddle/Paddle diff --git a/python/paddlecloud/paddlecloud/templates/homepage.html b/python/paddlecloud/paddlecloud/templates/homepage.html deleted file mode 100644 index f8d82270..00000000 --- a/python/paddlecloud/paddlecloud/templates/homepage.html +++ /dev/null @@ -1,80 +0,0 @@ -{% extends "site_base.html" %} - -{% load i18n %} - -{% block head_title %}dashboard{% endblock %} - -{% block body_class %}home{% endblock %} - -{% block body_base %} -
-
- {% include "_messages.html" %} -

{% blocktrans %}Welcome to
PaddlePaddle Cloud{% endblocktrans %}

-

- {% blocktrans %} - Open and Easy-to-Use Deep Learning Cloud Platform for Enterprise and Research.
-

    -
  • Take advantage of the large scale cloud computing resource.
  • -
  • Free Nvidia GPU resources
  • -
  • Serverless Deep Learning training jobs.
  • -
- {% endblocktrans %} -

- {% if not user.is_authenticated %} - {% url "account_login" as login_url %} - {% url "account_signup" as signup_url %} -

{% blocktrans %}You can Log In or Sign Up to try out the site.{% endblocktrans %}

- {% endif %} -
-
-
-
-

{% blocktrans %}What is PaddlePaddle Cloud?{% endblocktrans %}

-

- {% blocktrans %} - PaddlePaddle Cloud is an open-source platform based on Django and - intended to provide a starting point for websites. It takes - care of the things that many sites have in common, so you can - focus on what makes your site different. - {% endblocktrans %} -

-
-
-
- {% blocktrans %} - Starter projects provide project layout, - scaffolding, already integrated components and - ready-to-go code. - Launch Paddle notebook - {% endblocktrans %} -
-
-
- {% blocktrans %} - Reusable apps provide common - infrastructure, back-end functionality, - and user-facing components. - {% endblocktrans %} -
-
-
- {% blocktrans %} - Themes provide default templates and - stylesheets for quick prototyping and easy customization. - {% endblocktrans %} -
-
-
-
-
-
-

- {% blocktrans %} - See paddlepaddle.org - for more information. - {% endblocktrans %} -

-
-
-{% endblock %} diff --git a/python/paddlecloud/paddlecloud/templates/site_base.html b/python/paddlecloud/paddlecloud/templates/site_base.html deleted file mode 100644 index 2fcc3955..00000000 --- a/python/paddlecloud/paddlecloud/templates/site_base.html +++ /dev/null @@ -1,49 +0,0 @@ -{% extends "theme_bootstrap/base.html" %} - -{% load staticfiles %} -{% load pinax_webanalytics_tags %} -{% load i18n %} -{% load notebook_status_tags %} - -{% block nav %} - {% get_user_notebook_status request.user as status %} - {% if request.user.is_authenticated %} - - {% endif %} -{% endblock %} - -{% block styles %} - -{% endblock %} - - -{% block extra_head_base %} - {% block extra_head %}{% endblock %} -{% endblock %} - - -{% block footer %} - {% include "_footer.html" %} -{% endblock %} - - -{% block scripts %} - -{% endblock %} - -{% block extra_body_base %} - {% analytics %} - {% block extra_body %}{% endblock %} -{% endblock %} diff --git a/python/paddlecloud/paddlecloud/templatetags/__init__.py b/python/paddlecloud/paddlecloud/templatetags/__init__.py deleted file mode 100644 index eca2dce1..00000000 --- a/python/paddlecloud/paddlecloud/templatetags/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/python/paddlecloud/paddlecloud/templatetags/notebook_status_tags.py b/python/paddlecloud/paddlecloud/templatetags/notebook_status_tags.py deleted file mode 100644 index abef38b1..00000000 --- a/python/paddlecloud/paddlecloud/templatetags/notebook_status_tags.py +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import unicode_literals -from django import template -from django.contrib.messages.utils import get_level_tags -from django.utils.encoding import force_text -from notebook.utils import email_escape, UserNotebook, user_certs_exist -import kubernetes - -LEVEL_TAGS = get_level_tags() - -register = template.Library() - - -def _get_notebook_id(self, username): - # notebook id is md5(username) - m = hashlib.md5() - m.update(username) - - return m.hexdigest()[:8] - - -@register.simple_tag() -def get_user_notebook_status(user): - if not user.is_authenticated: - return "" - username = user.username - if user_certs_exist(username): - namespace = email_escape(user.email) - ub = UserNotebook() - return ub.status(username, namespace) - else: - return "unknown" diff --git a/python/paddlecloud/paddlecloud/travis_settings.py b/python/paddlecloud/paddlecloud/travis_settings.py deleted file mode 100644 index b667352d..00000000 --- a/python/paddlecloud/paddlecloud/travis_settings.py +++ /dev/null @@ -1,313 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -from kubernetes import config - -PROJECT_ROOT = os.path.abspath( - os.path.join(os.path.dirname(__file__), os.pardir)) -PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__)) -BASE_DIR = PACKAGE_ROOT - -DEBUG = True - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.mysql", - "NAME": "paddlecloud", - "USER": "root", - 'HOST': '127.0.0.1', # Or an IP Address that your DB is hosted on - 'PORT': '3306', - 'USER': 'root', - } -} - -ALLOWED_HOSTS = [ - "127.0.0.1", - "cloud.paddlepaddle.org", -] - -POD_IP = os.getenv("POD_IP") -if POD_IP: - ALLOWED_HOSTS.append(POD_IP) - -REST_FRAMEWORK = { - # Use Django's standard `django.contrib.auth` permissions, - # or allow read-only access for unauthenticated users. - 'DEFAULT_AUTHENTICATION_CLASSES': ( - 'rest_framework.authentication.BasicAuthentication', - 'rest_framework.authentication.SessionAuthentication', - 'rest_framework.authentication.TokenAuthentication', ), - 'DEFAULT_PERMISSION_CLASSES': - ['rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'] -} - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = "UTC" - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = "en-us" - -SITE_ID = int(os.environ.get("SITE_ID", 1)) - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale. -USE_L10N = True - -# If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/home/media/media.lawrence.com/media/" -MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media") - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash. -# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" -MEDIA_URL = "/site_media/media/" - -# Absolute path to the directory static files should be collected to. -# Don"t put anything in this directory yourself; store your static files -# in apps" "static/" subdirectories and in STATICFILES_DIRS. -# Example: "/home/media/media.lawrence.com/static/" -STATIC_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "static") - -# URL prefix for static files. -# Example: "http://media.lawrence.com/static/" -STATIC_URL = "/site_media/static/" - -# Additional locations of static files -STATICFILES_DIRS = [os.path.join(PROJECT_ROOT, "static", "dist"), ] - -STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage" - -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = [ - "django.contrib.staticfiles.finders.FileSystemFinder", - "django.contrib.staticfiles.finders.AppDirectoriesFinder", -] - -# Make this unique, and don't share it with anybody. -SECRET_KEY = "vpu^(5mjr)*tloao^m$wlh)oc(fn1yoiqoq@m0$er((qlocq1k" - -TEMPLATES = [{ - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [os.path.join(PACKAGE_ROOT, "templates"), ], - "APP_DIRS": True, - "OPTIONS": { - "debug": DEBUG, - "context_processors": [ - "django.contrib.auth.context_processors.auth", - "django.template.context_processors.debug", - "django.template.context_processors.i18n", - "django.template.context_processors.media", - "django.template.context_processors.static", - "django.template.context_processors.tz", - "django.template.context_processors.request", - "django.contrib.messages.context_processors.messages", - "account.context_processors.account", - "pinax_theme_bootstrap.context_processors.theme", - ], - }, -}, ] - -MIDDLEWARE = [ - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.auth.middleware.SessionAuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", - "account.middleware.ExpiredPasswordMiddleware", -] - -ROOT_URLCONF = "paddlecloud.urls" - -# Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = "paddlecloud.wsgi.application" - -INSTALLED_APPS = [ - "django.contrib.admin", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.messages", - "django.contrib.sessions", - "django.contrib.sites", - "django.contrib.staticfiles", - # token auth - "rest_framework", - "rest_framework.authtoken", - # paddlecloud apps - # NOTE: load before pinax_theme_bootstrap to customize the theme - "notebook", - - # theme - "bootstrapform", - "pinax_theme_bootstrap", - - # external - "account", - "pinax.eventlog", - "pinax.webanalytics", - - # project - "paddlecloud", -] - -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "filters": { - "require_debug_false": { - "()": "django.utils.log.RequireDebugFalse" - } - }, - 'formatters': { - 'verbose': { - 'format': '[%(levelname)s %(asctime)s @ %(process)d] - %(message)s' - }, - 'simple': { - 'format': '%(levelname)s %(message)s' - }, - }, - "handlers": { - "mail_admins": { - "level": "ERROR", - "filters": ["require_debug_false"], - "class": "django.utils.log.AdminEmailHandler" - }, - "stdout": { - "level": "INFO", - "class": "logging.StreamHandler", - "formatter": "verbose" - }, - }, - "loggers": { - "": { - "handlers": ["stdout"], - "level": "ERROR", - "propagate": True, - }, - "django.request": { - "handlers": ["mail_admins"], - "level": "ERROR", - "propagate": True, - }, - } -} - -FIXTURE_DIRS = [os.path.join(PROJECT_ROOT, "fixtures"), ] - -EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" - -ACCOUNT_OPEN_SIGNUP = True -ACCOUNT_EMAIL_UNIQUE = True -ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = False -ACCOUNT_LOGIN_REDIRECT_URL = "home" -ACCOUNT_LOGOUT_REDIRECT_URL = "home" -ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2 -ACCOUNT_USE_AUTH_AUTHENTICATE = True -ACCOUNT_USER_DISPLAY = lambda user: user.email - -ACCOUNT_PASSWORD_EXPIRY = 60 * 60 * 24 * 5 # seconds until pw expires, this example shows five days -ACCOUNT_PASSWORD_USE_HISTORY = True - -AUTHENTICATION_BACKENDS = [ - "account.auth_backends.UsernameAuthenticationBackend", -] - -# secret places to store ca and users keys -CA_PATH = "/certs/ca.pem" -CA_KEY_PATH = "/certs/ca-key.pem" -USER_CERTS_PATH = "/certs" - -K8S_HOST = "https://%s:%s" % (os.getenv("KUBERNETES_SERVICE_HOST"), - os.getenv("KUBERNETES_SERVICE_PORT_HTTPS")) -# PADDLE_BOOK_IMAGE="docker.paddlepaddle.org/book:0.10.0rc2" -PADDLE_BOOK_IMAGE = "yancey1989/book-cloud" -PADDLE_BOOK_PORT = 8888 - -if os.getenv("KUBERNETES_SERVICE_HOST", None): - # init kubernete client with service account - config.load_incluster_config() -else: - # init kubernetes client with ~/.kube/config file - config.load_kube_config() - -#if Paddle cloud use CephFS as backend storage, configure CEPHFS_CONFIGURATION -#the following is an example: -#DATACENTERS = { -# "datacenter1":{ -# "fstype": "cephfs", -# "monitors_addr": "172.19.32.166:6789", -# "secret": "ceph-secret", -# "user": "admin", -# "mount_path": "/pfs/datacenter1/home/%s/", # mount_path % username -# "cephfs_path": "/%s" # cephfs_path % username -# "admin_key": "/certs/admin.secret" -# } -#} -#for HostPath example: -#DATACENTERS = { -# ... -# "dc1":{ -# "fstype": "hostpath", -# "host_path": "/mnt/hdfs/", -# "mount_path" "/pfs/dc1/home/%s/" # mount_path % username -# } -#} -DATACENTERS = { - "datacenter1": { - "fstype": "cephfs", - "monitors_addr": "172.19.32.166:6789", - "secret": "ceph-secret", - "user": "admin", - "mount_path": "/pfs/datacenter1/home/%s/", # mount_path % username - "cephfs_path": "/%s", # cephfs_path % username - "admin_key": "/certs/admin.secret" - } -} - -JOB_DOCKER_IMAGE = { - "image": "yancey1989/paddlecloud-job", - "registry_secret": "job-registry-secret", - "docker_config": { - "auths": { - "registry.baidu.com": { - "auth": "eWFueHUwNTpRTndVSGV1Rldl" - } - } - } -} - -# domains that allow notebook to enter -NOTEBOOK_DOMAINS = ["www.paddlepaddle.org"] diff --git a/python/paddlecloud/paddlecloud/urls.py b/python/paddlecloud/paddlecloud/urls.py deleted file mode 100644 index be2c7190..00000000 --- a/python/paddlecloud/paddlecloud/urls.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.conf import settings -from django.conf.urls import include, url -from django.conf.urls.static import static -from django.views.generic import TemplateView - -from django.contrib import admin -import account.urls - -import notebook.views -import paddlejob.views -from rest_framework.authtoken import views -from rest_framework import routers - -urlpatterns = [ - url(r"^$", - TemplateView.as_view(template_name="homepage.html"), - name="home"), - url(r"^healthz/", notebook.views.healthz), - url(r"^admin/", include(admin.site.urls)), - url(r"^account/signup/$", - notebook.views.SignupView.as_view(), - name="account_signup"), - url(r"^account/login/$", - notebook.views.LoginView.as_view(), - name="account_login"), - url(r"^account/settings/$", - notebook.views.SettingsView.as_view(), - name="account_settings"), - url(r"^account/certs/$", - notebook.views.user_certs_view, - name="account_certs"), - url(r"^account/", include("account.urls")), - url(r"^notedash/", notebook.views.notebook_view), - url(r"^notestop/", notebook.views.stop_notebook_backend), - url(r"^certsdown/", notebook.views.user_certs_download), - url(r"^certsgen/", notebook.views.user_certs_generate), - url(r'^api-token-auth/', views.obtain_auth_token), - url(r'^api/sample/$', notebook.views.SampleView.as_view()), - url(r"^api/v1/jobs/", paddlejob.views.JobsView.as_view()), - url(r"^api/v1/trainingjobs/", paddlejob.views.TrainingJobsView.as_view()), - url(r"^api/v1/pservers/", paddlejob.views.PserversView.as_view()), - url(r"^api/v1/logs/", paddlejob.views.LogsView.as_view()), - url(r"^api/v1/workers/", paddlejob.views.WorkersView.as_view()), - url(r"^api/v1/quota/", paddlejob.views.QuotaView.as_view()), - url(r"^api/v1/file/", paddlejob.views.SimpleFileView.as_view()), - url(r"^api/v1/token2user/", paddlejob.views.GetUserView.as_view()), - url(r"^api/v1/filelist/", paddlejob.views.SimpleFileList.as_view()), - url(r"^api/v1/registry/", paddlejob.registry.RegistryView.as_view()), - url(r"^api/v1/publish/", paddlejob.views.FilePublishAPIView.as_view()), - url(r"^filepub/", paddlejob.views.file_publish_view), -] - -urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) -urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/python/paddlecloud/paddlecloud/wsgi.py b/python/paddlecloud/paddlecloud/wsgi.py deleted file mode 100644 index c482acd8..00000000 --- a/python/paddlecloud/paddlecloud/wsgi.py +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -WSGI config for paddlecloud project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "paddlecloud.settings") - -application = get_wsgi_application() diff --git a/python/paddlecloud/paddlejob/__init__.py b/python/paddlecloud/paddlejob/__init__.py deleted file mode 100644 index 1a5c64eb..00000000 --- a/python/paddlecloud/paddlejob/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from paddle_job import PaddleJob -import registry -__all__ = ["PaddleJob", "registry"] diff --git a/python/paddlecloud/paddlejob/cloudprovider/__init__.py b/python/paddlecloud/paddlejob/cloudprovider/__init__.py deleted file mode 100644 index eca2dce1..00000000 --- a/python/paddlecloud/paddlejob/cloudprovider/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/python/paddlecloud/paddlejob/cloudprovider/k8s_provider.py b/python/paddlecloud/paddlejob/cloudprovider/k8s_provider.py deleted file mode 100644 index f8ecd627..00000000 --- a/python/paddlecloud/paddlejob/cloudprovider/k8s_provider.py +++ /dev/null @@ -1,386 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from kubernetes import client, config -from kubernetes.client.rest import ApiException -# FIXME(typhoonzero): still need to import settings -from django.conf import settings - -import copy -import os -import logging -import traceback - -import utils -import volume -import json - - -# FIXME(typhoonzero): need a base class to define the interfaces? -class K8sProvider: - """ - Kubernetes Cloud Porvider - Provide interfaces for manage jobs and resources. - """ - - def __init__(self): - pass - - def get_jobs(self, username): - namespace = utils.email_escape(username) - api_instance =\ - client.BatchV1Api(api_client=utils.get_user_api_client(username)) - job_list = api_instance.list_namespaced_job(namespace) - # NOTE: when job is deleted, some pods of the job will be at "Terminating" status - # for a while, which may cause submit fail. Find all pods that are still "Terminating". - user_pod_list =\ - client.CoreV1Api(api_client=utils.get_user_api_client(username))\ - .list_namespaced_pod(namespace) - terminating_jobs = [] - for pod in user_pod_list.items: - jobname = "" - if not pod.metadata.labels: - continue - if "paddle-job" in pod.metadata.labels: - jobname = pod.metadata.labels["paddle-job"] - elif "paddle-job-master" in pod.metadata.labels: - jobname = pod.metadata.labels["paddle-job-master"] - elif "paddle-job-pserver" in pod.metadata.labels: - jobname = pod.metadata.labels["paddle-job-pserver"] - if pod.metadata.deletion_timestamp and jobname: - if jobname not in terminating_jobs: - terminating_jobs.append(jobname) - # NOTE: put it in the original dict for backward compability - ret_dict = copy.deepcopy(job_list.to_dict()) - ret_dict["terminating"] = terminating_jobs - return ret_dict - - def __setup_volumes(self, paddlejob, username): - volumes = [] - for k, cfg in settings.DATACENTERS.items(): - if k != paddlejob.dc and k != "public": - continue - fstype = cfg["fstype"] - if fstype == settings.FSTYPE_CEPHFS: - if k == "public": - mount_path = cfg["mount_path"] % paddlejob.dc - cephfs_path = cfg["cephfs_path"] - else: - mount_path = cfg["mount_path"] % (paddlejob.dc, username) - cephfs_path = cfg["cephfs_path"] % username - volumes.append( - volume.get_volume_config( - fstype=fstype, - name=k.replace("_", "-"), - monitors_addr=cfg["monitors_addr"], - secret=cfg["secret"], - user=cfg["user"], - mount_path=mount_path, - cephfs_path=cephfs_path, - admin_key=cfg["admin_key"], - read_only=cfg.get("read_only", False))) - elif fstype == settings.FSTYPE_HOSTPATH: - if k == "public": - mount_path = cfg["mount_path"] % paddlejob.dc - host_path = cfg["host_path"] - else: - mount_path = cfg["mount_path"] % (paddlejob.dc, username) - host_path = cfg["host_path"] % username - - volumes.append( - volume.get_volume_config( - fstype=fstype, - name=k.replace("_", "-"), - mount_path=mount_path, - host_path=host_path)) - else: - pass - paddlejob.volumes = volumes - - def _valid_and_fill(self, paddlejob, username): - namespace = utils.email_escape(username) - api_client = utils.get_user_api_client(username) - self.__setup_volumes(paddlejob, username) - if not paddlejob.registry_secret: - paddlejob.registry_secret = settings.JOB_DOCKER_IMAGE.get( - "registry_secret", None) - if not paddlejob.image: - if paddlejob.gpu > 0: - paddlejob.image = settings.JOB_DOCKER_IMAGE["image_gpu"] - else: - paddlejob.image = settings.JOB_DOCKER_IMAGE["image"] - - # jobPackage validation: startwith /pfs - # NOTE: job packages are uploaded to /pfs/[dc]/home/[user]/jobs/[jobname] - package_in_pod = os.path.join("/pfs/%s/home/%s" % ( - paddlejob.dc, username), "jobs", paddlejob.name) - - logging.info("valid_and_fill: current package: %s", package_in_pod) - # package must be ready before submit a job - current_package_path = package_in_pod.replace( - "/pfs/%s/home" % paddlejob.dc, settings.STORAGE_PATH) - if not os.path.exists(current_package_path): - current_package_path = package_in_pod.replace("/pfs/%s/home/%s" % ( - paddlejob.dc, username), settings.STORAGE_PATH) - if not os.path.exists(current_package_path): - raise Exception("package not exist in cloud: %s" % - current_package_path) - logging.info("valid_and_fill: current package in pod: %s", - current_package_path) - - # GPU quota management - # TODO(Yancey1989) We should move this to Kubernetes - if 'GPU_QUOTA' in dir(settings) and int(paddlejob.gpu) > 0: - gpu_usage = 0 - pods = client.CoreV1Api(api_client=api_client).list_namespaced_pod( - namespace=namespace) - for pod in pods.items: - # only statistics trainer GPU resource, pserver does not use GPU - if pod.metadata.labels and 'paddle-job' in pod.metadata.labels and \ - pod.status.phase == 'Running': - gpu_usage += int(pod.spec.containers[ - 0].resources.limits.get( - 'alpha.kubernetes.io/nvidia-gpu', '0')) - if username in settings.GPU_QUOTA: - gpu_quota = settings.GPU_QUOTA[username]['limit'] - else: - gpu_quota = settings.GPU_QUOTA['DEFAULT']['limit'] - gpu_available = gpu_quota - gpu_usage - gpu_request = int(paddlejob.gpu) * int(paddlejob.parallelism) - logging.info('gpu available: %d, gpu request: %d' % - (gpu_available, gpu_request)) - if gpu_available < gpu_request: - raise Exception("You don't have enought GPU quota," + \ - "request: %d, usage: %d, limit: %d" % (gpu_request, gpu_usage, gpu_quota)) - - # add Nvidia lib volume if training with GPU - if paddlejob.gpu > 0: - paddlejob.volumes.append( - volume.get_volume_config( - fstype=settings.FSTYPE_HOSTPATH, - name="nvidia-libs", - mount_path="/usr/local/nvidia/lib64", - host_path=settings.NVIDIA_LIB_PATH)) - - def submit_job(self, paddlejob, username): - self._valid_and_fill(paddlejob, username) - - namespace = utils.email_escape(username) - api_client = utils.get_user_api_client(username) - # ========== submit master ReplicaSet if using fault_tolerant feature == - # FIXME: alpha features in separate module - if paddlejob.fault_tolerant: - try: - ret = client.ExtensionsV1beta1Api( - api_client=api_client).create_namespaced_replica_set( - namespace, paddlejob.new_master_job()) - except ApiException, e: - logging.error("error submitting master job: %s", - traceback.format_exc()) - raise e - # ========================= submit pserver job ========================= - try: - ret = client.ExtensionsV1beta1Api( - api_client=api_client).create_namespaced_replica_set( - namespace, paddlejob.new_pserver_job()) - except ApiException, e: - logging.error("error submitting pserver job: %s ", - traceback.format_exc()) - raise e - # ========================= submit trainer job ========================= - try: - ret = client.BatchV1Api( - api_client=api_client).create_namespaced_job( - namespace, paddlejob.new_trainer_job()) - except ApiException, e: - logging.error("error submitting trainer job: %s" % - traceback.format_exc()) - raise e - return ret - - def _create_traingingjobs(self, body, username): - namespace = utils.email_escape(username) - api_client = utils.get_user_api_client(username) - resource_path = '/apis/paddlepaddle.org/v1/namespaces/' + namespace + '/trainingjobs' - header_params = {} - header_params['Accept'] = api_client.select_header_accept( - ['application/json']) - header_params['Content-Type'] = api_client.select_header_content_type( - ['*/*']) - - (resp, code, header) = api_client.call_api( - resource_path, - 'POST', {'namespace': namespace}, {}, - header_params, - body, [], - _preload_content=False) - - return json.loads(resp.data.decode('utf-8')) - - def submit_trainingjobs(self, paddlejob, username): - self._valid_and_fill(paddlejob, username) - - job = paddlejob.new_trainingjobs() - resp = self._create_traingingjobs(job, username) - - logging.info(str(resp)) - - def delete_trainingjobs(self, paddlejob, username): - api_client = utils.get_user_api_client(username) - resp = client.ExtensionsV1beta1Api().\ - delete_third_party_resource("TrainingJobs", body=kubernetes.client.V1DeleteOptions()) - print("ThirdPartyResource delete") - print(str(resp)) - - def delete_job(self, jobname, username): - namespace = utils.email_escape(username) - api_client = utils.get_user_api_client(username) - if not jobname: - return utils.simple_response(500, "must specify jobname") - # FIXME: options needed: grace_period_seconds, orphan_dependents, preconditions - # FIXME: cascade delteing - delete_status = [] - # delete job - trainer_name = jobname + "-trainer" - try: - u_status = client.BatchV1Api(api_client=api_client)\ - .delete_namespaced_job(trainer_name, namespace, {}) - except ApiException, e: - logging.error("error deleting job: %s, %s", jobname, str(e)) - delete_status.append(str(e)) - - # delete job pods - try: - job_pod_list = client.CoreV1Api(api_client=api_client)\ - .list_namespaced_pod(namespace, - label_selector="paddle-job=%s"%jobname) - for i in job_pod_list.items: - u_status = client.CoreV1Api(api_client=api_client)\ - .delete_namespaced_pod(i.metadata.name, namespace, {}) - except ApiException, e: - logging.error("error deleting job pod: %s", str(e)) - delete_status.append(str(e)) - - # delete pserver rs - pserver_name = jobname + "-pserver" - try: - u_status = client.ExtensionsV1beta1Api(api_client=api_client)\ - .delete_namespaced_replica_set(pserver_name, namespace, {}) - except ApiException, e: - logging.error("error deleting pserver: %s" % str(e)) - delete_status.append(str(e)) - - # delete pserver pods - try: - # pserver replica set has label with jobname - job_pod_list = client.CoreV1Api(api_client=api_client)\ - .list_namespaced_pod(namespace, - label_selector="paddle-job-pserver=%s"%jobname) - for i in job_pod_list.items: - u_status = client.CoreV1Api(api_client=api_client)\ - .delete_namespaced_pod(i.metadata.name, namespace, {}) - except ApiException, e: - logging.error("error deleting pserver pods: %s" % str(e)) - delete_status.append(str(e)) - - # delete master rs - master_name = jobname + "-master" - try: - u_status = client.ExtensionsV1beta1Api(api_client=api_client)\ - .delete_namespaced_replica_set(master_name, namespace, {}) - except ApiException, e: - logging.error("error deleting master: %s" % str(e)) - # just ignore deleting master failed, we do not set up master process - # without fault tolerant mode - #delete_status.append(str(e)) - - # delete master pods - try: - # master replica set has label with jobname - job_pod_list = client.CoreV1Api(api_client=api_client)\ - .list_namespaced_pod(namespace, - label_selector="paddle-job-master=%s"%jobname) - for i in job_pod_list.items: - u_status = client.CoreV1Api(api_client=api_client)\ - .delete_namespaced_pod(i.metadata.name, namespace, {}) - except ApiException, e: - logging.error("error deleting master pods: %s" % str(e)) - # just ignore deleting master failed, we do not set up master process - # without fault tolerant mode - #delete_status.append(str(e)) - - if len(delete_status) > 0: - retcode = 500 - else: - retcode = 200 - return retcode, delete_status - - def get_pservers(self, username): - namespace = utils.email_escape(username) - api_instance = client.ExtensionsV1beta1Api( - api_client=utils.get_user_api_client(username)) - return api_instance.list_namespaced_replica_set(namespace).to_dict() - - def get_logs(self, jobname, num_lines, worker, username): - def _get_pod_log(api_client, namespace, pod_name, num_lines): - try: - if num_lines: - pod_log = client.CoreV1Api(api_client=api_client)\ - .read_namespaced_pod_log( - pod_name, namespace, tail_lines=int(num_lines)) - else: - pod_log = client.CoreV1Api(api_client=api_client)\ - .read_namespaced_pod_log(i.metadata.name, namespace) - return pod_log - except ApiException, e: - return str(e) - - namespace = utils.email_escape(username) - api_client = utils.get_user_api_client(username) - job_pod_list = client.CoreV1Api(api_client=api_client)\ - .list_namespaced_pod(namespace, label_selector="paddle-job=%s"%jobname) - total_job_log = "" - if not worker: - for i in job_pod_list.items: - total_job_log = "".join( - (total_job_log, - "==========================%s==========================" % - i.metadata.name)) - pod_log = _get_pod_log(api_client, namespace, i.metadata.name, - num_lines) - total_job_log = "\n".join((total_job_log, pod_log)) - else: - total_job_log = _get_pod_log(api_client, namespace, worker, - num_lines) - return total_job_log - - def get_workers(self, jobname, username): - namespace = utils.email_escape(username) - job_pod_list = None - api_client = utils.get_user_api_client(username) - if not jobname: - job_pod_list = client.CoreV1Api(api_client=api_client)\ - .list_namespaced_pod(namespace) - else: - selector = "paddle-job=%s" % jobname - job_pod_list = client.CoreV1Api(api_client=api_client)\ - .list_namespaced_pod(namespace, label_selector=selector) - return job_pod_list.to_dict() - - def get_quotas(self, username): - namespace = utils.email_escape(username) - api_client = utils.get_user_api_client(username) - quota_list = client.CoreV1Api(api_client=api_client)\ - .list_namespaced_resource_quota(namespace) - return quota_list.to_dict() diff --git a/python/paddlecloud/paddlejob/cloudprovider/utils.py b/python/paddlecloud/paddlejob/cloudprovider/utils.py deleted file mode 100644 index 92a0200f..00000000 --- a/python/paddlecloud/paddlejob/cloudprovider/utils.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import kubernetes -from kubernetes import client, config -from kubernetes.client.rest import ApiException -import os -# FIXME(typhoonzero): still need to import settings -from django.conf import settings - - -def email_escape(email): - """ - Escape email to a safe string of kubernetes namespace - """ - safe_email = email.replace("@", "-") - safe_email = safe_email.replace(".", "-") - safe_email = safe_email.replace("_", "-") - return safe_email - - -def get_user_api_client(username): - """ - Update kubernetes client to use current logined user's crednetials - """ - - conf_obj = kubernetes.client.Configuration() - conf_obj.host = settings.K8S_HOST - conf_obj.ssl_ca_cert = os.path.join(settings.CA_PATH) - conf_obj.cert_file = os.path.join(settings.USER_CERTS_PATH, username, - "%s.pem" % username) - conf_obj.key_file = os.path.join(settings.USER_CERTS_PATH, username, - "%s-key.pem" % username) - api_client = kubernetes.client.ApiClient(config=conf_obj) - return api_client - - -def get_admin_api_client(): - """ - Update kubernetes client to use admin user to create namespace and authorizations - """ - - conf_obj = kubernetes.client.Configuration() - conf_obj.host = settings.K8S_HOST - conf_obj.ssl_ca_cert = os.path.join(settings.CA_PATH) - conf_obj.cert_file = os.path.join(settings.USER_CERTS_PATH, "admin.pem") - conf_obj.key_file = os.path.join(settings.USER_CERTS_PATH, "admin-key.pem") - api_client = kubernetes.client.ApiClient(config=conf_obj) - return api_client - - -def user_certs_exist(username): - """ - Return True if the user's certs already generated. User's keys are of pairs. - """ - has_cert = os.path.isfile( - os.path.join(settings.USER_CERTS_PATH, username, "%s.pem" % username)) - has_key = os.path.isfile( - os.path.join(settings.USER_CERTS_PATH, username, "%s-key.pem" % - username)) - if has_cert and has_key: - return True - else: - return False diff --git a/python/paddlecloud/paddlejob/cloudprovider/volume.py b/python/paddlecloud/paddlejob/cloudprovider/volume.py deleted file mode 100644 index 09b9b712..00000000 --- a/python/paddlecloud/paddlejob/cloudprovider/volume.py +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json - -__all__ = ["get_volume_config"] - -tmpl_volume = { - "hostpath": "{\"name\": $NAME, \"hostPath\":{\"path\": $HOST_PATH}}", - "cephfs": "{\"name\": $NAME,\"cephfs\":{\"name\": \"cephfs\", \ - \"monitors\": $MONITORS_ADDR,\"path\": $CEPHFS_PATH, \ - \"readOnly\": $READ_ONLY, \"user\": $USER, \ - \"secretRef\": {\"name\": $SECRET}}}" -} -tmpl_volume_mount = { - "hostpath": "{\"name\": $NAME, \"mountPath\":$MOUNT_PATH}", - "cephfs": "{\"mountPath\": $MOUNT_PATH, \"name\": $NAME}" -} - - -def __render(tmpl, **kwargs): - for k, v in kwargs.items(): - tmpl_k = "$%s" % k.upper() - if tmpl.find(tmpl_k) != -1: - if type(v) is str or type(v) is unicode: - tmpl = tmpl.replace(tmpl_k, "\"%s\"" % v) - elif type(v) is list or type(v) is bool: - tmpl = tmpl.replace(tmpl_k, json.dumps(v)) - else: - pass - return tmpl - - -def __get_template(tmpls, fstype): - if fstype in tmpls.keys(): - return tmpls[fstype] - else: - return "" - - -def get_volume_config(**kwargs): - """ - :param fstype: which filesystem type - :type fstype: str - - if fstype is host_path: - - :param name: a unique name for a Kubernetes job configuration - :type name: str - :param mount_path: path in pod - :type mount_path: str - :param host_path: path no the host - :type host_path: str - - if fstype is cephfs: - - :param name: unique name for a Kubernetes Job configuration - :type name: str - :param monitors_addr: the CephFS monitors address - :type monitors_addr: list - :param cephfs_path: CephFS Path - :type cephfs_path: str - :param user: ceph cluster user - :type user: str - :param secret: Kubernetes Secret for Ceph secret - :type secret: str - :param mount_path: mount path in Pod - :type mount_path: str - """ - fstype = kwargs["fstype"] - tmpl_v = __get_template(tmpl_volume, fstype) - tmpl_vm = __get_template(tmpl_volume_mount, fstype) - return { - "volume": json.loads(__render( - tmpl=tmpl_v, **kwargs)), - "volume_mount": json.loads(__render( - tmpl=tmpl_vm, **kwargs)) - } diff --git a/python/paddlecloud/paddlejob/paddle_job.py b/python/paddlecloud/paddlejob/paddle_job.py deleted file mode 100644 index 64b53c83..00000000 --- a/python/paddlecloud/paddlejob/paddle_job.py +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import kubernetes -from kubernetes import client, config -import os - -from specs import spec_master, spec_pserver, spec_trainer, spec_trainingjob - -DEFAULT_PADDLE_PORT = 7164 -DEFAULT_MASTER_PORT = 8080 -DEFAULT_ETCD_PORT = 2379 - - -class UniversionedAPI(object): - """ - Base defination for Paddle Cloud API fields. - """ - required = { - "name": "The name of the job.", - "job_package": "The folder containing the job programs.", - "parallelism": "The number of trainers to launch.", - "cpu": "The CPU resource for each trainer.", - "memory": "The memory resource for each trainer.", - "pservers": "The number of pservers to launch.", - "pscpu": "The CPU resource for each pserver.", - "psmemory": "The memory resouce for each pserver.", - "topology": "The Paddle V1 config file.", - "entry": "The command to run.", - "dc": "The datacenter specs." - } - optional = { - "image": "The docker image to use", - "passes": "The number of passes to run.", - "gpu": "The number of GPU for each trainer.", - "fault_tolerant": "Whether using the new fault-tolerant mode.", - "volumes": "The data volumes to mount on pod.", - "registry_secret": "The secret for reading registry.", - "envs": "The environment variables for all pods", - "etcd_image": "The etcd docker image.", - "min_instance": - "The minimum number of trainers to launch, only used for faulttolerant.", - "max_instance": - "The maximum number of trainers to launch, only used for faulttolerant." - } - optional_defaults = { - "image": "", - "passes": 1, - "gpu": 0, - "fault_tolerant": False, - "volumes": [], - "registry_secret": "", - "envs": {}, - "etcd_image": "quay.io/coreos/etcd:v3.2.1" - } - # do not expose to user attributes. - internal = { - "ports_num": "ports_num argument for trainer.", - "ports_num_for_sparse": "ports_num_for_sparse argument for trainer.", - "mastercpu": "master process cpu resource.", - "mastermemory": "master process memory resource." - } - # internal_defaults may be changed during setup. - internal_defaults = { - "ports_num": 1, - "ports_num_for_sparse": 1, - "mastercpu": 1, - "mastermemory": "300Mi", - "num_gradient_servers": 1 - } - - -class APIV1(UniversionedAPI): - """ - For v1 implementation - """ - pass - - -class PaddleJob(object): - """ - PaddleJob Abstraction. - A job can be submited to any cluster environment - using one submit engine. - """ - - def __init__(self, **kwargs): - self.apiv1 = APIV1() - # setup required - for k in self.apiv1.required: - if k not in kwargs: - raise Exception("Field required: %s" % k) - setattr(self, k, kwargs[k]) - for k in self.apiv1.optional: - if k in kwargs: - setattr(self, k, kwargs[k]) - else: - setattr(self, k, self.apiv1.optional_defaults[k]) - for k in self.apiv1.internal: - setattr(self, k, self.apiv1.internal_defaults[k]) - - self.num_gradient_servers = self.parallelism - - def get_master_name(self): - return "%s-master" % self.name - - def get_pserver_name(self): - return "%s-pserver" % self.name - - def get_trainer_name(self): - return "%s-trainer" % self.name - - def get_env(self): - envs = [] - envs.append({"name": "PADDLE_JOB_NAME", "value": self.name}) - envs.append({"name": "TRAINERS", "value": str(self.parallelism)}) - envs.append({"name": "PSERVERS", "value": str(self.pservers)}) - envs.append({"name": "TOPOLOGY", "value": self.topology}) - envs.append({"name": "ENTRY", "value": self.entry}) - envs.append({"name": "TRAINER_PACKAGE", "value": self.job_package}) - envs.append({ - "name": "PADDLE_INIT_PORT", - "value": str(DEFAULT_PADDLE_PORT) - }) - if self.gpu > 0: - envs.append({ - "name": "PADDLE_INIT_TRAINER_COUNT", - "value": str(self.gpu) - }) - else: - envs.append({ - "name": "PADDLE_INIT_TRAINER_COUNT", - "value": str(self.cpu) - }) - envs.append({ - "name": "PADDLE_INIT_PORTS_NUM", - "value": str(self.ports_num) - }) - envs.append({ - "name": "PADDLE_INIT_PORTS_NUM_FOR_SPARSE", - "value": str(self.ports_num_for_sparse) - }) - envs.append({ - "name": "PADDLE_INIT_NUM_GRADIENT_SERVERS", - "value": str(self.num_gradient_servers) - }) - envs.append({ - "name": "PADDLE_INIT_NUM_PASSES", - "value": str(self.passes) - }) - if self.gpu: - envs.append({"name": "PADDLE_INIT_USE_GPU", "value": str("1")}) - # HACK: add nvidia lib LD_LIBRARY_PATH for all pods - envs.append({ - "name": "LD_LIBRARY_PATH", - "value": "/usr/local/nvidia/lib64" - }) - else: - envs.append({"name": "PADDLE_INIT_USE_GPU", "value": str("0")}) - envs.append({ - "name": "NAMESPACE", - "valueFrom": { - "fieldRef": { - "fieldPath": "metadata.namespace" - } - } - }) - if self.envs: - for k, v in self.envs.items(): - envs.append({"name": k, "value": v}) - return envs - - def get_pserver_container_ports(self): - ports = [] - port = DEFAULT_PADDLE_PORT - for i in xrange(self.ports_num + self.ports_num_for_sparse): - ports.append({"containerPort": port, "name": "jobport-%d" % i}) - port += 1 - return ports - - def get_master_container_ports(self): - ports = [] - port = DEFAULT_MASTER_PORT - ports.append({ - "containerPort": DEFAULT_MASTER_PORT, - "name": "master-port" - }) - ports.append({"containerPort": DEFAULT_ETCD_PORT, "name": "etcd-port"}) - return ports - - def get_master_labels(self): - return {"paddle-job-master": self.name} - - def get_pserver_labels(self): - return {"paddle-job-pserver": self.name} - - def get_master_entrypoint(self): - return ["paddle_k8s", "start_master"] - - def get_pserver_entrypoint(self): - if not self.fault_tolerant: - return ["paddle_k8s", "start_pserver"] - else: - return ["paddle_k8s", "start_new_pserver"] - - def get_trainer_entrypoint(self): - if self.entry: - if self.fault_tolerant: - return ["paddle_k8s", "start_new_trainer"] - return ["paddle_k8s", "start_trainer", "v2"] - return ["paddle_k8s", "start_trainer", "v1"] - - def get_trainer_labels(self): - return {"paddle-job": self.name} - - def get_trainer_volumes(self): - volumes = [] - for item in self.volumes: - volumes.append(item["volume"]) - return volumes - - def get_trainer_volume_mounts(self): - volume_mounts = [] - for item in self.volumes: - volume_mounts.append(item["volume_mount"]) - return volume_mounts - - def new_master_job(self): - return spec_master.get_spec_master(self) - - def new_pserver_job(self): - return spec_pserver.get_spec_pserver(self) - - def new_trainer_job(self): - return spec_trainer.get_spec_trainer(self) - - def new_trainingjobs(self): - return spec_trainingjob.get_trainingjob(self) diff --git a/python/paddlecloud/paddlejob/registry.py b/python/paddlecloud/paddlejob/registry.py deleted file mode 100644 index 927fe1fb..00000000 --- a/python/paddlecloud/paddlejob/registry.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.http import HttpResponseRedirect, HttpResponse, JsonResponse -from django.contrib import messages -from django.conf import settings -from kubernetes import client, config -from kubernetes.client.rest import ApiException -from . import PaddleJob -from rest_framework.authtoken.models import Token -from rest_framework import viewsets, generics, permissions -from rest_framework.response import Response -from rest_framework.views import APIView -from rest_framework.parsers import MultiPartParser, FormParser, FileUploadParser -import json -import utils -import notebook.utils -import logging -import os -import base64 - - -def docker_cfg(username, password, email, server): - auth = "%s:%s" % (username, password) - auth_encode = base64.b64encode(auth) - return json.dumps({ - server: { - "username": username, - "password": password, - "email": email, - "auth": auth_encode - } - }) - - -class RegistryView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def post(self, request): - """ - Cretea a registry secret - """ - username = request.user.username - user_namespace = notebook.utils.email_escape(username) - api_client = notebook.utils.get_user_api_client(username) - obj = json.loads(request.body) - name = obj.get("name") - docker_username = obj.get("username") - docker_password = obj.get("password") - docker_server = obj.get("server") - cfg = docker_cfg(docker_username, docker_password, username, - docker_server) - try: - ret = client.CoreV1Api( - api_client=api_client).create_namespaced_secret( - namespace=user_namespace, - body={ - "apiVersion": "v1", - "kind": "Secret", - "metadata": { - "name": name - }, - "data": { - ".dockerconfigjson": base64.b64encode(cfg) - }, - "type": "kubernetes.io/dockerconfigjson" - }) - except ApiException, e: - logging.error("Failed when create secret.") - return utils.simple_response(500, str(e)) - return utils.simple_response(200, "") - - def delete(self, request): - """ - Delete a registry secret - """ - username = username = request.user.username - user_namespace = notebook.utils.email_escape(username) - api_client = notebook.utils.get_user_api_client(username) - obj = json.loads(request.body) - name = obj.get("name") - try: - ret = client.CoreV1Api( - api_client=api_client).delete_namespaced_secret( - name=name, - namespace=user_namespace, - body=client.V1DeleteOptions()) - except ApiException, e: - logging.error("Failed when delete secret.") - return utils.simple_response(500, str(e)) - return utils.simple_response(200, "") - - def get(self, request): - """ - Get registrys - """ - username = username = request.user.username - user_namespace = notebook.utils.email_escape(username) - api_client = notebook.utils.get_user_api_client(username) - try: - secretes_list = client.CoreV1Api( - api_client=api_client).list_namespaced_secret( - namespace=user_namespace) - return utils.simple_response(200, secretes_list.to_dict()) - except ApiException, e: - logging.error("Failed when list secrets.") - return utils.simple_response(500, str(e)) diff --git a/python/paddlecloud/paddlejob/specs/__init__.py b/python/paddlecloud/paddlejob/specs/__init__.py deleted file mode 100644 index 44072645..00000000 --- a/python/paddlecloud/paddlejob/specs/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -__all__ = ["spec_pserver", "spec_master", "spec_trainer"] \ No newline at end of file diff --git a/python/paddlecloud/paddlejob/specs/spec_master.py b/python/paddlecloud/paddlejob/specs/spec_master.py deleted file mode 100644 index 252979bb..00000000 --- a/python/paddlecloud/paddlejob/specs/spec_master.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -def get_spec_master(paddlejob): - return { - "apiVersion": "extensions/v1beta1", - "kind": "ReplicaSet", - "metadata": { - "name": paddlejob.get_master_name(), - }, - "spec": { - "replicas": 1, # NOTE: always 1 replica of master - "template": { - "metadata": { - "labels": paddlejob.get_master_labels() - }, - "spec": { - # mount trainer volumes to dispatch datasets - "volumes": paddlejob.get_trainer_volumes(), - "containers": [{ - "name": paddlejob.name, - "image": paddlejob.image, - "ports": paddlejob.get_master_container_ports(), - "env": paddlejob.get_env(), - "volumeMounts": paddlejob.get_trainer_volume_mounts(), - "command": paddlejob.get_master_entrypoint(), - "resources": { - "requests": { - "memory": str(paddlejob.mastermemory), - "cpu": str(paddlejob.mastercpu) - }, - "limits": { - "memory": str(paddlejob.mastermemory), - "cpu": str(paddlejob.mastercpu) - } - } - }, { - "name": paddlejob.name + "-etcd", - "image": paddlejob.etcd_image, - "command": [ - "etcd", "-name", "etcd0", "-advertise-client-urls", - "http://$(POD_IP):2379,http://$(POD_IP):4001", - "-listen-client-urls", - "http://0.0.0.0:2379,http://0.0.0.0:4001", - "-initial-advertise-peer-urls", - "http://$(POD_IP):2380", "-listen-peer-urls", - "http://0.0.0.0:2380", "-initial-cluster", - "etcd0=http://$(POD_IP):2380", - "-initial-cluster-state", "new" - ], - "env": [{ - "name": "POD_IP", - "valueFrom": { - "fieldRef": { - "fieldPath": "status.podIP" - } - } - }] - }] - } - } - } - } diff --git a/python/paddlecloud/paddlejob/specs/spec_pserver.py b/python/paddlecloud/paddlejob/specs/spec_pserver.py deleted file mode 100644 index a2b4bb3a..00000000 --- a/python/paddlecloud/paddlejob/specs/spec_pserver.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -def get_spec_pserver(paddlejob): - rs = { - "apiVersion": "extensions/v1beta1", - "kind": "ReplicaSet", - "metadata": { - "name": paddlejob.get_pserver_name(), - }, - "spec": { - "replicas": paddlejob.pservers, - "template": { - "metadata": { - "labels": paddlejob.get_pserver_labels() - }, - "spec": { - "volumes": paddlejob.get_trainer_volumes(), - "containers": [{ - "name": paddlejob.name, - "image": paddlejob.image, - "ports": paddlejob.get_pserver_container_ports(), - "env": paddlejob.get_env(), - "volumeMounts": paddlejob.get_trainer_volume_mounts(), - "command": paddlejob.get_pserver_entrypoint(), - "resources": { - "requests": { - "memory": str(paddlejob.psmemory), - "cpu": str(paddlejob.pscpu) - }, - "limits": { - "memory": str(paddlejob.psmemory), - "cpu": str(paddlejob.pscpu * 1.5) - } - } - }] - } - } - } - } - if paddlejob.registry_secret: - rs["spec"]["template"]["spec"].update({ - "imagePullSecrets": [{ - "name": paddlejob.registry_secret - }] - }) - return rs diff --git a/python/paddlecloud/paddlejob/specs/spec_trainer.py b/python/paddlecloud/paddlejob/specs/spec_trainer.py deleted file mode 100644 index 2965975e..00000000 --- a/python/paddlecloud/paddlejob/specs/spec_trainer.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -def get_spec_trainer(paddlejob): - job = { - "apiVersion": "batch/v1", - "kind": "Job", - "metadata": { - "name": paddlejob.get_trainer_name(), - }, - "spec": { - "parallelism": paddlejob.parallelism, - "completions": paddlejob.parallelism, - "template": { - "metadata": { - "labels": paddlejob.get_trainer_labels() - }, - "spec": { - "volumes": paddlejob.get_trainer_volumes(), - "containers": [{ - "name": "trainer", - "image": paddlejob.image, - "imagePullPolicy": "Always", - "command": paddlejob.get_trainer_entrypoint(), - "env": paddlejob.get_env(), - "volumeMounts": paddlejob.get_trainer_volume_mounts(), - "resources": { - "requests": { - "memory": str(paddlejob.memory), - "cpu": str(paddlejob.cpu) - }, - "limits": { - "memory": str(paddlejob.memory), - "cpu": str(paddlejob.cpu * 1.5) - } - } - }], - "restartPolicy": "Never" - } - } - } - } - if paddlejob.registry_secret: - job["spec"]["template"]["spec"].update({ - "imagePullSecrets": [{ - "name": paddlejob.registry_secret - }] - }) - if paddlejob.gpu > 0: - job["spec"]["template"]["spec"]["containers"][0]["resources"][ - "limits"]["alpha.kubernetes.io/nvidia-gpu"] = str(paddlejob.gpu) - return job diff --git a/python/paddlecloud/paddlejob/specs/spec_trainingjob.py b/python/paddlecloud/paddlejob/specs/spec_trainingjob.py deleted file mode 100644 index 5c0cc841..00000000 --- a/python/paddlecloud/paddlejob/specs/spec_trainingjob.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import spec_trainer -import spec_pserver -import spec_master - - -def get_trainingjob(paddlejob): - trainer = spec_trainer.get_spec_trainer(paddlejob) - pserver = spec_pserver.get_spec_pserver(paddlejob) - master = spec_master.get_spec_master(paddlejob) - - spec = { - "apiVersion": "paddlepaddle.org/v1", - "kind": "TrainingJob", - "metadata": { - "name": paddlejob.name, - }, - "spec": { - "image": paddlejob.image, - "fault_tolerant": paddlejob.fault_tolerant, - "trainer": trainer["spec"], - "pservser": pserver["spec"], - "master": master["spec"] - } - } - - trainer["spec"]["min-instance"] = paddlejob.min_instance - trainer["spec"]["max-instance"] = paddlejob.max_instance - pserver["spec"]["min-instance"] = paddlejob.pservers - pserver["spec"]["max-instance"] = paddlejob.pservers - - if paddlejob.gpu > 0: - spec["spec"]["trainer"]["resources"]["limits"][ - "alpha.kubernetes.io/nvidia-gpu"] = str(paddlejob.gpu) - - return spec diff --git a/python/paddlecloud/paddlejob/tests/test_paddle_job.py b/python/paddlecloud/paddlejob/tests/test_paddle_job.py deleted file mode 100644 index 7f56db4d..00000000 --- a/python/paddlecloud/paddlejob/tests/test_paddle_job.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import unittest -from paddle_job import PaddleJob - - -class PaddleJobTest(unittest.TestCase): - def __new_paddle_job(self): - return PaddleJob( - image="yancey1989/paddle-job", - name="paddle-job", - cpu=1, - memory="1Gi", - parallelism=3, - job_package="/example/word2vec", - pservers=3, - pscpu=1, - psmemory="1Gi", - topology="train.py", - volumes=[]) - - def test_runtime_image(self): - paddle_job = self.__new_paddle_job() - self.assertEqual(paddle_job.pservers, 3) - - def test_new_pserver_job(self): - paddle_job = self.__new_paddle_job() - pserver_job = paddle_job.new_pserver_job() - self.assertEqual(pserver_job["metadata"]["name"], "paddle-job-pserver") - - def test_new_trainer_job(self): - paddle_job = self.__new_paddle_job() - pserver_job = paddle_job.new_trainer_job() - self.assertEqual(pserver_job["metadata"]["name"], "paddle-job-trainer") - - -if __name__ == "__main__": - unittest.main() diff --git a/python/paddlecloud/paddlejob/tests/test_volume.py b/python/paddlecloud/paddlejob/tests/test_volume.py deleted file mode 100644 index f21144a4..00000000 --- a/python/paddlecloud/paddlejob/tests/test_volume.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import unittest -from volume import get_volume_config - - -class GetVolumeConfigTest(unittest.TestCase): - def test_hostpath(self): - volume = get_volume_config( - fstype="hostpath", - name="abc", - mount_path="/pfs/dc1/home/yanxu05", - host_path="/mnt/hdfs_mulan") - self.assertEqual(volume["volume"]["name"], "abc") - - def test_cephfs(self): - volume = get_volume_config( - fstype="cephfs", - name="cephfs", - monitors_addr="192.168.2.1:6789,182.68.2.2:6789".split(","), - cephfs_path="/a/d", - user="admin", - secret="ceph-secret", - mount_path="/pfs/dc1/home/yanxu05") - self.assertEqual(volume["volume"]["name"], "cephfs") diff --git a/python/paddlecloud/paddlejob/utils.py b/python/paddlecloud/paddlejob/utils.py deleted file mode 100644 index 546a21e5..00000000 --- a/python/paddlecloud/paddlejob/utils.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import re -from rest_framework.authtoken.models import Token -from rest_framework import viewsets, generics, permissions -from rest_framework.response import Response -from rest_framework.views import APIView -import logging -first_cap_re = re.compile('(.)([A-Z][a-z]+)') -all_cap_re = re.compile('([a-z0-9])([A-Z])') - - -def simple_response(code, msg): - return Response({"code": code, "msg": msg}) - - -def error_message_response(msg): - logging.error("error: %s", msg) - return Response({"msg": msg}) - - -def convert_camel2snake(data): - s1 = first_cap_re.sub(r'\1_\2', name) - return all_cap_re.sub(r'\1_\2', s1).lower() diff --git a/python/paddlecloud/paddlejob/views.py b/python/paddlecloud/paddlejob/views.py deleted file mode 100644 index 70186183..00000000 --- a/python/paddlecloud/paddlejob/views.py +++ /dev/null @@ -1,401 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.http import HttpResponseRedirect, HttpResponse, JsonResponse, HttpResponseNotFound, HttpResponseForbidden -from django.contrib import messages -from django.conf import settings -from django.utils.encoding import smart_str -from django.contrib.auth.decorators import login_required -from kubernetes import client, config -from kubernetes.client.rest import ApiException -from . import PaddleJob -from rest_framework.authtoken.models import Token -from rest_framework import viewsets, generics, permissions -from rest_framework.response import Response -from rest_framework.views import APIView -from rest_framework.parsers import MultiPartParser, FormParser, FileUploadParser -import json -import utils -import notebook.utils -import logging -import os -import copy -from notebook.models import FilePublish -import uuid -from cloudprovider.k8s_provider import K8sProvider -from paddle_job import PaddleJob - - -def file_publish_view(request): - """ - view for download published files - """ - username = request.user.username - publish_uuid = request.GET.get("uuid") - if not publish_uuid: - return HttpResponseNotFound() - record = FilePublish.objects.get(uuid=publish_uuid) - if not record: - return HttpResponseNotFound() - # FIXME(typhoonzero): not support folder currently - if record.path.endswith("/"): - return HttpResponseNotFound() - - real_path = "/".join([settings.STORAGE_PATH] + record.path.split("/")[4:]) - logging.info("downloading file from: %s, record(%s)", real_path, - record.path) - - # mimetype is replaced by content_type for django 1.7 - response = HttpResponse( - open(real_path), content_type='application/force-download') - response[ - 'Content-Disposition'] = 'attachment; filename=%s' % os.path.basename( - record.path) - # It's usually a good idea to set the 'Content-Length' header too. - # You can also set any other required headers: Cache-Control, etc. - return response - - -class FilePublishAPIView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - """ - return a list of published files for current user - """ - record = FilePublish.objects.filter(user=request.user) - file_list = [rec.path for rec in record] - url_list = [rec.url for rec in record] - return Response({"files": file_list, "urls": url_list}) - - def post(self, request, format=None): - """ - given a pfs path generate a uniq sharing url for the path - """ - post_body = json.loads(request.body) - file_path = post_body.get("path") - publish_uuid = uuid.uuid4() - publish_url = "http://%s/filepub/?uuid=%s" % ( - request.META["HTTP_HOST"], publish_uuid) - # save publish_url to mysql - publish_record = FilePublish() - publish_record.url = publish_url - publish_record.user = request.user - publish_record.path = file_path - publish_record.uuid = publish_uuid - publish_record.save() - return Response({"url": publish_url}) - - -def get_paddlejob(request): - username = request.user.username - obj = json.loads(request.body) - topology = obj.get("topology", "") - entry = obj.get("entry", "") - if not topology and not entry: - return utils.simple_response(500, "no topology or entry specified") - if not obj.get("datacenter"): - return utils.simple_response(500, "no datacenter specified") - cfgs = {} - dc = obj.get("datacenter") - # jobPackage validation: startwith /pfs - # NOTE: job packages are uploaded to /pfs/[dc]/home/[user]/jobs/[jobname] - job_name = obj.get("name", "paddle-cluster-job") - package_in_pod = os.path.join("/pfs/%s/home/%s" % (dc, username), "jobs", - job_name) - - logging.info("current package: %s", package_in_pod) - # package must be ready before submit a job - package_path_4test = package_in_pod.replace("/pfs/%s/home" % dc, - settings.STORAGE_PATH) - if not os.path.exists(package_path_4test): - package_path_4test = package_in_pod.replace("/pfs/%s/home/%s" % ( - dc, username), settings.STORAGE_PATH) - if not os.path.exists(package_path_4test): - return utils.error_message_response( - "package not exist in cloud: %s" % package_path_4test) - logging.info("current package in pod: %s", package_path_4test) - - envs = {} - envs.update({"PADDLE_CLOUD_CURRENT_DATACENTER": dc}) - envs.update({"PADDLE_CLOUD_USERNAME": username}) - # ===================== create PaddleJob instance ====================== - paddle_job = PaddleJob( - name=job_name, - job_package=package_in_pod, - parallelism=obj.get("parallelism", 1), - cpu=obj.get("cpu", 1), - memory=obj.get("memory", "1Gi"), - pservers=obj.get("pservers", 1), - pscpu=obj.get("pscpu", 1), - psmemory=obj.get("psmemory", "1Gi"), - topology=topology, - entry=entry, - gpu=obj.get("gpu", 0), - image=obj.get("image", None), - passes=obj.get("passes", 1), - registry_secret=obj.get("registry", None), - volumes=[], - envs=envs, - fault_tolerant=obj.get("faulttolerant", False), - min_instance=obj.get("min_instance", 1), - max_instance=obj.get("max_instance", 1), - etcd_image=settings.ETCD_IMAGE, - dc=dc) - - logging.info("return paddlejob") - return paddle_job - - -class TrainingJobsView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - username = request.user.username - p = K8sProvider() - ret_dict = p.get_trainingjobs(username) - return Response(ret_dict) - - def post(self, request, format=None): - """ - Submit a trainingjobs. - """ - username = request.user.username - job = get_paddlejob(request) - p = K8sProvider() - try: - p.submit_trainingjobs(job, username) - except Exception, e: - return utils.error_message_response(str(e)) - - return utils.simple_response(200, "") - - def delete(self, request, format=None): - """ - Kill a trainingjobs. - """ - username = request.user.username - obj = json.loads(request.body) - jobname = obj.get("jobname") - - p = K8sProvider() - retcode, status = p.delete_trainingjobs(jobname, username) - return utils.simple_response(retcode, "\n".join(status)) - - -class JobsView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - username = request.user.username - p = K8sProvider() - ret_dict = p.get_jobs(username) - return Response(ret_dict) - - def post(self, request, format=None): - """ - Submit the PaddlePaddle job - """ - # ========== submit master ReplicaSet if using fault_tolerant feature == - username = request.user.username - job = get_paddlejob(request) - p = K8sProvider() - try: - p.submit_job(job, username) - except Exception, e: - return utils.error_message_response(str(e)) - - return utils.simple_response(200, "") - - def delete(self, request, format=None): - """ - Kill a job - """ - username = request.user.username - obj = json.loads(request.body) - jobname = obj.get("jobname") - p = K8sProvider() - retcode, status = p.delete_job(jobname, username) - return utils.simple_response(retcode, "\n".join(status)) - - -class PserversView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - """ - List all pservers - """ - username = request.user.username - p = K8sProvider() - return Response(p.get_pservers(username)) - - -class LogsView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - username = request.user.username - jobname = request.query_params.get("jobname") - num_lines = request.query_params.get("n") - worker = request.query_params.get("w") - - total_job_log = K8sProvider().get_logs(jobname, num_lines, worker, - username) - return utils.simple_response(200, total_job_log) - - -class WorkersView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - username = request.user.username - jobname = request.query_params.get("jobname") - ret = K8sProvider().get_workers(jobname, username) - return Response(ret) - - -class QuotaView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - username = request.user.username - ret = K8sProvider().get_quotas(username) - return Response(ret) - - -class GetUserView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - - def get(self, request, format=None): - """ - Get user name - """ - content = { - 'user': - request.user.username, # `django.contrib.auth.User` instance. - } - return Response(content) - - -class SimpleFileView(APIView): - permission_classes = (permissions.IsAuthenticated, ) - parser_classes = ( - FormParser, - MultiPartParser, ) - - def __validate_path(self, request, file_path): - """ - returns error_msg. error_msg will be empty if there's no error. - """ - path_parts = file_path.split(os.path.sep) - - assert (path_parts[1] == "pfs") - assert (path_parts[2] in settings.DATACENTERS.keys()) - assert (path_parts[3] == "home") - assert (path_parts[4] == request.user.username) - - server_file = os.path.join(settings.STORAGE_PATH, - request.user.username, *path_parts[5:]) - - return server_file - - def get(self, request, format=None): - """ - Simple get file. - """ - file_path = request.query_params.get("path") - try: - write_file = self.__validate_path(request, file_path) - except Exception, e: - return utils.error_message_response("file path not valid: %s" % - str(e)) - - if not os.path.exists(os.sep + write_file): - return Response({"msg": "file not exist"}) - - response = HttpResponse( - open(write_file), content_type='application/force-download') - response[ - 'Content-Disposition'] = 'attachment; filename="%s"' % os.path.basename( - write_file) - - return response - - def post(self, request, format=None): - """ - Simple put file. - """ - file_obj = request.data['file'] - file_path = request.query_params.get("path") - if not file_path: - return utils.error_message_response("must specify path") - try: - write_file = self.__validate_path(request, file_path) - except Exception, e: - return utils.error_message_response("file path not valid: %s" % - str(e)) - - if not os.path.exists(os.path.dirname(write_file)): - try: - os.makedirs(os.path.dirname(write_file)) - except OSError as exc: # Guard against race condition - if exc.errno != errno.EEXIST: - raise - # FIXME: always overwrite package files - with open(write_file, "w") as fn: - while True: - data = file_obj.read(4096) - if not data: - break - fn.write(data) - - return Response({"msg": ""}) - - -class SimpleFileList(APIView): - permission_classes = (permissions.IsAuthenticated, ) - parser_classes = ( - FormParser, - MultiPartParser, ) - - def get(self, request, format=None): - """ - Simple list files. - """ - file_path = request.query_params.get("path") - dc = request.query_params.get("dc") - # validate list path must be under user's dir - path_parts = file_path.split(os.path.sep) - msg = "" - if len(path_parts) < 5: - msg = "path must like /pfs/[dc]/home/[user]" - else: - if path_parts[1] != "pfs": - msg = "path must start with /pfs" - if path_parts[2] not in settings.DATACENTERS.keys(): - msg = "no datacenter " + path_parts[2] - if path_parts[3] != "home": - msg = "path must like /pfs/[dc]/home/[user]" - if path_parts[4] != request.user.username: - msg = "not a valid user: " + path_parts[4] - if msg: - return Response({"msg": msg}) - - real_path = file_path.replace("/pfs/%s/home/%s" % ( - dc, request.user.username), "/pfs/%s" % request.user.username) - if not os.path.exists(real_path): - return Response({"msg": "dir not exist"}) - - return Response({"msg": "", "items": os.listdir(real_path)}) diff --git a/python/paddlecloud/requirements.txt b/python/paddlecloud/requirements.txt deleted file mode 100644 index 738ba382..00000000 --- a/python/paddlecloud/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -django-user-accounts==2.0.1 -pinax-webanalytics==3.0.0 -pinax-eventlog==1.1.2 - -Django==1.11 -pinax-theme-bootstrap==8.0.1 - -kubernetes==2.0 -MySQL-python -djangorestframework -django_sendmail_backend -nodejs diff --git a/python/paddlecloud/static/STATIC_README.md b/python/paddlecloud/static/STATIC_README.md deleted file mode 100644 index 60388c94..00000000 --- a/python/paddlecloud/static/STATIC_README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Static Media - -We are using `npm` for our static build process. - -Do NOT edit anything in the `dist/` directory. diff --git a/python/paddlecloud/static/src/js/index.js b/python/paddlecloud/static/src/js/index.js deleted file mode 100644 index 95ffb663..00000000 --- a/python/paddlecloud/static/src/js/index.js +++ /dev/null @@ -1,9 +0,0 @@ -/* global window */ -window.jQuery = window.$ = require('jquery'); - -const $ = window.$; - -require('bootstrap'); - -$(() => { -}); diff --git a/python/paddlecloud/static/src/less/account.less b/python/paddlecloud/static/src/less/account.less deleted file mode 100644 index a32f5b3d..00000000 --- a/python/paddlecloud/static/src/less/account.less +++ /dev/null @@ -1,9 +0,0 @@ -body.account-settings .account-settings, -body.account-certs .account-certs, -body.account-password .account-password, -body.account-delete .account-delete { - z-index: 2; // Place active items above their siblings for proper border styling - color: @list-group-active-color; - background-color: @list-group-active-bg; - border-color: @list-group-active-border; -} diff --git a/python/paddlecloud/static/src/less/custom.less b/python/paddlecloud/static/src/less/custom.less deleted file mode 100644 index e4e43cea..00000000 --- a/python/paddlecloud/static/src/less/custom.less +++ /dev/null @@ -1,29 +0,0 @@ -body { - padding-top: 50px; - position: relative; -} -section { - padding: 20px 0px; -} -.modal form { - margin-bottom: 0px; -} -footer { - padding-bottom: 20px; -} -p.login-signup { - margin-top: 20px; -} - -.feature-columns { - .make-row(); - - > div { - i.fa { - margin-bottom: 0.2em; - } - .make-sm-column(4); - .text-center; - margin: 2em 0; - } -} diff --git a/python/paddlecloud/static/src/less/site.less b/python/paddlecloud/static/src/less/site.less deleted file mode 100644 index 31a53fcf..00000000 --- a/python/paddlecloud/static/src/less/site.less +++ /dev/null @@ -1,12 +0,0 @@ -@import "bootstrap"; -@import "font-awesome"; - -@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; - -// Account -@import "account.less"; - -// Site overrides -@import "custom.less"; diff --git a/python/paddlecloud/static/src/tests/browser.js b/python/paddlecloud/static/src/tests/browser.js deleted file mode 100644 index 368439c8..00000000 --- a/python/paddlecloud/static/src/tests/browser.js +++ /dev/null @@ -1,10 +0,0 @@ -var connect = require('connect'); -var http = require('http'); -var serveStatic = require('serve-static'); -var openPage = require('open'); - -var server = connect(); -server.use(serveStatic('./')); -http.createServer(server).listen(4001); - -openPage('http://localhost:4001/tests/'); diff --git a/python/paddlecloud/static/src/tests/fixtures.js b/python/paddlecloud/static/src/tests/fixtures.js deleted file mode 100644 index 942debde..00000000 --- a/python/paddlecloud/static/src/tests/fixtures.js +++ /dev/null @@ -1 +0,0 @@ -// test fixture data \ No newline at end of file diff --git a/python/paddlecloud/static/src/tests/index.html b/python/paddlecloud/static/src/tests/index.html deleted file mode 100644 index 5e17fdd3..00000000 --- a/python/paddlecloud/static/src/tests/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - My Awesome App Tests - - - -
-
-
- - - - - - \ No newline at end of file diff --git a/python/paddlecloud/static/src/tests/index.js b/python/paddlecloud/static/src/tests/index.js deleted file mode 100644 index 59986d11..00000000 --- a/python/paddlecloud/static/src/tests/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import { assert } from 'chai'; - -// jsdom-global is a no-op when browserified; -require('jsdom-global')(); -window.assert = assert; - -if (!document.getElementById('mocha')) { - document.body.innerHTML = '
'; -} - -// these need to stay a require() because imports are hoisted -require('./main'); \ No newline at end of file diff --git a/python/paddlecloud/static/src/tests/main.js b/python/paddlecloud/static/src/tests/main.js deleted file mode 100644 index 7bcc31be..00000000 --- a/python/paddlecloud/static/src/tests/main.js +++ /dev/null @@ -1 +0,0 @@ -import './spec/base'; \ No newline at end of file diff --git a/python/paddlecloud/static/src/tests/spec/base.js b/python/paddlecloud/static/src/tests/spec/base.js deleted file mode 100644 index e98dd288..00000000 --- a/python/paddlecloud/static/src/tests/spec/base.js +++ /dev/null @@ -1 +0,0 @@ -it('should run tests', () => {}); \ No newline at end of file diff --git a/python/paddlecloud/tox.ini b/python/paddlecloud/tox.ini deleted file mode 100644 index 721801fa..00000000 --- a/python/paddlecloud/tox.ini +++ /dev/null @@ -1,4 +0,0 @@ -[flake8] -ignore = E265,E501 -max-line-length = 100 -max-complexity = 10 diff --git a/python/paddlecloud/update.sh b/python/paddlecloud/update.sh deleted file mode 100755 index 2f67b7a7..00000000 --- a/python/paddlecloud/update.sh +++ /dev/null @@ -1,12 +0,0 @@ -( - git checkout account && git merge zero --no-edit - git checkout blog && git merge zero --no-edit - git checkout static && git merge zero --no-edit - git checkout company && git merge blog --no-edit - git checkout documents && git merge account --no-edit - git checkout social-auth && git merge account --no-edit - git checkout stripe && git merge account --no-edit - git checkout wiki && git merge account --no-edit - git checkout team-wiki && git merge wiki --no-edit - git checkout waitinglist && git merge zero --no-edit -)