+

+
+
+ In order to use RKNPU, users need to first run the RKNN-Toolkit2 tool on the computer, convert the trained model into an RKNN format model, and then inference on the development board using the RKNN C API or Python API.
+
+- RKNN-Toolkit2 is a software development kit for users to perform model conversion, inference and performance evaluation on PC and Rockchip NPU platforms.
+
+- RKNN-Toolkit-Lite2 provides Python programming interfaces for Rockchip NPU platform to help users deploy RKNN models and accelerate the implementation of AI applications.
+
+- RKNN Runtime provides C/C++ programming interfaces for Rockchip NPU platform to help users deploy RKNN models and accelerate the implementation of AI applications.
+
+- RKNPU kernel driver is responsible for interacting with NPU hardware. It has been open source and can be found in the Rockchip kernel code.
+
+# Support Platform
+ - RK3588 Series
+ - RK3576 Series
+ - RK3566/RK3568 Series
+ - RK3562 Series
+ - RV1103/RV1106
+ - RV1103B
+ - RK2118
+
+
+Note:
+
+ **For RK1808/RV1109/RV1126/RK3399Pro, please refer to :**
+
+ https://github.com/airockchip/rknn-toolkit
+
+ https://github.com/airockchip/rknpu
+
+ https://github.com/airockchip/RK3399Pro_npu
+
+
+# Download
+- You can also download all packages, docker image, examples, docs and platform-tools from [RKNPU2_SDK](https://console.zbox.filez.com/l/I00fc3), fetch code: rknn
+- You can get more examples from [rknn mode zoo](https://github.com/airockchip/rknn_model_zoo)
+
+# Notes
+- RKNN-Toolkit2 is not compatible with [RKNN-Toolkit](https://github.com/airockchip/rknn-toolkit)
+- Currently only support on:
+ - Ubuntu 18.04 python 3.6/3.7
+ - Ubuntu 20.04 python 3.8/3.9
+ - Ubuntu 22.04 python 3.10/3.11
+- Latest version:v2.1.0
+
+
+
+# RKNN LLM
+
+If you want to deploy LLM (Large Language Model), we have introduced a new SDK called RKNN-LLM. For details, please refer to:
+
+https://github.com/airockchip/rknn-llm
+
+
+
+# CHANGELOG
+
+## v2.1.0
+ - Support RV1103B (Beta)
+- Support RK2118 (Beta)
+- Support Flash Attention (Only RK3562 and RK3576)
+- Improve MatMul API
+- Improve support for int32 and int64
+- Support more operators and operator fusion
+
+ for older version, please refer [CHANGELOG](CHANGELOG.md)
+
+# Feedback and Community Support
+- [Redmine](https://redmine.rock-chips.com) (**Feedback recommended, Please consult our sales or FAE for the redmine account**)
+- QQ Group Chat: 1025468710 (full, please join group 3)
+- QQ Group Chat2: 547021958 (full, please join group 3)
+- QQ Group Chat3: 469385426
+
+
+
+
+
+
+
diff --git a/autosparsity/README.md b/autosparsity/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..95cf0142967fcd88c1104c3cc56eb11b128cdd28
--- /dev/null
+++ b/autosparsity/README.md
@@ -0,0 +1,58 @@
+## AutoSparsity
+
+Enables sparse training and inference for PyTorch models.
+
+
+## Usage
+
+### Step 1
+
+Install autosparsity package
+
+```bash
+pip install packages/autosparsity-1.0-cp38-cp38m-linux_x86_64.whl
+```
+
+### Step 2
+
+Taking ResNet50 in torchvision as an example to generate the sparse model.
+
+```bash
+python examples/autosparsity.py
+```
+To sparsity a custom model, just add the sparsity_model functionwhen model training, as follows:
+
+```python
+# insert model autosparsity code before training
+import torch
+import torchvision.models as models
+from autosparsity.sparsity import sparsity_model
+
+...
+
+model = models.resnet34(pretrained=True).cuda()
+mode = 0
+sparsity_model(model, optimizer, mode)
+
+# normal training
+x, y = DataLoader(args)
+for epoch in range(epochs):
+ y_pred = model(x)
+ loss = loss_func(y_pred, y)
+ loss.backward()
+ optimizer.step()
+ ...
+```
+
+- Note: Make sure CUDA is available
+
+
+### Step3
+
+Use RKNN-Toolkite to perfom sparse inference
+
+```bash
+python examples/test.py
+```
+- Note: Only supports RK3576 target platform
+
diff --git a/autosparsity/examples/README.md b/autosparsity/examples/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..de0e79f6cd2eff873dff305db2049c4f1ec5eead
--- /dev/null
+++ b/autosparsity/examples/README.md
@@ -0,0 +1,68 @@
+# Sparse Infer
+
+This tool is used for the Torch model to autosparsity the weights during the training, which can save model storage and reduce model inference time in RKNN sparse inference.
+
+## Usage
+
+### Step 1
+
+Install autosparsity package
+
+```bash
+pip install ../packages/autosparsity-1.0-cp38-cp38m-linux_x86_64.whl
+```
+
+### Step 2
+
+Taking ResNet50 in torchvision as an example to generate the sparse model.
+
+```bash
+python autosparsity.py
+```
+To sparsity a custom model, just add the sparsity_model functionwhen model training, as follows:
+
+```python
+# insert model autosparsity code before training
+import torch
+import torchvision.models as models
+from autosparsity.sparsity import sparsity_model
+
+...
+
+model = models.resnet34(pretrained=True).cuda()
+mode = 0
+sparsity_model(model, optimizer, mode)
+
+# normal training
+x, y = DataLoader(args)
+for epoch in range(epochs):
+ y_pred = model(x)
+ loss = loss_func(y_pred, y)
+ loss.backward()
+ optimizer.step()
+ ...
+```
+
+- Note: Make sure CUDA is available
+
+
+### Step3
+
+Perfom sparse inference
+
+```bash
+python test.py
+```
+- Note: Only supports RK3576 target platform
+
+### Expected Results:
+
+This will print the , as follows:
+```
+-----TOP 5-----
+[155] score:0.877372 class:"Shih-Tzu"
+[283] score:0.042477 class:"Persian cat"
+[ 82] score:0.006625 class:"ruffed grouse, partridge, Bonasa umbellus"
+[154] score:0.006625 class:"Pekinese, Pekingese, Peke"
+[204] score:0.004696 class:"Lhasa, Lhasa apso"
+```
diff --git a/autosparsity/examples/autosparsity.py b/autosparsity/examples/autosparsity.py
new file mode 100644
index 0000000000000000000000000000000000000000..6618ec14d38f3f6113f9a11aa88f8989ac88c266
--- /dev/null
+++ b/autosparsity/examples/autosparsity.py
@@ -0,0 +1,17 @@
+import torch
+import torchvision.models as models
+from autosparsity.sparsity import sparsity_model
+
+
+if __name__ == "__main__":
+
+ model = models.resnet50(pretrained=True).cuda()
+ optimizer = None
+ mode = 0
+ sparsity_model(model, optimizer, mode)
+
+ model.eval()
+ x = torch.randn((1,3,224,224)).cuda()
+ torch.onnx.export(
+ model, x, 'resnet50.onnx', input_names=['inputs'], output_names=['outputs']
+ )
\ No newline at end of file
diff --git a/autosparsity/examples/datasets.txt b/autosparsity/examples/datasets.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e9f106640be9c286473dc8b5d66b87bb2d361aeb
--- /dev/null
+++ b/autosparsity/examples/datasets.txt
@@ -0,0 +1 @@
+./dog_224x224.jpg
\ No newline at end of file
diff --git a/autosparsity/examples/dog_224x224.jpg b/autosparsity/examples/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/autosparsity/examples/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/autosparsity/examples/labels.txt b/autosparsity/examples/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/autosparsity/examples/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/autosparsity/examples/resnet50.onnx b/autosparsity/examples/resnet50.onnx
new file mode 100644
index 0000000000000000000000000000000000000000..913f41183cdd090b64cd5273b1a97e638dcdcf03
--- /dev/null
+++ b/autosparsity/examples/resnet50.onnx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4428727ffe996c87fcb871d7e21093c34c64b76f978f9de3c813322d61419470
+size 102146376
diff --git a/autosparsity/examples/test.py b/autosparsity/examples/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ed73325dde6b7237d9d41970362981656bbd8ff
--- /dev/null
+++ b/autosparsity/examples/test.py
@@ -0,0 +1,81 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+ONNX_MODEL = 'resnet50.onnx'
+RKNN_MODEL = 'resnet50.rknn'
+
+def show_outputs(outputs):
+ output = outputs[0][0]
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'resnet50_sparse_infer\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[123.675, 116.28, 103.53], std_values=[58.395, 57.12, 57.375], target_platform='rk3576', sparse_infer=True)
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_onnx(model=ONNX_MODEL)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./datasets.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn(RKNN_MODEL)
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime(target='rk3576')
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ x = outputs[0]
+ output = np.exp(x)/np.sum(np.exp(x))
+ outputs = [output]
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/autosparsity/packages/autosparsity-1.0-cp310-cp310-linux_x86_64.whl b/autosparsity/packages/autosparsity-1.0-cp310-cp310-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..2cd97ffb9001d32aca86c9cada7ed2d3a7751d7e
--- /dev/null
+++ b/autosparsity/packages/autosparsity-1.0-cp310-cp310-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91738c554c28a71a17c799d9e8c7e600212c34a8a6cd36a178f13ef005f0b925
+size 1726486
diff --git a/autosparsity/packages/autosparsity-1.0-cp311-cp311-linux_x86_64.whl b/autosparsity/packages/autosparsity-1.0-cp311-cp311-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..92bed4981a6b9e4644d8c85e372b7fa0d45b4637
--- /dev/null
+++ b/autosparsity/packages/autosparsity-1.0-cp311-cp311-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb6388e740816010b536fbd1e93f99dd38e78a3591df9b25c59e0293f6ecc85b
+size 1723914
diff --git a/autosparsity/packages/autosparsity-1.0-cp36-cp36m-linux_x86_64.whl b/autosparsity/packages/autosparsity-1.0-cp36-cp36m-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..20425ba807e38ccdcfd5ef7cc1da1280c96a3ac3
--- /dev/null
+++ b/autosparsity/packages/autosparsity-1.0-cp36-cp36m-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5741fbe4ffa24d68508ff066b6743e1af58c032b1189e81b1ad805d2007de2d
+size 5122147
diff --git a/autosparsity/packages/autosparsity-1.0-cp37-cp37m-linux_x86_64.whl b/autosparsity/packages/autosparsity-1.0-cp37-cp37m-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..76362ab6c9f6d923e67e939d5286cc3f58f45095
--- /dev/null
+++ b/autosparsity/packages/autosparsity-1.0-cp37-cp37m-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf04d2f3534947215b0af1a2cdc083f0ec989a88f86c6c03532fb86d14acdd93
+size 5308248
diff --git a/autosparsity/packages/autosparsity-1.0-cp38-cp38-linux_x86_64.whl b/autosparsity/packages/autosparsity-1.0-cp38-cp38-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..43efeeab7dd051551f56361e2927a4fcda25f66e
--- /dev/null
+++ b/autosparsity/packages/autosparsity-1.0-cp38-cp38-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f9f3329905adeb050e14e01fcd262aa1dc21b65efeba38c74203006330dcc30
+size 6906641
diff --git a/autosparsity/packages/autosparsity-1.0-cp39-cp39-linux_x86_64.whl b/autosparsity/packages/autosparsity-1.0-cp39-cp39-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..cbe647182cf25f4f3dd763b5bfeffc00b27b1bfa
--- /dev/null
+++ b/autosparsity/packages/autosparsity-1.0-cp39-cp39-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a89321f12ab53480a6bc0db1f30a3e61d229277e3e0e1e313a57ba509631f2d3
+size 1727843
diff --git a/doc/01_Rockchip_RK2118_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf b/doc/01_Rockchip_RK2118_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..4bb7d600264a5f9c86a39a806f5996a706560e9c
--- /dev/null
+++ b/doc/01_Rockchip_RK2118_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5faf0a127f6fc5272674420d83de1a401b1e458b1e61a66f93b90f33ea182877
+size 15783332
diff --git a/doc/01_Rockchip_RK2118_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf b/doc/01_Rockchip_RK2118_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..43f8442b1edb045cb7390bb8451202de387088e0
--- /dev/null
+++ b/doc/01_Rockchip_RK2118_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a2cca5f2847658a85e2dc0b39fdf1d9bd19afbef1a7303e67d01555eb96ca06
+size 22421246
diff --git a/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf b/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d158fe1a9068520f957a299c3af535a508c32e85
--- /dev/null
+++ b/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bd91ab63287eae5e7de735d44ed42e2178d12d495d614098d4c033bb1416dbaa
+size 58526084
diff --git a/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf b/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..58bd2d4945536488612a8a00b0271d0d9f9bfeff
--- /dev/null
+++ b/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:513f8bb08f60c192e313c89fa8e2064812b15cebb5e7137a0e8deaf297f65e09
+size 39216171
diff --git a/doc/01_Rockchip_RV1106_RV1103_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf b/doc/01_Rockchip_RV1106_RV1103_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..aa64ed90d2df715a3c28aa2d402851a5bde7d867
--- /dev/null
+++ b/doc/01_Rockchip_RV1106_RV1103_Quick_Start_RKNN_SDK_V2.1.0_CN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c32cb3ef8d250bfdac1f86ec6bdeca8e3e0666aea40c36d0330bc6739ba8a400
+size 30662929
diff --git a/doc/01_Rockchip_RV1106_RV1103_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf b/doc/01_Rockchip_RV1106_RV1103_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d32d90d2da24c69f21b6dd10ec15ccade3b88c6f
--- /dev/null
+++ b/doc/01_Rockchip_RV1106_RV1103_Quick_Start_RKNN_SDK_V2.1.0_EN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c6055c7b5fc437127b27947dafa059068a48348db0a250d7fa5bfe62f33df99
+size 23683494
diff --git a/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.1.0_CN.pdf b/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.1.0_CN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7fb4a93ba00877f2d21df5bc3623f748a22c9245
--- /dev/null
+++ b/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.1.0_CN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12426814125e12d82be5113e8dc9351184a452b9f6cc79d52517a0364d941e6d
+size 10793826
diff --git a/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.1.0_EN.pdf b/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.1.0_EN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..77376f39b1f5e1b26e6775c134fda4dcf9391653
--- /dev/null
+++ b/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.1.0_EN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65118a948dc4ccb29bbacf80b41ced2c6fb2cc09e02a092761a97de714708ac3
+size 8311627
diff --git a/doc/03_Rockchip_RKNPU_API_Reference_RKNN_Toolkit2_V2.1.0_CN.pdf b/doc/03_Rockchip_RKNPU_API_Reference_RKNN_Toolkit2_V2.1.0_CN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..add65309f1053a1b1cd6f20e969835bc011e46cb
--- /dev/null
+++ b/doc/03_Rockchip_RKNPU_API_Reference_RKNN_Toolkit2_V2.1.0_CN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44b6ea3f613abb822117d993604cbc56c21bbe354df4a0564b618bacd278b160
+size 716783
diff --git a/doc/03_Rockchip_RKNPU_API_Reference_RKNN_Toolkit2_V2.1.0_EN.pdf b/doc/03_Rockchip_RKNPU_API_Reference_RKNN_Toolkit2_V2.1.0_EN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..25ee4b6bfd8fad4db95d144b67a9b5497b320143
--- /dev/null
+++ b/doc/03_Rockchip_RKNPU_API_Reference_RKNN_Toolkit2_V2.1.0_EN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d879cb7e34e267ed9cb1256b59fa87bb33955f1e286a6efc25a0f2702d002288
+size 213701
diff --git a/doc/04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.1.0_CN.pdf b/doc/04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.1.0_CN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5039098603379f7394a1370d1322bd16682de98c
--- /dev/null
+++ b/doc/04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.1.0_CN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e7cc3573b8e25c54e6899caf18b787791e329c773e7c4d7b5f9513398612a10
+size 986337
diff --git a/doc/04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.1.0_EN.pdf b/doc/04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.1.0_EN.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..83767616c8383fdf5d30723b96e3481c01896370
--- /dev/null
+++ b/doc/04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.1.0_EN.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f402e099a2728da4aee40c8f088d8dd2be127bd670ba76cbf787701d7b834e1e
+size 336513
diff --git a/doc/05_RKNN_Compiler_Support_Operator_List_V2.1.0.pdf b/doc/05_RKNN_Compiler_Support_Operator_List_V2.1.0.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b02815633315568ec013f27f1546c7be036732f6
--- /dev/null
+++ b/doc/05_RKNN_Compiler_Support_Operator_List_V2.1.0.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa08dd033288dd1a206ee8fe4e9d109b7dd8b9a8b615d5aa58bc72e4eeb0cca3
+size 3702083
diff --git a/doc/RKNNToolKit2_OP_Support-v2.1.0.md b/doc/RKNNToolKit2_OP_Support-v2.1.0.md
new file mode 100644
index 0000000000000000000000000000000000000000..3da41c11c16edfb2e3675a7d6c310c5690f0e0c5
--- /dev/null
+++ b/doc/RKNNToolKit2_OP_Support-v2.1.0.md
@@ -0,0 +1,519 @@
+# RKNNToolkit2 OPs Support
+
+## ONNX OPs supported by RKNN Toolkit2
+
+According to [ONNX official instructions](https://github.com/microsoft/onnxruntime/blob/master/docs/Versioning.md 'ONNX Version Description'), the corresponding ONNX opset version is 19.
+The list of ONNX OPs supported by RKNN Toolkit2 is as follows:
+
(For more restrictions, please refer to
)
+
+| **Operators** | **Remarks** |
+| ------------------------- | --------------------------------------- |
+| Abs | Not Supported |
+| Acos | Not Supported |
+| Acosh | Not Supported |
+| Add | |
+| And | |
+| ArgMax | |
+| ArgMin | |
+| Asin | Not Supported |
+| Asinh | Not Supported |
+| Atan | Not Supported |
+| Atanh | Not Supported |
+| AveragePool | |
+| BatchNormalization | |
+| Bernoulli | Not Supported |
+| BitShift | Not Supported |
+| BitwiseAnd | Not Supported |
+| BitwiseNot | Not Supported |
+| BitwiseOr | Not Supported |
+| BitwiseXor | Not Supported |
+| BlackmanWindow | Not Supported |
+| Cast | |
+| CastLike | Not Supported |
+| Ceil | Not Supported |
+| Celu | Not Supported |
+| CenterCropPad | Not Supported |
+| Clip | |
+| Col2Im | Not Supported |
+| Compress | Not Supported |
+| Concat | |
+| ConcatFromSequence | Not Supported |
+| Constant | |
+| ConstantOfShape | |
+| Conv | |
+| ConvInteger | Not Supported |
+| ConvTranspose | |
+| Cos | |
+| Cosh | Not Supported |
+| CumSum | Not Supported |
+| DeformConv | Not Supported |
+| DepthToSpace | |
+| DequantizeLinear | |
+| Det | Not Supported |
+| DFT | Not Supported |
+| Div | |
+| Dropout | |
+| DynamicQuantizeLinear | Not Supported |
+| Einsum | Not Supported |
+| Elu | |
+| Equal | |
+| Erf | |
+| Exp | |
+| Expand | |
+| EyeLike | only support constant input |
+| Flatten | |
+| Floor | |
+| Gather | |
+| GatherElements | |
+| GatherND | Not Supported |
+| Gemm | |
+| GlobalAveragePool | |
+| GlobalLpPool | Not Supported |
+| GlobalMaxPool | |
+| Greater | |
+| GreaterOrEqual | |
+| GridSample | Not Supported |
+| GroupNormalization | Not Supported |
+| GRU | batchsize: 1 |
+| HammingWindow | Not Supported |
+| HannWindow | Not Supported |
+| Hardmax | Not Supported |
+| HardSigmoid | |
+| HardSwish | |
+| Identity | |
+| If | only support constant input |
+| InstanceNormalization | |
+| IsInf | Not Supported |
+| IsNaN | Not Supported |
+| LayerNormalization | |
+| LeakyRelu | |
+| Less | |
+| LessOrEqual | |
+| Log | |
+| LogSoftmax | batchsize: 1 |
+| Loop | Not Supported |
+| LpNormalization | |
+| LpPool | Not Supported |
+| LRN | |
+| LSTM | |
+| MatMul | |
+| MatMulInteger | Not Supported |
+| Max | |
+| MaxPool | |
+| MaxRoiPool | |
+| MaxUnpool | |
+| Mean | Not Supported |
+| MeanVarianceNormalization | |
+| MelWeightMatrix | Not Supported |
+| Min | |
+| Mish | |
+| Mod | |
+| Mul | |
+| Multinomial | Not Supported |
+| Neg | Not Supported |
+| NegativeLogLikelihoodLoss | Not Supported |
+| NonMaxSuppression | Not Supported |
+| NonZero | Not Supported |
+| Not | Not Supported |
+| OneHot | Not Supported |
+| Optional | Not Supported |
+| OptionalGetElement | Not Supported |
+| OptionalHasElement | Not Supported |
+| Or | Not Supported |
+| Pad | |
+| Pow | |
+| PRelu | |
+| QLinearConv | Not Supported |
+| QLinearMatMul | Not Supported |
+| QuantizeLinear | |
+| RandomNormal | Not Supported |
+| RandomNormalLike | Not Supported |
+| RandomUniform | Not Supported |
+| RandomUniformLike | Not Supported |
+| Range | Not Supported |
+| Reciprocal | Not Supported |
+| ReduceL1 | Not Supported |
+| ReduceL2 | Not Supported |
+| ReduceLogSum | Not Supported |
+| ReduceLogSumExp | Not Supported |
+| ReduceMax | |
+| ReduceMean | |
+| ReduceMin | |
+| ReduceProd | Not Supported |
+| ReduceSum | |
+| ReduceSumSquare | Not Supported |
+| Relu | |
+| Reshape | |
+| Resize | mode: nearest2d/bilinear |
+| ReverseSequence | |
+| RNN | Not Supported |
+| RoiAlign | pool type: average
batchsize: 1 |
+| Round | Not Supported |
+| Scan | Not Supported |
+| ScatterElements | Not Supported |
+| ScatterND | |
+| Selu | Not Supported |
+| SequenceAt | Not Supported |
+| SequenceConstruct | Not Supported |
+| SequenceEmpty | Not Supported |
+| SequenceErase | Not Supported |
+| SequenceInsert | Not Supported |
+| SequenceLength | Not Supported |
+| SequenceMap | Not Supported |
+| Shape | |
+| Shrink | Not Supported |
+| Sigmoid | |
+| Sign | Not Supported |
+| Sin | |
+| Sinh | Not Supported |
+| Size | |
+| Slice | batchsize: 1 |
+| Softmax | batchsize: 1 |
+| SoftmaxCrossEntropyLoss | Not Supported |
+| Softplus | |
+| Softsign | Not Supported |
+| SpaceToDepth | |
+| Split | |
+| SplitToSequence | Not Supported |
+| Sqrt | |
+| Squeeze | |
+| STFT | Not Supported |
+| StringNormalizer | Not Supported |
+| Sub | |
+| Sum | Not Supported |
+| Tan | Not Supported |
+| Tanh | |
+| TfIdfVectorizer | Not Supported |
+| ThresholdedRelu | Not Supported |
+| Tile | batchsize: 1
not support broadcast |
+| TopK | Not Supported |
+| Transpose | |
+| Trilu | Not Supported |
+| Unique | Not Supported |
+| Unsqueeze | |
+| Where | |
+| Xor | Not Supported |
+
+## Pytorch OPs supported by RKNN Toolkit2
+
+The Pytorch version supported by RKNN Toolkit2 is >1.6.0, models generated by other versions may not support.
+The list of Pytorch OPs supported by RKNN Toolkit2 is as follows:
+
+| **Operators** | **Remarks** |
+| ----------------------------- | ---------------------------------- |
+| aten::_convolution | same as onnx Conv |
+| aten::abs | Not supported |
+| aten::abs_ | Not supported |
+| aten::adaptive_avg_pool1d | Not supported |
+| aten::adaptive_avg_pool2d | same as onnx AveragePool |
+| aten::adaptive_max_pool1d | Not supported |
+| aten::adaptive_max_pool2d | same as onnx MaxPool |
+| aten::add | same as onnx Add |
+| aten::add_ | |
+| aten::addmm | same as onnx Gemm |
+| aten::affine_grid_generator | Not supported |
+| aten::alpha_dropout | |
+| aten::alpha_dropout_ | Not supported |
+| aten::arange | Not supported |
+| aten::avg_pool1d | Not supported |
+| aten::avg_pool2d | same as onnx AveragePool |
+| aten::avg_pool3d | Not supported |
+| aten::batch_norm | same as onnx BatchNormalization |
+| aten::bmm | same as onnx MatMul |
+| aten::cat | same as onnx Concat |
+| aten::celu | Not supported |
+| aten::celu_ | Not supported |
+| aten::chunk | |
+| aten::clamp | |
+| aten::clamp_ | |
+| aten::clamp_max | Not supported |
+| aten::clamp_max_ | Not supported |
+| aten::clamp_min | |
+| aten::clamp_min_ | Not supported |
+| aten::clone | |
+| aten::constant_pad_nd | same as onnx Pad |
+| aten::contiguous | |
+| aten::copy | |
+| aten::cos | Not supported |
+| aten::cos_ | Not supported |
+| aten::cumsum | Not supported |
+| aten::detach | |
+| aten::detach_ | Not supported |
+| aten::div | same as onnx Div |
+| aten::div_ | |
+| aten::dropout | |
+| aten::dropout_ | |
+| aten::einsum | Not supported |
+| aten::elu | same as onnx Elu |
+| aten::elu_ | |
+| aten::embedding | same as onnx Gather |
+| aten::empty | |
+| aten::eq | Not supported |
+| aten::eq_ | Not supported |
+| aten::erf | Not supported |
+| aten::erf_ | Not supported |
+| aten::erfc | Not supported |
+| aten::erfc_ | Not supported |
+| aten::exp | |
+| aten::exp_ | |
+| aten::expand | |
+| aten::expand_as | Not supported |
+| aten::expm1 | Not supported |
+| aten::expm1_ | Not supported |
+| aten::feature_dropout | |
+| aten::feature_dropout_ | Not supported |
+| aten::flatten | |
+| aten::flip | Not supported |
+| aten::floor | Not supported |
+| aten::floor_ | Not supported |
+| aten::floor_divide | Not supported |
+| aten::floor_divide_ | Not supported |
+| aten::gather | Not supported |
+| aten::ge | Not supported |
+| aten::ge_ | Not supported |
+| aten::gelu | |
+| aten::gelu_ | Not supported |
+| aten::grid_sampler | Not supported |
+| aten::gru | |
+| aten::gt | |
+| aten::gt_ | Not supported |
+| aten::hardshrink | Not supported |
+| aten::hardshrink_ | Not supported |
+| aten::hardswish | same as onnx HardSwish |
+| aten::hardswish_ | |
+| aten::hardtanh | |
+| aten::hardtanh_ | |
+| aten::index | Not supported |
+| aten::index_put | Not supported |
+| aten::index_put_ | Not supported |
+| aten::instance_norm | same as onnx InstanceNormalization |
+| aten::Int | |
+| aten::layer_norm | |
+| aten::le | Not supported |
+| aten::le_ | Not supported |
+| aten::leaky_relu | same as onnx LeakyRelu |
+| aten::leaky_relu_ | |
+| aten::lerp | Not supported |
+| aten::lerp_ | Not supported |
+| aten::log | Not supported |
+| aten::log_ | Not supported |
+| aten::log10 | Not supported |
+| aten::log10_ | Not supported |
+| aten::log1p | Not supported |
+| aten::log1p_ | Not supported |
+| aten::log2 | Not supported |
+| aten::log2_ | Not supported |
+| aten::log_sigmoid | Not supported |
+| aten::log_softmax | Not supported |
+| aten::linear | same as onnx Gemm |
+| aten::lstm | same as onnx LSTM |
+| aten::lt | |
+| aten::lt_ | Not supported |
+| aten::matmul | same as onnx MatMul |
+| aten::max | |
+| aten::maximum | |
+| aten::max_ | Not supported |
+| aten::max_pool1d | same as onnx MaxPool |
+| aten::max_pool1d_with_indices | |
+| aten::max_pool2d | same as onnx MaxPool |
+| aten::max_pool2d_with_indices | |
+| aten::mean | same as onnx ReduceMean |
+| aten::meshgrid | Not supported |
+| aten::min | |
+| aten::minimum | |
+| aten::min_ | Not supported |
+| aten::mish | |
+| aten::mm | same as onnx MatMul |
+| aten::mul | same as onnx Mul |
+| aten::mul_ | |
+| aten::narrow | same as onnx Slice |
+| aten::ne | |
+| aten::ne_ | Not supported |
+| aten::neg | Not supported |
+| aten::neg_ | Not supported |
+| aten::new_full | Not supported |
+| aten::new_zeros | Not supported |
+| aten::nonzero | Not supported |
+| aten::norm | Not supported |
+| aten::ones | |
+| aten::ones_like | |
+| aten::pad | Not supported |
+| aten::permute | same as onnx Transpose |
+| aten::pow | |
+| aten::pow_ | Not supported |
+| aten::prelu | same as onnx PRelu |
+| aten::prelu_ | Not supported |
+| aten::prod | |
+| aten::reciprocal | |
+| aten::reciprocal_ | Not supported |
+| aten::reflection_pad1d | |
+| aten::reflection_pad2d | |
+| aten::relu | same as onnx Relu |
+| aten::relu6 | same as onnx Relu |
+| aten::relu_ | |
+| aten::relu6_ | |
+| aten::repeat | |
+| aten::reshape | |
+| aten::reshape_ | Not supported |
+| torchvision::roi_align | Not supported |
+| aten::rsqrt | Not supported |
+| aten::rsqrt_ | Not supported |
+| aten::ScalarImplicit | |
+| aten::select | |
+| aten::selu | Not supported |
+| aten::selu_ | Not supported |
+| aten::sigmoid | same as onnx Sigmoid |
+| aten::sigmoid_ | |
+| aten::silu | |
+| aten::silu_ | |
+| aten::sin | Not supported |
+| aten::sin_ | Not supported |
+| aten::size | |
+| aten::slice | same as onnx Slice |
+| aten::softmax | same as onnx Softmax |
+| aten::softplus | |
+| aten::softshrink | Not supported |
+| aten::sort | Not supported |
+| aten::split | same as onnx Split |
+| aten::split_with_sizes | |
+| aten::sqrt | Not supported |
+| aten::sqrt_ | Not supported |
+| aten::squeeze | |
+| aten::squeeze_ | Not supported |
+| aten::stack | |
+| aten::sub | same as onnx Sub |
+| aten::sub_ | |
+| aten::sum | same as onnx ReduceSum |
+| aten::t | |
+| aten::t_ | Not supported |
+| aten::tanh | |
+| aten::tanh_ | |
+| aten::threshold | |
+| aten::threshold_ | |
+| aten::to | |
+| aten::topk | Not supported |
+| aten::transpose | |
+| aten::transpose_ | |
+| aten::true_divide | same as onnx Div |
+| aten::true_divide_ | Not supported |
+| aten::type_as | |
+| aten::unfold | Not supported |
+| aten::unsqueeze | |
+| aten::upsample_bilinear2d | |
+| aten::upsample_nearest2d | |
+| aten::view | |
+| aten::view_ | Not supported |
+| aten::view_as | Not supported |
+| aten::view_as_ | Not supported |
+| aten::where | |
+| aten::zero_ | Not supported |
+| aten::zeros | |
+| aten::zeros_like | |
+
+
+
+
+## Caffe OPs supported by RKNN Toolkit2
+
+Caffe protocols RKNN Toolkit2 uses only based on the officially modified protocol of berkeley.
+The protocol based on the official revision of berkeley comes from [berkeley caffe](https://github.com/BVLC/caffe/tree/master/src/caffe/proto 'Berkeley Caffe'), commit hash is 21d0608. On this basis RKNN Toolkit2 have added some OPs.
+Based on this protocol, the list of Caffe OPs supported by RKNN Toolkit2 is as follows:
+
+| **Operators** | **Remarks** |
+| ---------------------- | ------------------------------------------------------------------------------------------------------------- |
+| BatchNorm | same as onnx BatchNormalization |
+| bn (BatchNorm + Scale) | same as onnx BatchNormalization according to https://github.com/TimoSaemann/caffe-segnet-cudnn5 |
+| BNLL | |
+| Concat | same as onnx Concat |
+| Convolution | same as onnx Conv |
+| ConvolutionDepthwise | kernel height/width: [1, 8]
others same as onnx Conv |
+| Crop | |
+| Deconvolution | same as ConvTranspose |
+| Dropout | |
+| Eltwise | |
+| Flatten | |
+| HardSigmoid | |
+| InnerProduct | same as onnx Gemm |
+| LRN | same as onnx LRN |
+| Lstm | same as onnx LSTM according to https://github.com/xmfbit/warpctc-caffe |
+| Normalize | |
+| Permute | same as onnx Transpose |
+| Power | |
+| Pooling | same as onnx pooling |
+| PRelu | same as onnx PRelu |
+| Proposal | batch: 1 |
+| Reduction | output dims <= 4 |
+| Relu | same as onnx Relu |
+| Relu6 | same as onnx Clip |
+| Reorg | |
+| Reshape | same as onnx Reshape |
+| Resize | bilinear; nearest |
+| Reverse | |
+| ROIPooling | same as MaxRoiPool according to https://github.com/twmht/caffe-pva-faster-rcnn |
+| Scale | same as onnx Mul |
+| Sigmoid | same as onnx Sigmoid |
+| Slice | same as onnx Split |
+| Softmax | same as onnx Softmax |
+| Split | same as onnx Slice |
+| TanH | same as onnx TanH |
+| Tile | same as onnx Tile |
+| Transpose | same as onnx Transpose |
+| Upsample | according to https://github.com/SeanQ88/caffe_upsample and https://github.com/TimoSaemann/caffe-segnet-cudnn5 |
+
+
+## TensorFlow OPs supported by RKNN Toolkit2
+
+The pb files (contain OPs belows) generated by TensorFlow version 1.12 - 1.15 for 1.x and 2.3 - 2.5 for 2.x are supported by RKNN Toolkit2. For more information on TensorFlow version compatibility, please refer to [tensorflow official instructions on OP version](https://www.tensorflow.org/guide/versions 'Tensorflow official instructions on OP version') .
+The list of TensorFlow OPs supported by RKNN Toolkit2 is as follows:
+
+| **Operators** | **Remarks** |
+| --------------------- | --------------------------------------------------------- |
+| Add | same as onnx Add |
+| AvgPool | same as onnx AveragePool |
+| Concat | same as onnx Concat |
+| Conv2D | same as onnx Conv |
+| DepthToSpace | |
+| DepthwiseConv2d | kernel height/width: [1, 8]
others same as onnx Conv |
+| Div | same as onnx Div |
+| Dropout | |
+| Flatten | |
+| LeakyRelu | same as onnx LeakyRelu |
+| Less | same as onnx Less |
+| LRN | |
+| MatMul | |
+| MaxPool | same as onnx MaxPool |
+| Mean | output dims <= 4 |
+| Pad | same as onnx Pad |
+| Relu | same as onnx Relu |
+| Reshape | |
+| ResizeBilinear | |
+| ResizeNearestNeighbor | |
+| Sigmoid | |
+| Slice | |
+| Softmax | |
+| Softplus | same as onnx Softplus |
+| SpaceToDepth | |
+| Split | |
+| Squeeze | |
+| StridedSlice | |
+| Tanh | same as onnx TanH |
+| Transpose | |
+
+## Darknet OPs supported by RKNN Toolkit2
+The list of Darknet OPs supported by RKNN Toolkit2 is as follows:
+
+| **Operators** | **Remarks** |
+| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| add | same as onnx Add |
+| batchnormalize | same as onnx BatchNormalization |
+| concat | same as onnx Concat |
+| convolutional | same as onnx Conv |
+| depthwise_convolutional | kernel height/width: [1, 8]
others same as onnx Conv |
+| fullconnect | |
+| leakyrelu | same as onnx LeakyRelu |
+| mish | |
+| pooling | **AveragePool**: same as onnx AveragePool
**GlobalAveragePool**: same as onnx GlobalAveragePool
**MaxPool/GlobalMaxPool**: same as onnx MaxPool/GlobalMaxPool |
+| route | |
+| shortcut | |
+| softmax | |
+| upsampling | |
\ No newline at end of file
diff --git a/doc/Using RKNN-ToolKit2 in WSL.md b/doc/Using RKNN-ToolKit2 in WSL.md
new file mode 100644
index 0000000000000000000000000000000000000000..663d703e0da21c6b97a896fd4d11bdbfd9b33ee4
--- /dev/null
+++ b/doc/Using RKNN-ToolKit2 in WSL.md
@@ -0,0 +1,63 @@
+# Using RKNN-ToolKit2 in WSL
+
+## 1. Installing WSL on Windows Host
+- You can refer to the following link for installing WSL: https://learn.microsoft.com/en-us/windows/wsl/install
+
+## 2. Using RKNN-Toolkit2 in WSL
+1. Refer to the document[《Rockchip_RKNPU_Quick_Start》](https://github.com/airockchip/rknn-toolkit2/blob/master/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.0.0beta0_EN.pdf) to install the RKNN-ToolKit2 environment in WSL
+2. Refer to the document[《Rockchip_RKNPU_User_Guide》](https://github.com/airockchip/rknn-toolkit2/blob/master/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_EN.pdf) for model conversion, quantization, and other operations in WSL.
+
+## 3. Using RKNN-Toolkit2 for Board Debugging in WSL
+
+### 3.1. Installing adb in WSL Terminal
+```
+sudo apt update
+sudo apt install adb
+```
+
+### 3.2 Connecting the Device in WSL
+You can choose to connect the device through Ethernet or USB.
+
+#### 3.2.1 Ethernet Connection
+```
+# 1. Connect the device using Ethernet cable.
+
+# 2. In WSL, use adb connect to connect to the device.
+adb connect
+```
+`IP address` is the IP address of the board.
+
+
+#### 3.2.2 USB Connection
+```
+# 1. Connect the device to Windows via USB.
+
+# 2. Use the adbkit tool in Windows to convert USB to TCP.
+npm install --save adbkit
+adbkit usb-device-to-tcp -p
+
+# Note: Configure WSL to access Windows network.
+
+# 3. In WSL, use adb connect to connect to the device.
+adb connect
+```
+- `device_id` can be obtained by running the `adb devices` command in Windows (adb tool must be installed in Windows).
+- `IP address` is the IP address of the Windows host.
+
+### 3.3 Using RKNN-Toolkit2 for Board Debugging
+Refer to the document [《Rockchip_RKNPU_User_Guide》](https://github.com/airockchip/rknn-toolkit2/blob/master/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_EN.pdf) for board inference, accuracy analysis, and other operations in WSL.
+
+
+
+## NOte:
+1. It is recommended to install WSL2 with Ubuntu version 22.04, which has been verified to work (other versions are theoretically feasible but not tested).
+2. If you encounter the "ImportError: libGL.so.1: cannot open shared object file: No such file or directory" error while using RKNN-ToolKit2 in WSL, execute the following code to resolve it:
+```
+1. Install the required library:
+sudo apt update
+sudo apt install libgl1-mesa-glx
+
+2. Set the environment variable:
+echo 'export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa' >> ~/.bashrc
+source ~/.bashrc
+```
\ No newline at end of file
diff --git "a/doc/WSL\344\270\255\344\275\277\347\224\250RKNN_ToolKit2.md" "b/doc/WSL\344\270\255\344\275\277\347\224\250RKNN_ToolKit2.md"
new file mode 100644
index 0000000000000000000000000000000000000000..dc41d2186a9abea49666a60fdcce9c3e9ac6f623
--- /dev/null
+++ "b/doc/WSL\344\270\255\344\275\277\347\224\250RKNN_ToolKit2.md"
@@ -0,0 +1,63 @@
+# WSL 中 使用RKNN-ToolKit2
+
+## 1. Windows主机安装WSL
+- 可参考 https://learn.microsoft.com/zh-cn/windows/wsl/install
+
+## 2. WSL 中使用RKNN-Toolkit2
+1. 参考[《Rockchip_RKNPU_Quick_Start手册》](https://github.com/airockchip/rknn-toolkit2/blob/master/doc/01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V2.0.0beta0_CN.pdf)在 WSL 中安装RKNN-ToolKit2环境
+2. 参考[《Rockchip_RKNPU_User_Guide手册》](https://github.com/airockchip/rknn-toolkit2/blob/master/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_CN.pdf)在 WSL 进行模型转换、量化等操作
+
+## 3. WSL 中使用RKNN-Toolkit2进行连板调试
+
+### 3.1. WSL 终端安装adb
+```
+sudo apt update
+sudo apt install adb
+```
+
+### 3.2 WSL 连接设备
+可选择通过网线或USB进行设备连接
+
+#### 3.2.1 通过网线连接
+```
+# 1. 使用网线连接设备
+
+# 2. 在 WSL 中使用 adb connect 连接设备
+adb connect
+```
+`IP地址` 为板子的IP地址
+
+
+#### 3.2.2 通过USB连接
+```
+# 1. 在 Windows 上通过USB连接设备
+
+# 2. 在 Windows 上使用adbkit工具,将USB转为TCP
+npm install --save adbkit
+adbkit usb-device-to-tcp -p <端口号>
+
+# 注:配置WSL可以访问Windows的网络
+
+# 3. 在 WSL 中使用 adb connect 连接设备
+adb connect
+```
+- `device_id`可通过在Windows中使用`adb devices`命令查看 (需要Windows中已安装adb工具)
+- `IP地址` 为 Windows主机 的IP地址
+
+### 3.3 使用RKNN-ToolKit2进行连板调试
+参考[《Rockchip_RKNPU_User_Guide手册》](https://github.com/airockchip/rknn-toolkit2/blob/master/doc/02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_CN.pdf)在 WSL 进行连板推理、连板精度分析等操作
+
+
+
+## 注:
+1. 推荐安装 WSL2,Ubuntu版本号为22.04 已验证可行(其余版本未验证,理论可行)
+2. 在WSL使用RKNN-ToolKit2中若出现 "ImportError: libGL.so.1: cannot open shared object file: No such file or directory",请执行以下代码解决
+```
+1. 安装对应库
+sudo apt update
+sudo apt install libgl1-mesa-glx
+
+2. 设置环境变量
+echo 'export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa' >> ~/.bashrc
+source ~/.bashrc
+```
\ No newline at end of file
diff --git a/doc/rknn_server_proxy.md b/doc/rknn_server_proxy.md
new file mode 100644
index 0000000000000000000000000000000000000000..2eff17c2483fc50565d9834a53124f76b40746d2
--- /dev/null
+++ b/doc/rknn_server_proxy.md
@@ -0,0 +1,349 @@
+**目录**
+
+[TOC]
+
+## 1. 连板调试简介
+RKNN Toolkit2的连板功能一般需要更新板端的 rknn_server 和 librknnrt.so/librknnmrt.so,并且手动启动 rknn_server 才能正常工作。
+rknn_server: 是一个运行在板子上的后台代理服务,用于接收PC通过USB传输过来的协议,然后执行板端runtime对应的接口,并返回结果给PC。
+
+- librknnrt.so: 是一个板端的RKNPU Runtime库(非RV1103/RV1106/RV1103B平台不适用)。
+- librknnmrt.so: 是专用于RV1103/RV1106/RV1103B平台的RKNPU Runtime库。
+
+开机后通过ps命令查看rknn_server进程是否已存在,如果已存在,则不需要手动启动,否则需要手动启动。
+
+## 2. 环境要求
+### 2.1 硬件环境
+本文档适用如下硬件平台:
+
+- RV1103
+- RV1103B
+- RV1106
+- RK3562
+- RK3566系列
+- RK3568系列
+- RK3576系列
+- RK3588系列
+
+### 2.2 软件环境
+- 若使用动态形状输入RKNN模型,要求rknn_server和RKNPU Runtime库版本>=1.5.0。
+- 若使用大于2GB的模型,要求rknn_server版本>=2.0.0b0。
+- 在RV1103/RV1106/RV1103B等小内存平台上,建议rknn_server版本>=2.1.0。
+
+
+## 3. rknn_server存放目录
+rknn_server存放在runtime目录下, 请根据板子上的系统选择相应版本的rknn_server,不同芯片和系统对应的rknn_server路径如下:
+### 3.1 Android平台
+|系统|路径|
+|-----|-----|
+|32-bit Android|runtime/Android/rknn_server/arm/rknn_server|
+|64-bit Android|runtime/Android/rknn_server/arm64/rknn_server|
+
+
+### 3.2 Linux平台
+
+|芯片|系统|路径|
+|-----|-----|-----|
+|RV1103/RV1106/RV1103B|32-bit Linux|runtime/Linux/rknn_server/armhf-uclibc/usr/bin/rknn_server|
+|其他芯片|32-bit Linux|runtime/Linux/rknn_server/armhf/usr/bin/rknn_server|
+|其他芯片|64-bit Linux|runtime/Linux/rknn_server/aarch64/usr/bin/rknn_server|
+
+## 4. 启动步骤
+### 4.1 Android平台
+进入rknpu2工程的根目录,在PC端执行下列命令启动代理服务:
+1. 重新挂载系统分区,使系统分区重新可写
+```
+adb root && adb remount
+```
+2. 更新代理程序
+```
+// 64-bit Android系统
+adb push runtime/Android/rknn_server/arm64/rknn_server /vendor/bin/
+// 32-bit Android系统
+adb push runtime/Android/rknn_server/arm/rknn_server /vendor/bin/
+```
+3. 更新RKNPU runtime库
+```
+// 64-bit Android系统
+adb push runtime/Android/librknn_api/arm64-v8a/librknnrt.so /vendor/lib64
+// 32-bit Android系统
+adb push runtime/Android/librknn_api/armeabi-v7a/librknnrt.so /vendor/lib
+```
+4. 修改代理程序权限
+```
+adb shell chmod +x /vendor/bin/rknn_server
+```
+5. 启动代理服务
+```
+adb shell "killall rknn_server"
+adb shell "nohup /vendor/bin/rknn_server >/dev/null"&
+```
+6. 检查代理服务是否启动成功:
+```
+adb shell ps -ef|grep rknn_server
+```
+查看是否有`rknn_server`的进程id,如果存在表示代理服务启动成功;否则请在板子上手动启动代理服务,步骤如下:
+adb shell命令**进入板子shell界面**后,执行下列命令启动代理服务
+
+```
+nohup /vendor/bin/rknn_server > /dev/null&
+```
+
+### 4.2 Linux平台(非RV1103/RV1106/RV1103B)
+1. 更新代理程序
+```
+// 64-bit Linux系统
+adb push runtime/Linux/rknn_server/aarch64/usr/bin/rknn_server /usr/bin/
+// 32-bit Linux系统
+adb push runtime/Linux/rknn_server/armhf/usr/bin/rknn_server /usr/bin/
+```
+2. 更新RKNPU runtime库
+```
+// 64-bit Linux系统
+adb push runtime/Linux/librknn_api/aarch64/librknnrt.so /usr/lib
+// 32-bit Linux系统
+adb push runtime/Linux/librknn_api/armhf/librknnrt.so /usr/lib
+```
+3. 修改代理程序权限
+```
+adb shell chmod +x /usr/bin/rknn_server
+```
+4. 启动代理服务
+```
+adb shell "killall rknn_server"
+adb shell "nohup /usr/bin/rknn_server >/dev/null"&
+```
+5. 检查代理服务是否启动成功:
+```
+adb shell ps -ef|grep rknn_server
+```
+查看是否有`rknn_server`的进程id,如果存在表示代理服务启动成功;否则请在板子上手动启动代理服务,方法如下:
+adb shell命令**进入板子shell界面**后,执行下列命令启动代理服务
+
+```
+nohup /usr/bin/rknn_server > /dev/null&
+```
+
+### 4.3Linux平台(RV1103/RV1106/RV1103B)
+RV1103/RV1106/RV1103B上使用的RKNPU Runtime库是librknnmrt.so,使用armhf-uclibc目录下的rknn_server,启动步骤如下:
+1. 更新代理程序
+```
+adb push runtime/Linux/rknn_server/armhf-uclibc/usr/bin/rknn_server /oem/usr/bin
+```
+2. 更新RKNPU runtime库
+```
+adb push runtime/Linux/librknn_api/armhf-uclibc/librknnmrt.so /oem/usr/lib
+```
+3. 修改代理程序权限
+```
+adb shell chmod +x /oem/usr/bin/rknn_server
+```
+4. 启动代理服务
+```
+adb shell "killall rknn_server"
+adb shell "nohup /oem/usr/bin/rknn_server >/dev/null"&
+```
+5. 检查代理服务是否启动成功:
+```
+adb shell ps |grep rknn_server
+```
+查看是否有`rknn_server`的进程id,如果存在表示代理服务启动成功;否则请在板子上手动启动代理服务,方法如下:
+adb shell命令**进入板子shell界面**后,执行下列命令启动代理服务
+
+```
+nohup /oem/usr/bin/rknn_server > /dev/null&
+```
+
+## 5. 查看rknn_server详细日志
+代理服务默认不开启详细日志,如遇到连板过程报错,需开启详细日志来定位错误原因,请参考相应平台执行步骤:
+### 5.1 Android平台
+1. 设置环境变量开启详细日志,并启动代理:
+```
+adb logcat -c
+adb shell "killall rknn_server"
+adb shell "setprop persist.vendor.rknn.server.log.level 5 && nohup /vendor/bin/rknn_server >/dev/null"&
+```
+2. 检查代理服务是否启动成功:
+
+```
+adb shell ps -ef|grep rknn_server
+```
+3. 运行PC上python推理程序
+4. 查看运行日志
+```
+adb logcat
+```
+
+5. 开启详细日志会导致推理速度变慢,恢复默认日志等级的命令如下:
+
+```sh
+adb shell "killall rknn_server"
+adb shell "setprop persist.vendor.rknn.server.log.level 0 && nohup /vendor/bin/rknn_server >/dev/null"&
+```
+
+### 5.2 Linux平台(非RV1103/RV1106/RV1103B)
+
+1. 创建目录,用于保存代理服务的详细日志
+```
+adb shell mkdir -p /userdata
+```
+2. 设置环境变量开启详细日志,并启动代理:
+```
+adb shell "killall rknn_server"
+adb shell "export RKNN_SERVER_LOGLEVEL=5 && nohup /usr/bin/rknn_server >/userdata/server.log"&
+```
+3. 检查代理服务是否启动成功:
+```
+adb shell ps -ef|grep rknn_server
+```
+查看是否有`rknn_server`的进程id,如果存在表示代理服务启动成功;否则请在板子上手动启动代理服务,方法如下:
+adb shell命令进入板子shell界面后,执行下列命令启动代理服务
+```
+export RKNN_SERVER_LOGLEVEL=5
+nohup /usr/bin/rknn_server >/userdata/server.log&
+exit
+```
+4. 运行PC上python推理程序
+5. 查看日志
+```
+adb shell cat /userdata/server.log
+```
+
+6. 开启详细日志会导致推理速度变慢,恢复默认日志等级的命令如下:
+
+```sh
+ adb shell "killall rknn_server"
+ adb shell "export RKNN_SERVER_LOGLEVEL=0 && nohup /usr/bin/rknn_server >/userdata/server.log"&
+```
+
+### 5.3 Linux平台(RV1103/RV1106/RV1103B)
+
+1. 创建目录,用于保存代理服务的详细日志
+```
+adb shell mkdir -p /userdata
+```
+2. 设置环境变量开启详细日志,并启动代理:
+```
+adb shell "killall rknn_server"
+adb shell "export RKNN_SERVER_LOGLEVEL=5 && nohup /oem/usr/bin/rknn_server >/userdata/server.log"&
+```
+3. 检查代理服务是否启动成功:
+```
+adb shell ps|grep rknn_server
+```
+查看是否有`rknn_server`的进程id,如果存在表示代理服务启动成功;否则请在板子上手动启动代理服务,方法如下:
+adb shell命令进入板子shell界面后,执行下列命令启动代理服务
+```
+export RKNN_SERVER_LOGLEVEL=5
+nohup /oem/usr/bin/rknn_server >/userdata/server.log&
+exit
+```
+4. 运行PC上python推理程序
+5. 查看日志
+```
+adb shell cat /userdata/server.log
+```
+
+6. 开启详细日志会导致推理速度变慢,恢复默认日志等级的命令如下:
+
+```sh
+adb shell "killall rknn_server"
+adb shell "export RKNN_SERVER_LOGLEVEL=0 && nohup /oem/usr/bin/rknn_server >/userdata/server.log"&
+```
+
+## 6. 常见问题
+### 问题1
+Debian系统上rknn_server服务已经后台启动, 但是连板推理时依旧有如下报错:
+```
+D NPUTransfer: ERROR: socket read fd = 4, n = -1: Connection reset by peer
+D NPUTransfer: Transfer client closed, fd = 4
+E RKNNAPI: rknn_init, server connect fail! ret = -9(ERROR_PIPE)!
+E build_graph: The rknn_server on the concected device is abnormal, please start the rknn_server on the device according to:
+ https://github.com/airockchip/rknn-toolkit2/blob/master/doc/rknn_server_proxy.md
+```
+
+**解决方法:**
+这通常是由于Debian固件上的adbd程序没有监听5037端口导致的,可以在板子上执行以下命令来判断:
+```
+netstat -n -t -u -a
+```
+如果输出结果中没有5037端口,则执行下列命令下载和更新adbd程序, 并重启板子;否则,跳过下列步骤。
+```
+wget -O adbd.zip https://ftzr.zbox.filez.com/v2/delivery/data/7f0ac30dfa474892841fcb2cd29ad924/adbd.zip
+unzip adbd.zip
+adb push adbd/linux-aarch64/adbd /usr/bin/adbd
+```
+进入设备shell命令,增加adbd的可执行权限
+
+```sh
+adb shell "chmod +x /usr/bin/adbd"
+adb reboot
+```
+
+重启设备后,按照启动步骤启动rknn_server服务,再次尝试连板推理。
+
+
+### 问题2
+在RV1103/RV1106/RV1103B设备上遇到"E RKNN: failed to allocate fd, ret: -1, errno: 12"或者OOM报错。
+**解决方法:**
+在RV1103/RV1106/RV1103B设备上运行RkLunch-stop.sh,关闭其他占用内存的应用,并将rknn_server升级到>=2.1.0版本后再连板推理。
+
+### 问题3
+RV1103/RV1106/RV1103B使用init_runtime python接口时,没有逐层的耗时。
+原因:RV1103/RV1106/RV1103B上**不支持**perf_debug=True参数。
+
+### 问题4
+RV1103/RV1106/RV1103B使用accuracy_analysis python接口使用时,因为模型太大,板子上存储容量不够导致运行失败。
+
+**解决方法:**
+
+在设备端df -h查看存储空间情况,假设设备存储情况如下:
+
+```sh
+Filesystem Size Used Available Use% Mounted on
+ubi0:rootfs 17.0M 14.1M 2.9M 83% /
+devtmpfs 27.4M 0 27.4M 0% /dev
+tmpfs 27.5M 0 27.5M 0% /dev/shm
+tmpfs 27.5M 8.0K 27.5M 0% /tmp
+tmpfs 27.5M 84.0K 27.4M 0% /run
+/dev/ubi5_0 20.6M 14.5M 6.1M 70% /oem
+/dev/ubi6_0 52.8M 24.5M 28.2M 46% /userdata
+
+```
+
+从上面看出/userdata/目录的可用空间最大,故将/userdata/目录作为精度分析时保存中间结果文件的目录,再重启rknn_server,PC上执行命令如下:
+
+```
+adb shell "killall rknn_server"
+adb shell "export RKNN_DUMP_DIR=/userdata/dumps && nohup /usr/bin/rknn_server >/dev/null"&
+```
+
+RV1103/RV1106/RV1103B的rknn_server默认的保存中间结果路径是/tmp/dumps,如果需要恢复默认路径,请执行下列命令:
+
+```adb shell "killall rknn_server"
+adb shell "killall rknn_server"
+adb shell "unset RKNN_DUMP_DIR && nohup /usr/bin/rknn_server >/dev/null"&
+```
+
+如果设备存储空间不足,并且RV1103/RV1106/RV1103B固件支持NFS挂载,则可以将dump目录挂载到NFS目录后,再执行精度分析。假设目标服务器的IP为192.168.1.1,服务器NFS目录是/data0/nfs_shared,则在设备上执行下列命令将/userdata/dumps挂载到NFS目录
+
+```
+# 以241为例
+mkdir -p /userdata/dumps
+mount -t nfs -o nolock 192.168.1.1:/data0/nfs_shared /userdata/dumps
+```
+
+### 问题5
+
+使用adb命令更新Runtime库后没有生效。
+
+**解决方法**:
+
+更新库后要重新启动rknn_server,下次连板推理才能生效。如果是RV1103/RV1106/RV1103B平台,确保将librknnmrt.so放在/oem/usr/lib目录,如果/usr/lib/目录下有同名的库,要删除/usr/lib/下的librknnmrt.so,并重启rknn_server。
+
+### 问题6
+
+Android系统启动代理服务遇到权限问题。
+
+**解决方法**:
+
+使用adb shell setenforce 0命令来关闭selinux。
diff --git a/res/QQGroup2QRCode.png b/res/QQGroup2QRCode.png
new file mode 100755
index 0000000000000000000000000000000000000000..4013b6079f6323cb59c06800790427166a629869
--- /dev/null
+++ b/res/QQGroup2QRCode.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d40267b1f8cc050987feb4c871f2fba4b5005c8ff0cbb5da471b62879518cec6
+size 96408
diff --git a/res/QQGroup3QRCode.png b/res/QQGroup3QRCode.png
new file mode 100755
index 0000000000000000000000000000000000000000..482b0bdd55c5a07d5814669e32c3565ed4992957
--- /dev/null
+++ b/res/QQGroup3QRCode.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0bc9629b703bfaaefe4eafc80297869edee79772f421f000709d9c8ea26ec10a
+size 97404
diff --git a/res/QQGroupQRCode.png b/res/QQGroupQRCode.png
new file mode 100755
index 0000000000000000000000000000000000000000..1bd5beee0b19b7e61b38f85498452f3382d2507e
--- /dev/null
+++ b/res/QQGroupQRCode.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:239599f76730227dcd1114ab4eff91a97aa26b73459b806dfb445c5bf49a25c7
+size 92999
diff --git a/res/framework.png b/res/framework.png
new file mode 100755
index 0000000000000000000000000000000000000000..fa6fd3d15d126596e4a51d4e1d726feeda548d19
--- /dev/null
+++ b/res/framework.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19c077c7e8431a4860f5308e3cfdf17b6427aa0a7b4f89613e8f9b91d510b78b
+size 659744
diff --git a/res/logo.png b/res/logo.png
new file mode 100755
index 0000000000000000000000000000000000000000..7a67df7048fa0402c718f915b749ab66f03d6420
--- /dev/null
+++ b/res/logo.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2992ee2c61da554f39a24f34e90a1db5f28838bed15fd298708655d72b03576
+size 5811
diff --git a/rknn-toolkit-lite2/CHANGELOG.txt b/rknn-toolkit-lite2/CHANGELOG.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2048eb3f01b6099dd50167efcbda44c19606c62e
--- /dev/null
+++ b/rknn-toolkit-lite2/CHANGELOG.txt
@@ -0,0 +1,45 @@
+2024-08-08
+版本: v2.1.0
+1. 修复已知BUG。
+
+2024-03-14
+版本: v2.0.0b0
+1. 功能完善:
+ 1.1 新增对RK3576的支持;
+ 1.2 init_runtime core_mask参数增加新的可选值:RKNNLite.NPU_CORE_ALL。
+
+2023-12-04
+版本: v1.6.0
+1. 功能完善:
+ 1.1 新增适配AARCH64 Python3.11的安装包;
+ 1.2 推理接口增加对动态shape模型的支持;
+ 1.3 推理接口增加对4维NCHW格式输入的支持。
+
+2023-08-21
+版本: v1.5.2
+1. 更新版本号
+
+版本: v1.5.0
+1. 功能完善:
+ 1.1 新增对RK3562的支持;
+ 1.2 新增适配AARCH64 Python3.8, Python3.10的安装包;
+ 1.3 适配1.5.0版本NPU驱动。
+
+2022-08-31
+版本: v1.4.0
+1. 功能完善:
+ 1.1 init_runtime core_mask支持NPU_CORE_0_1和NPU_CORE_0_1_2;
+ 1.2 适配1.4.0版本NPU驱动。
+
+2022-04-27
+版本: v1.3.0
+1. 功能完善:
+ 1.1 完善init_runtime失败的提示信息;
+ 1.2 适配1.3.0版本NPU驱动。
+
+2022-01-14
+版本:v1.2.0
+1. 新功能:
+ 1.1 RKNN模型推理;
+ 1.2 SDK版本查询;
+ 1.3 模型可运行平台查询。
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/README.md b/rknn-toolkit-lite2/examples/dynamic_shape/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..63edd3a6a55bf37917b16d8bd1d047eb2f6b866f
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/README.md
@@ -0,0 +1,49 @@
+# How to use dynamic shape function
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/shicai/MobileNet-Caffe
+
+### Convert to RKNN model
+Please refer to the example in the RKNN Toolkit2 project to generate the RKNN model:
+https://github.com/rockchip-linux/rknn-toolkit2/tree/master/examples/functions/dynamic_shape
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results for each different input shape, as follows:
+```
+model: mobilenet_v2
+
+input shape: 1,3,224,224
+W The input[0] need NHWC data format, but NCHW set, the data format and data buffer will be changed to NHWC.
+-----TOP 5-----
+[155] score:0.992188 class:"Shih-Tzu"
+[154] score:0.002636 class:"Pekinese, Pekingese, Peke"
+[204] score:0.002636 class:"Lhasa, Lhasa apso"
+[283] score:0.001698 class:"Persian cat"
+[896] score:0.000273 class:"washbasin, handbasin, washbowl, lavabo, wash-hand basin"
+
+input shape: 1,3,160,160
+W The input[0] need NHWC data format, but NCHW set, the data format and data buffer will be changed to NHWC.
+-----TOP 5-----
+[155] score:0.558594 class:"Shih-Tzu"
+[154] score:0.408447 class:"Pekinese, Pekingese, Peke"
+[204] score:0.031036 class:"Lhasa, Lhasa apso"
+[194] score:0.000956 class:"Dandie Dinmont, Dandie Dinmont terrier"
+[219] score:0.000256 class:"cocker spaniel, English cocker spaniel, cocker"
+
+input shape: 1,3,256,256
+W The input[0] need NHWC data format, but NCHW set, the data format and data buffer will be changed to NHWC.
+-----TOP 5-----
+[155] score:0.980957 class:"Shih-Tzu"
+[154] score:0.008835 class:"Pekinese, Pekingese, Peke"
+[204] score:0.004883 class:"Lhasa, Lhasa apso"
+[193] score:0.000929 class:"Australian terrier"
+[200] score:0.000509 class:"Tibetan terrier, chrysanthemum dog"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/dog_224x224.jpg b/rknn-toolkit-lite2/examples/dynamic_shape/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3562.rknn b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3562.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..53fdef162efa5984b7b4d657bb59ec83e6ff0928
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3562.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f71efa3af9e664e79a3508663f02038e3fdc081cb3f3e4f2be646f6588b622bb
+size 4955210
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3566_rk3568.rknn b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3566_rk3568.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..79b5929c538f09e60848ae18f3dc40463dfe36f9
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3566_rk3568.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f591b57b93f76226aed9741ecc4910bb7d69c88fe397fdeaedd57fa0f1904373
+size 4623050
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3576.rknn b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3576.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..feff11470bdb2c7db799f181e671f4fbb226f67e
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3576.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e659fee1c0f0e2a9d22fe9e6dc85ea29c6a2dca8a222995c0838a3ece5e9ad49
+size 6006922
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3588.rknn b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3588.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..6b7607adcfeadf8a4faa40cf3022de94afd158d1
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/mobilenet_v2_for_rk3588.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b866cf43678a7bec1df7b002d222f369f9a63d5197e0c1eaa9d0a407b1deb433
+size 5856394
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/synset_label.py b/rknn-toolkit-lite2/examples/dynamic_shape/synset_label.py
new file mode 100644
index 0000000000000000000000000000000000000000..b53fbf603e968333b3e101d8cbf4267a12b3ab5b
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/synset_label.py
@@ -0,0 +1,1003 @@
+# the labels come from synset.txt, download link: https://s3.amazonaws.com/onnx-model-zoo/synset.txt
+
+labels = \
+{0: 'tench, Tinca tinca',
+ 1: 'goldfish, Carassius auratus',
+ 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias',
+ 3: 'tiger shark, Galeocerdo cuvieri',
+ 4: 'hammerhead, hammerhead shark',
+ 5: 'electric ray, crampfish, numbfish, torpedo',
+ 6: 'stingray',
+ 7: 'cock',
+ 8: 'hen',
+ 9: 'ostrich, Struthio camelus',
+ 10: 'brambling, Fringilla montifringilla',
+ 11: 'goldfinch, Carduelis carduelis',
+ 12: 'house finch, linnet, Carpodacus mexicanus',
+ 13: 'junco, snowbird',
+ 14: 'indigo bunting, indigo finch, indigo bird, Passerina cyanea',
+ 15: 'robin, American robin, Turdus migratorius',
+ 16: 'bulbul',
+ 17: 'jay',
+ 18: 'magpie',
+ 19: 'chickadee',
+ 20: 'water ouzel, dipper',
+ 21: 'kite',
+ 22: 'bald eagle, American eagle, Haliaeetus leucocephalus',
+ 23: 'vulture',
+ 24: 'great grey owl, great gray owl, Strix nebulosa',
+ 25: 'European fire salamander, Salamandra salamandra',
+ 26: 'common newt, Triturus vulgaris',
+ 27: 'eft',
+ 28: 'spotted salamander, Ambystoma maculatum',
+ 29: 'axolotl, mud puppy, Ambystoma mexicanum',
+ 30: 'bullfrog, Rana catesbeiana',
+ 31: 'tree frog, tree-frog',
+ 32: 'tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui',
+ 33: 'loggerhead, loggerhead turtle, Caretta caretta',
+ 34: 'leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea',
+ 35: 'mud turtle',
+ 36: 'terrapin',
+ 37: 'box turtle, box tortoise',
+ 38: 'banded gecko',
+ 39: 'common iguana, iguana, Iguana iguana',
+ 40: 'American chameleon, anole, Anolis carolinensis',
+ 41: 'whiptail, whiptail lizard',
+ 42: 'agama',
+ 43: 'frilled lizard, Chlamydosaurus kingi',
+ 44: 'alligator lizard',
+ 45: 'Gila monster, Heloderma suspectum',
+ 46: 'green lizard, Lacerta viridis',
+ 47: 'African chameleon, Chamaeleo chamaeleon',
+ 48: 'Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis',
+ 49: 'African crocodile, Nile crocodile, Crocodylus niloticus',
+ 50: 'American alligator, Alligator mississipiensis',
+ 51: 'triceratops',
+ 52: 'thunder snake, worm snake, Carphophis amoenus',
+ 53: 'ringneck snake, ring-necked snake, ring snake',
+ 54: 'hognose snake, puff adder, sand viper',
+ 55: 'green snake, grass snake',
+ 56: 'king snake, kingsnake',
+ 57: 'garter snake, grass snake',
+ 58: 'water snake',
+ 59: 'vine snake',
+ 60: 'night snake, Hypsiglena torquata',
+ 61: 'boa constrictor, Constrictor constrictor',
+ 62: 'rock python, rock snake, Python sebae',
+ 63: 'Indian cobra, Naja naja',
+ 64: 'green mamba',
+ 65: 'sea snake',
+ 66: 'horned viper, cerastes, sand viper, horned asp, Cerastes cornutus',
+ 67: 'diamondback, diamondback rattlesnake, Crotalus adamanteus',
+ 68: 'sidewinder, horned rattlesnake, Crotalus cerastes',
+ 69: 'trilobite',
+ 70: 'harvestman, daddy longlegs, Phalangium opilio',
+ 71: 'scorpion',
+ 72: 'black and gold garden spider, Argiope aurantia',
+ 73: 'barn spider, Araneus cavaticus',
+ 74: 'garden spider, Aranea diademata',
+ 75: 'black widow, Latrodectus mactans',
+ 76: 'tarantula',
+ 77: 'wolf spider, hunting spider',
+ 78: 'tick',
+ 79: 'centipede',
+ 80: 'black grouse',
+ 81: 'ptarmigan',
+ 82: 'ruffed grouse, partridge, Bonasa umbellus',
+ 83: 'prairie chicken, prairie grouse, prairie fowl',
+ 84: 'peacock',
+ 85: 'quail',
+ 86: 'partridge',
+ 87: 'African grey, African gray, Psittacus erithacus',
+ 88: 'macaw',
+ 89: 'sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita',
+ 90: 'lorikeet',
+ 91: 'coucal',
+ 92: 'bee eater',
+ 93: 'hornbill',
+ 94: 'hummingbird',
+ 95: 'jacamar',
+ 96: 'toucan',
+ 97: 'drake',
+ 98: 'red-breasted merganser, Mergus serrator',
+ 99: 'goose',
+ 100: 'black swan, Cygnus atratus',
+ 101: 'tusker',
+ 102: 'echidna, spiny anteater, anteater',
+ 103: 'platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus',
+ 104: 'wallaby, brush kangaroo',
+ 105: 'koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus',
+ 106: 'wombat',
+ 107: 'jellyfish',
+ 108: 'sea anemone, anemone',
+ 109: 'brain coral',
+ 110: 'flatworm, platyhelminth',
+ 111: 'nematode, nematode worm, roundworm',
+ 112: 'conch',
+ 113: 'snail',
+ 114: 'slug',
+ 115: 'sea slug, nudibranch',
+ 116: 'chiton, coat-of-mail shell, sea cradle, polyplacophore',
+ 117: 'chambered nautilus, pearly nautilus, nautilus',
+ 118: 'Dungeness crab, Cancer magister',
+ 119: 'rock crab, Cancer irroratus',
+ 120: 'fiddler crab',
+ 121: 'king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica',
+ 122: 'American lobster, Northern lobster, Maine lobster, Homarus americanus',
+ 123: 'spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish',
+ 124: 'crayfish, crawfish, crawdad, crawdaddy',
+ 125: 'hermit crab',
+ 126: 'isopod',
+ 127: 'white stork, Ciconia ciconia',
+ 128: 'black stork, Ciconia nigra',
+ 129: 'spoonbill',
+ 130: 'flamingo',
+ 131: 'little blue heron, Egretta caerulea',
+ 132: 'American egret, great white heron, Egretta albus',
+ 133: 'bittern',
+ 134: 'crane',
+ 135: 'limpkin, Aramus pictus',
+ 136: 'European gallinule, Porphyrio porphyrio',
+ 137: 'American coot, marsh hen, mud hen, water hen, Fulica americana',
+ 138: 'bustard',
+ 139: 'ruddy turnstone, Arenaria interpres',
+ 140: 'red-backed sandpiper, dunlin, Erolia alpina',
+ 141: 'redshank, Tringa totanus',
+ 142: 'dowitcher',
+ 143: 'oystercatcher, oyster catcher',
+ 144: 'pelican',
+ 145: 'king penguin, Aptenodytes patagonica',
+ 146: 'albatross, mollymawk',
+ 147: 'grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus',
+ 148: 'killer whale, killer, orca, grampus, sea wolf, Orcinus orca',
+ 149: 'dugong, Dugong dugon',
+ 150: 'sea lion',
+ 151: 'Chihuahua',
+ 152: 'Japanese spaniel',
+ 153: 'Maltese dog, Maltese terrier, Maltese',
+ 154: 'Pekinese, Pekingese, Peke',
+ 155: 'Shih-Tzu',
+ 156: 'Blenheim spaniel',
+ 157: 'papillon',
+ 158: 'toy terrier',
+ 159: 'Rhodesian ridgeback',
+ 160: 'Afghan hound, Afghan',
+ 161: 'basset, basset hound',
+ 162: 'beagle',
+ 163: 'bloodhound, sleuthhound',
+ 164: 'bluetick',
+ 165: 'black-and-tan coonhound',
+ 166: 'Walker hound, Walker foxhound',
+ 167: 'English foxhound',
+ 168: 'redbone',
+ 169: 'borzoi, Russian wolfhound',
+ 170: 'Irish wolfhound',
+ 171: 'Italian greyhound',
+ 172: 'whippet',
+ 173: 'Ibizan hound, Ibizan Podenco',
+ 174: 'Norwegian elkhound, elkhound',
+ 175: 'otterhound, otter hound',
+ 176: 'Saluki, gazelle hound',
+ 177: 'Scottish deerhound, deerhound',
+ 178: 'Weimaraner',
+ 179: 'Staffordshire bullterrier, Staffordshire bull terrier',
+ 180: 'American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier',
+ 181: 'Bedlington terrier',
+ 182: 'Border terrier',
+ 183: 'Kerry blue terrier',
+ 184: 'Irish terrier',
+ 185: 'Norfolk terrier',
+ 186: 'Norwich terrier',
+ 187: 'Yorkshire terrier',
+ 188: 'wire-haired fox terrier',
+ 189: 'Lakeland terrier',
+ 190: 'Sealyham terrier, Sealyham',
+ 191: 'Airedale, Airedale terrier',
+ 192: 'cairn, cairn terrier',
+ 193: 'Australian terrier',
+ 194: 'Dandie Dinmont, Dandie Dinmont terrier',
+ 195: 'Boston bull, Boston terrier',
+ 196: 'miniature schnauzer',
+ 197: 'giant schnauzer',
+ 198: 'standard schnauzer',
+ 199: 'Scotch terrier, Scottish terrier, Scottie',
+ 200: 'Tibetan terrier, chrysanthemum dog',
+ 201: 'silky terrier, Sydney silky',
+ 202: 'soft-coated wheaten terrier',
+ 203: 'West Highland white terrier',
+ 204: 'Lhasa, Lhasa apso',
+ 205: 'flat-coated retriever',
+ 206: 'curly-coated retriever',
+ 207: 'golden retriever',
+ 208: 'Labrador retriever',
+ 209: 'Chesapeake Bay retriever',
+ 210: 'German short-haired pointer',
+ 211: 'vizsla, Hungarian pointer',
+ 212: 'English setter',
+ 213: 'Irish setter, red setter',
+ 214: 'Gordon setter',
+ 215: 'Brittany spaniel',
+ 216: 'clumber, clumber spaniel',
+ 217: 'English springer, English springer spaniel',
+ 218: 'Welsh springer spaniel',
+ 219: 'cocker spaniel, English cocker spaniel, cocker',
+ 220: 'Sussex spaniel',
+ 221: 'Irish water spaniel',
+ 222: 'kuvasz',
+ 223: 'schipperke',
+ 224: 'groenendael',
+ 225: 'malinois',
+ 226: 'briard',
+ 227: 'kelpie',
+ 228: 'komondor',
+ 229: 'Old English sheepdog, bobtail',
+ 230: 'Shetland sheepdog, Shetland sheep dog, Shetland',
+ 231: 'collie',
+ 232: 'Border collie',
+ 233: 'Bouvier des Flandres, Bouviers des Flandres',
+ 234: 'Rottweiler',
+ 235: 'German shepherd, German shepherd dog, German police dog, alsatian',
+ 236: 'Doberman, Doberman pinscher',
+ 237: 'miniature pinscher',
+ 238: 'Greater Swiss Mountain dog',
+ 239: 'Bernese mountain dog',
+ 240: 'Appenzeller',
+ 241: 'EntleBucher',
+ 242: 'boxer',
+ 243: 'bull mastiff',
+ 244: 'Tibetan mastiff',
+ 245: 'French bulldog',
+ 246: 'Great Dane',
+ 247: 'Saint Bernard, St Bernard',
+ 248: 'Eskimo dog, husky',
+ 249: 'malamute, malemute, Alaskan malamute',
+ 250: 'Siberian husky',
+ 251: 'dalmatian, coach dog, carriage dog',
+ 252: 'affenpinscher, monkey pinscher, monkey dog',
+ 253: 'basenji',
+ 254: 'pug, pug-dog',
+ 255: 'Leonberg',
+ 256: 'Newfoundland, Newfoundland dog',
+ 257: 'Great Pyrenees',
+ 258: 'Samoyed, Samoyede',
+ 259: 'Pomeranian',
+ 260: 'chow, chow chow',
+ 261: 'keeshond',
+ 262: 'Brabancon griffon',
+ 263: 'Pembroke, Pembroke Welsh corgi',
+ 264: 'Cardigan, Cardigan Welsh corgi',
+ 265: 'toy poodle',
+ 266: 'miniature poodle',
+ 267: 'standard poodle',
+ 268: 'Mexican hairless',
+ 269: 'timber wolf, grey wolf, gray wolf, Canis lupus',
+ 270: 'white wolf, Arctic wolf, Canis lupus tundrarum',
+ 271: 'red wolf, maned wolf, Canis rufus, Canis niger',
+ 272: 'coyote, prairie wolf, brush wolf, Canis latrans',
+ 273: 'dingo, warrigal, warragal, Canis dingo',
+ 274: 'dhole, Cuon alpinus',
+ 275: 'African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus',
+ 276: 'hyena, hyaena',
+ 277: 'red fox, Vulpes vulpes',
+ 278: 'kit fox, Vulpes macrotis',
+ 279: 'Arctic fox, white fox, Alopex lagopus',
+ 280: 'grey fox, gray fox, Urocyon cinereoargenteus',
+ 281: 'tabby, tabby cat',
+ 282: 'tiger cat',
+ 283: 'Persian cat',
+ 284: 'Siamese cat, Siamese',
+ 285: 'Egyptian cat',
+ 286: 'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor',
+ 287: 'lynx, catamount',
+ 288: 'leopard, Panthera pardus',
+ 289: 'snow leopard, ounce, Panthera uncia',
+ 290: 'jaguar, panther, Panthera onca, Felis onca',
+ 291: 'lion, king of beasts, Panthera leo',
+ 292: 'tiger, Panthera tigris',
+ 293: 'cheetah, chetah, Acinonyx jubatus',
+ 294: 'brown bear, bruin, Ursus arctos',
+ 295: 'American black bear, black bear, Ursus americanus, Euarctos americanus',
+ 296: 'ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus',
+ 297: 'sloth bear, Melursus ursinus, Ursus ursinus',
+ 298: 'mongoose',
+ 299: 'meerkat, mierkat',
+ 300: 'tiger beetle',
+ 301: 'ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle',
+ 302: 'ground beetle, carabid beetle',
+ 303: 'long-horned beetle, longicorn, longicorn beetle',
+ 304: 'leaf beetle, chrysomelid',
+ 305: 'dung beetle',
+ 306: 'rhinoceros beetle',
+ 307: 'weevil',
+ 308: 'fly',
+ 309: 'bee',
+ 310: 'ant, emmet, pismire',
+ 311: 'grasshopper, hopper',
+ 312: 'cricket',
+ 313: 'walking stick, walkingstick, stick insect',
+ 314: 'cockroach, roach',
+ 315: 'mantis, mantid',
+ 316: 'cicada, cicala',
+ 317: 'leafhopper',
+ 318: 'lacewing, lacewing fly',
+ 319: "dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
+ 320: 'damselfly',
+ 321: 'admiral',
+ 322: 'ringlet, ringlet butterfly',
+ 323: 'monarch, monarch butterfly, milkweed butterfly, Danaus plexippus',
+ 324: 'cabbage butterfly',
+ 325: 'sulphur butterfly, sulfur butterfly',
+ 326: 'lycaenid, lycaenid butterfly',
+ 327: 'starfish, sea star',
+ 328: 'sea urchin',
+ 329: 'sea cucumber, holothurian',
+ 330: 'wood rabbit, cottontail, cottontail rabbit',
+ 331: 'hare',
+ 332: 'Angora, Angora rabbit',
+ 333: 'hamster',
+ 334: 'porcupine, hedgehog',
+ 335: 'fox squirrel, eastern fox squirrel, Sciurus niger',
+ 336: 'marmot',
+ 337: 'beaver',
+ 338: 'guinea pig, Cavia cobaya',
+ 339: 'sorrel',
+ 340: 'zebra',
+ 341: 'hog, pig, grunter, squealer, Sus scrofa',
+ 342: 'wild boar, boar, Sus scrofa',
+ 343: 'warthog',
+ 344: 'hippopotamus, hippo, river horse, Hippopotamus amphibius',
+ 345: 'ox',
+ 346: 'water buffalo, water ox, Asiatic buffalo, Bubalus bubalis',
+ 347: 'bison',
+ 348: 'ram, tup',
+ 349: 'bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis',
+ 350: 'ibex, Capra ibex',
+ 351: 'hartebeest',
+ 352: 'impala, Aepyceros melampus',
+ 353: 'gazelle',
+ 354: 'Arabian camel, dromedary, Camelus dromedarius',
+ 355: 'llama',
+ 356: 'weasel',
+ 357: 'mink',
+ 358: 'polecat, fitch, foulmart, foumart, Mustela putorius',
+ 359: 'black-footed ferret, ferret, Mustela nigripes',
+ 360: 'otter',
+ 361: 'skunk, polecat, wood pussy',
+ 362: 'badger',
+ 363: 'armadillo',
+ 364: 'three-toed sloth, ai, Bradypus tridactylus',
+ 365: 'orangutan, orang, orangutang, Pongo pygmaeus',
+ 366: 'gorilla, Gorilla gorilla',
+ 367: 'chimpanzee, chimp, Pan troglodytes',
+ 368: 'gibbon, Hylobates lar',
+ 369: 'siamang, Hylobates syndactylus, Symphalangus syndactylus',
+ 370: 'guenon, guenon monkey',
+ 371: 'patas, hussar monkey, Erythrocebus patas',
+ 372: 'baboon',
+ 373: 'macaque',
+ 374: 'langur',
+ 375: 'colobus, colobus monkey',
+ 376: 'proboscis monkey, Nasalis larvatus',
+ 377: 'marmoset',
+ 378: 'capuchin, ringtail, Cebus capucinus',
+ 379: 'howler monkey, howler',
+ 380: 'titi, titi monkey',
+ 381: 'spider monkey, Ateles geoffroyi',
+ 382: 'squirrel monkey, Saimiri sciureus',
+ 383: 'Madagascar cat, ring-tailed lemur, Lemur catta',
+ 384: 'indri, indris, Indri indri, Indri brevicaudatus',
+ 385: 'Indian elephant, Elephas maximus',
+ 386: 'African elephant, Loxodonta africana',
+ 387: 'lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens',
+ 388: 'giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca',
+ 389: 'barracouta, snoek',
+ 390: 'eel',
+ 391: 'coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch',
+ 392: 'rock beauty, Holocanthus tricolor',
+ 393: 'anemone fish',
+ 394: 'sturgeon',
+ 395: 'gar, garfish, garpike, billfish, Lepisosteus osseus',
+ 396: 'lionfish',
+ 397: 'puffer, pufferfish, blowfish, globefish',
+ 398: 'abacus',
+ 399: 'abaya',
+ 400: "academic gown, academic robe, judge's robe",
+ 401: 'accordion, piano accordion, squeeze box',
+ 402: 'acoustic guitar',
+ 403: 'aircraft carrier, carrier, flattop, attack aircraft carrier',
+ 404: 'airliner',
+ 405: 'airship, dirigible',
+ 406: 'altar',
+ 407: 'ambulance',
+ 408: 'amphibian, amphibious vehicle',
+ 409: 'analog clock',
+ 410: 'apiary, bee house',
+ 411: 'apron',
+ 412: 'ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin',
+ 413: 'assault rifle, assault gun',
+ 414: 'backpack, back pack, knapsack, packsack, rucksack, haversack',
+ 415: 'bakery, bakeshop, bakehouse',
+ 416: 'balance beam, beam',
+ 417: 'balloon',
+ 418: 'ballpoint, ballpoint pen, ballpen, Biro',
+ 419: 'Band Aid',
+ 420: 'banjo',
+ 421: 'bannister, banister, balustrade, balusters, handrail',
+ 422: 'barbell',
+ 423: 'barber chair',
+ 424: 'barbershop',
+ 425: 'barn',
+ 426: 'barometer',
+ 427: 'barrel, cask',
+ 428: 'barrow, garden cart, lawn cart, wheelbarrow',
+ 429: 'baseball',
+ 430: 'basketball',
+ 431: 'bassinet',
+ 432: 'bassoon',
+ 433: 'bathing cap, swimming cap',
+ 434: 'bath towel',
+ 435: 'bathtub, bathing tub, bath, tub',
+ 436: 'beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon',
+ 437: 'beacon, lighthouse, beacon light, pharos',
+ 438: 'beaker',
+ 439: 'bearskin, busby, shako',
+ 440: 'beer bottle',
+ 441: 'beer glass',
+ 442: 'bell cote, bell cot',
+ 443: 'bib',
+ 444: 'bicycle-built-for-two, tandem bicycle, tandem',
+ 445: 'bikini, two-piece',
+ 446: 'binder, ring-binder',
+ 447: 'binoculars, field glasses, opera glasses',
+ 448: 'birdhouse',
+ 449: 'boathouse',
+ 450: 'bobsled, bobsleigh, bob',
+ 451: 'bolo tie, bolo, bola tie, bola',
+ 452: 'bonnet, poke bonnet',
+ 453: 'bookcase',
+ 454: 'bookshop, bookstore, bookstall',
+ 455: 'bottlecap',
+ 456: 'bow',
+ 457: 'bow tie, bow-tie, bowtie',
+ 458: 'brass, memorial tablet, plaque',
+ 459: 'brassiere, bra, bandeau',
+ 460: 'breakwater, groin, groyne, mole, bulwark, seawall, jetty',
+ 461: 'breastplate, aegis, egis',
+ 462: 'broom',
+ 463: 'bucket, pail',
+ 464: 'buckle',
+ 465: 'bulletproof vest',
+ 466: 'bullet train, bullet',
+ 467: 'butcher shop, meat market',
+ 468: 'cab, hack, taxi, taxicab',
+ 469: 'caldron, cauldron',
+ 470: 'candle, taper, wax light',
+ 471: 'cannon',
+ 472: 'canoe',
+ 473: 'can opener, tin opener',
+ 474: 'cardigan',
+ 475: 'car mirror',
+ 476: 'carousel, carrousel, merry-go-round, roundabout, whirligig',
+ 477: "carpenter's kit, tool kit",
+ 478: 'carton',
+ 479: 'car wheel',
+ 480: 'cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM',
+ 481: 'cassette',
+ 482: 'cassette player',
+ 483: 'castle',
+ 484: 'catamaran',
+ 485: 'CD player',
+ 486: 'cello, violoncello',
+ 487: 'cellular telephone, cellular phone, cellphone, cell, mobile phone',
+ 488: 'chain',
+ 489: 'chainlink fence',
+ 490: 'chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour',
+ 491: 'chain saw, chainsaw',
+ 492: 'chest',
+ 493: 'chiffonier, commode',
+ 494: 'chime, bell, gong',
+ 495: 'china cabinet, china closet',
+ 496: 'Christmas stocking',
+ 497: 'church, church building',
+ 498: 'cinema, movie theater, movie theatre, movie house, picture palace',
+ 499: 'cleaver, meat cleaver, chopper',
+ 500: 'cliff dwelling',
+ 501: 'cloak',
+ 502: 'clog, geta, patten, sabot',
+ 503: 'cocktail shaker',
+ 504: 'coffee mug',
+ 505: 'coffeepot',
+ 506: 'coil, spiral, volute, whorl, helix',
+ 507: 'combination lock',
+ 508: 'computer keyboard, keypad',
+ 509: 'confectionery, confectionary, candy store',
+ 510: 'container ship, containership, container vessel',
+ 511: 'convertible',
+ 512: 'corkscrew, bottle screw',
+ 513: 'cornet, horn, trumpet, trump',
+ 514: 'cowboy boot',
+ 515: 'cowboy hat, ten-gallon hat',
+ 516: 'cradle',
+ 517: 'crane',
+ 518: 'crash helmet',
+ 519: 'crate',
+ 520: 'crib, cot',
+ 521: 'Crock Pot',
+ 522: 'croquet ball',
+ 523: 'crutch',
+ 524: 'cuirass',
+ 525: 'dam, dike, dyke',
+ 526: 'desk',
+ 527: 'desktop computer',
+ 528: 'dial telephone, dial phone',
+ 529: 'diaper, nappy, napkin',
+ 530: 'digital clock',
+ 531: 'digital watch',
+ 532: 'dining table, board',
+ 533: 'dishrag, dishcloth',
+ 534: 'dishwasher, dish washer, dishwashing machine',
+ 535: 'disk brake, disc brake',
+ 536: 'dock, dockage, docking facility',
+ 537: 'dogsled, dog sled, dog sleigh',
+ 538: 'dome',
+ 539: 'doormat, welcome mat',
+ 540: 'drilling platform, offshore rig',
+ 541: 'drum, membranophone, tympan',
+ 542: 'drumstick',
+ 543: 'dumbbell',
+ 544: 'Dutch oven',
+ 545: 'electric fan, blower',
+ 546: 'electric guitar',
+ 547: 'electric locomotive',
+ 548: 'entertainment center',
+ 549: 'envelope',
+ 550: 'espresso maker',
+ 551: 'face powder',
+ 552: 'feather boa, boa',
+ 553: 'file, file cabinet, filing cabinet',
+ 554: 'fireboat',
+ 555: 'fire engine, fire truck',
+ 556: 'fire screen, fireguard',
+ 557: 'flagpole, flagstaff',
+ 558: 'flute, transverse flute',
+ 559: 'folding chair',
+ 560: 'football helmet',
+ 561: 'forklift',
+ 562: 'fountain',
+ 563: 'fountain pen',
+ 564: 'four-poster',
+ 565: 'freight car',
+ 566: 'French horn, horn',
+ 567: 'frying pan, frypan, skillet',
+ 568: 'fur coat',
+ 569: 'garbage truck, dustcart',
+ 570: 'gasmask, respirator, gas helmet',
+ 571: 'gas pump, gasoline pump, petrol pump, island dispenser',
+ 572: 'goblet',
+ 573: 'go-kart',
+ 574: 'golf ball',
+ 575: 'golfcart, golf cart',
+ 576: 'gondola',
+ 577: 'gong, tam-tam',
+ 578: 'gown',
+ 579: 'grand piano, grand',
+ 580: 'greenhouse, nursery, glasshouse',
+ 581: 'grille, radiator grille',
+ 582: 'grocery store, grocery, food market, market',
+ 583: 'guillotine',
+ 584: 'hair slide',
+ 585: 'hair spray',
+ 586: 'half track',
+ 587: 'hammer',
+ 588: 'hamper',
+ 589: 'hand blower, blow dryer, blow drier, hair dryer, hair drier',
+ 590: 'hand-held computer, hand-held microcomputer',
+ 591: 'handkerchief, hankie, hanky, hankey',
+ 592: 'hard disc, hard disk, fixed disk',
+ 593: 'harmonica, mouth organ, harp, mouth harp',
+ 594: 'harp',
+ 595: 'harvester, reaper',
+ 596: 'hatchet',
+ 597: 'holster',
+ 598: 'home theater, home theatre',
+ 599: 'honeycomb',
+ 600: 'hook, claw',
+ 601: 'hoopskirt, crinoline',
+ 602: 'horizontal bar, high bar',
+ 603: 'horse cart, horse-cart',
+ 604: 'hourglass',
+ 605: 'iPod',
+ 606: 'iron, smoothing iron',
+ 607: "jack-o'-lantern",
+ 608: 'jean, blue jean, denim',
+ 609: 'jeep, landrover',
+ 610: 'jersey, T-shirt, tee shirt',
+ 611: 'jigsaw puzzle',
+ 612: 'jinrikisha, ricksha, rickshaw',
+ 613: 'joystick',
+ 614: 'kimono',
+ 615: 'knee pad',
+ 616: 'knot',
+ 617: 'lab coat, laboratory coat',
+ 618: 'ladle',
+ 619: 'lampshade, lamp shade',
+ 620: 'laptop, laptop computer',
+ 621: 'lawn mower, mower',
+ 622: 'lens cap, lens cover',
+ 623: 'letter opener, paper knife, paperknife',
+ 624: 'library',
+ 625: 'lifeboat',
+ 626: 'lighter, light, igniter, ignitor',
+ 627: 'limousine, limo',
+ 628: 'liner, ocean liner',
+ 629: 'lipstick, lip rouge',
+ 630: 'Loafer',
+ 631: 'lotion',
+ 632: 'loudspeaker, speaker, speaker unit, loudspeaker system, speaker system',
+ 633: "loupe, jeweler's loupe",
+ 634: 'lumbermill, sawmill',
+ 635: 'magnetic compass',
+ 636: 'mailbag, postbag',
+ 637: 'mailbox, letter box',
+ 638: 'maillot',
+ 639: 'maillot, tank suit',
+ 640: 'manhole cover',
+ 641: 'maraca',
+ 642: 'marimba, xylophone',
+ 643: 'mask',
+ 644: 'matchstick',
+ 645: 'maypole',
+ 646: 'maze, labyrinth',
+ 647: 'measuring cup',
+ 648: 'medicine chest, medicine cabinet',
+ 649: 'megalith, megalithic structure',
+ 650: 'microphone, mike',
+ 651: 'microwave, microwave oven',
+ 652: 'military uniform',
+ 653: 'milk can',
+ 654: 'minibus',
+ 655: 'miniskirt, mini',
+ 656: 'minivan',
+ 657: 'missile',
+ 658: 'mitten',
+ 659: 'mixing bowl',
+ 660: 'mobile home, manufactured home',
+ 661: 'Model T',
+ 662: 'modem',
+ 663: 'monastery',
+ 664: 'monitor',
+ 665: 'moped',
+ 666: 'mortar',
+ 667: 'mortarboard',
+ 668: 'mosque',
+ 669: 'mosquito net',
+ 670: 'motor scooter, scooter',
+ 671: 'mountain bike, all-terrain bike, off-roader',
+ 672: 'mountain tent',
+ 673: 'mouse, computer mouse',
+ 674: 'mousetrap',
+ 675: 'moving van',
+ 676: 'muzzle',
+ 677: 'nail',
+ 678: 'neck brace',
+ 679: 'necklace',
+ 680: 'nipple',
+ 681: 'notebook, notebook computer',
+ 682: 'obelisk',
+ 683: 'oboe, hautboy, hautbois',
+ 684: 'ocarina, sweet potato',
+ 685: 'odometer, hodometer, mileometer, milometer',
+ 686: 'oil filter',
+ 687: 'organ, pipe organ',
+ 688: 'oscilloscope, scope, cathode-ray oscilloscope, CRO',
+ 689: 'overskirt',
+ 690: 'oxcart',
+ 691: 'oxygen mask',
+ 692: 'packet',
+ 693: 'paddle, boat paddle',
+ 694: 'paddlewheel, paddle wheel',
+ 695: 'padlock',
+ 696: 'paintbrush',
+ 697: "pajama, pyjama, pj's, jammies",
+ 698: 'palace',
+ 699: 'panpipe, pandean pipe, syrinx',
+ 700: 'paper towel',
+ 701: 'parachute, chute',
+ 702: 'parallel bars, bars',
+ 703: 'park bench',
+ 704: 'parking meter',
+ 705: 'passenger car, coach, carriage',
+ 706: 'patio, terrace',
+ 707: 'pay-phone, pay-station',
+ 708: 'pedestal, plinth, footstall',
+ 709: 'pencil box, pencil case',
+ 710: 'pencil sharpener',
+ 711: 'perfume, essence',
+ 712: 'Petri dish',
+ 713: 'photocopier',
+ 714: 'pick, plectrum, plectron',
+ 715: 'pickelhaube',
+ 716: 'picket fence, paling',
+ 717: 'pickup, pickup truck',
+ 718: 'pier',
+ 719: 'piggy bank, penny bank',
+ 720: 'pill bottle',
+ 721: 'pillow',
+ 722: 'ping-pong ball',
+ 723: 'pinwheel',
+ 724: 'pirate, pirate ship',
+ 725: 'pitcher, ewer',
+ 726: "plane, carpenter's plane, woodworking plane",
+ 727: 'planetarium',
+ 728: 'plastic bag',
+ 729: 'plate rack',
+ 730: 'plow, plough',
+ 731: "plunger, plumber's helper",
+ 732: 'Polaroid camera, Polaroid Land camera',
+ 733: 'pole',
+ 734: 'police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria',
+ 735: 'poncho',
+ 736: 'pool table, billiard table, snooker table',
+ 737: 'pop bottle, soda bottle',
+ 738: 'pot, flowerpot',
+ 739: "potter's wheel",
+ 740: 'power drill',
+ 741: 'prayer rug, prayer mat',
+ 742: 'printer',
+ 743: 'prison, prison house',
+ 744: 'projectile, missile',
+ 745: 'projector',
+ 746: 'puck, hockey puck',
+ 747: 'punching bag, punch bag, punching ball, punchball',
+ 748: 'purse',
+ 749: 'quill, quill pen',
+ 750: 'quilt, comforter, comfort, puff',
+ 751: 'racer, race car, racing car',
+ 752: 'racket, racquet',
+ 753: 'radiator',
+ 754: 'radio, wireless',
+ 755: 'radio telescope, radio reflector',
+ 756: 'rain barrel',
+ 757: 'recreational vehicle, RV, R.V.',
+ 758: 'reel',
+ 759: 'reflex camera',
+ 760: 'refrigerator, icebox',
+ 761: 'remote control, remote',
+ 762: 'restaurant, eating house, eating place, eatery',
+ 763: 'revolver, six-gun, six-shooter',
+ 764: 'rifle',
+ 765: 'rocking chair, rocker',
+ 766: 'rotisserie',
+ 767: 'rubber eraser, rubber, pencil eraser',
+ 768: 'rugby ball',
+ 769: 'rule, ruler',
+ 770: 'running shoe',
+ 771: 'safe',
+ 772: 'safety pin',
+ 773: 'saltshaker, salt shaker',
+ 774: 'sandal',
+ 775: 'sarong',
+ 776: 'sax, saxophone',
+ 777: 'scabbard',
+ 778: 'scale, weighing machine',
+ 779: 'school bus',
+ 780: 'schooner',
+ 781: 'scoreboard',
+ 782: 'screen, CRT screen',
+ 783: 'screw',
+ 784: 'screwdriver',
+ 785: 'seat belt, seatbelt',
+ 786: 'sewing machine',
+ 787: 'shield, buckler',
+ 788: 'shoe shop, shoe-shop, shoe store',
+ 789: 'shoji',
+ 790: 'shopping basket',
+ 791: 'shopping cart',
+ 792: 'shovel',
+ 793: 'shower cap',
+ 794: 'shower curtain',
+ 795: 'ski',
+ 796: 'ski mask',
+ 797: 'sleeping bag',
+ 798: 'slide rule, slipstick',
+ 799: 'sliding door',
+ 800: 'slot, one-armed bandit',
+ 801: 'snorkel',
+ 802: 'snowmobile',
+ 803: 'snowplow, snowplough',
+ 804: 'soap dispenser',
+ 805: 'soccer ball',
+ 806: 'sock',
+ 807: 'solar dish, solar collector, solar furnace',
+ 808: 'sombrero',
+ 809: 'soup bowl',
+ 810: 'space bar',
+ 811: 'space heater',
+ 812: 'space shuttle',
+ 813: 'spatula',
+ 814: 'speedboat',
+ 815: "spider web, spider's web",
+ 816: 'spindle',
+ 817: 'sports car, sport car',
+ 818: 'spotlight, spot',
+ 819: 'stage',
+ 820: 'steam locomotive',
+ 821: 'steel arch bridge',
+ 822: 'steel drum',
+ 823: 'stethoscope',
+ 824: 'stole',
+ 825: 'stone wall',
+ 826: 'stopwatch, stop watch',
+ 827: 'stove',
+ 828: 'strainer',
+ 829: 'streetcar, tram, tramcar, trolley, trolley car',
+ 830: 'stretcher',
+ 831: 'studio couch, day bed',
+ 832: 'stupa, tope',
+ 833: 'submarine, pigboat, sub, U-boat',
+ 834: 'suit, suit of clothes',
+ 835: 'sundial',
+ 836: 'sunglass',
+ 837: 'sunglasses, dark glasses, shades',
+ 838: 'sunscreen, sunblock, sun blocker',
+ 839: 'suspension bridge',
+ 840: 'swab, swob, mop',
+ 841: 'sweatshirt',
+ 842: 'swimming trunks, bathing trunks',
+ 843: 'swing',
+ 844: 'switch, electric switch, electrical switch',
+ 845: 'syringe',
+ 846: 'table lamp',
+ 847: 'tank, army tank, armored combat vehicle, armoured combat vehicle',
+ 848: 'tape player',
+ 849: 'teapot',
+ 850: 'teddy, teddy bear',
+ 851: 'television, television system',
+ 852: 'tennis ball',
+ 853: 'thatch, thatched roof',
+ 854: 'theater curtain, theatre curtain',
+ 855: 'thimble',
+ 856: 'thresher, thrasher, threshing machine',
+ 857: 'throne',
+ 858: 'tile roof',
+ 859: 'toaster',
+ 860: 'tobacco shop, tobacconist shop, tobacconist',
+ 861: 'toilet seat',
+ 862: 'torch',
+ 863: 'totem pole',
+ 864: 'tow truck, tow car, wrecker',
+ 865: 'toyshop',
+ 866: 'tractor',
+ 867: 'trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi',
+ 868: 'tray',
+ 869: 'trench coat',
+ 870: 'tricycle, trike, velocipede',
+ 871: 'trimaran',
+ 872: 'tripod',
+ 873: 'triumphal arch',
+ 874: 'trolleybus, trolley coach, trackless trolley',
+ 875: 'trombone',
+ 876: 'tub, vat',
+ 877: 'turnstile',
+ 878: 'typewriter keyboard',
+ 879: 'umbrella',
+ 880: 'unicycle, monocycle',
+ 881: 'upright, upright piano',
+ 882: 'vacuum, vacuum cleaner',
+ 883: 'vase',
+ 884: 'vault',
+ 885: 'velvet',
+ 886: 'vending machine',
+ 887: 'vestment',
+ 888: 'viaduct',
+ 889: 'violin, fiddle',
+ 890: 'volleyball',
+ 891: 'waffle iron',
+ 892: 'wall clock',
+ 893: 'wallet, billfold, notecase, pocketbook',
+ 894: 'wardrobe, closet, press',
+ 895: 'warplane, military plane',
+ 896: 'washbasin, handbasin, washbowl, lavabo, wash-hand basin',
+ 897: 'washer, automatic washer, washing machine',
+ 898: 'water bottle',
+ 899: 'water jug',
+ 900: 'water tower',
+ 901: 'whiskey jug',
+ 902: 'whistle',
+ 903: 'wig',
+ 904: 'window screen',
+ 905: 'window shade',
+ 906: 'Windsor tie',
+ 907: 'wine bottle',
+ 908: 'wing',
+ 909: 'wok',
+ 910: 'wooden spoon',
+ 911: 'wool, woolen, woollen',
+ 912: 'worm fence, snake fence, snake-rail fence, Virginia fence',
+ 913: 'wreck',
+ 914: 'yawl',
+ 915: 'yurt',
+ 916: 'web site, website, internet site, site',
+ 917: 'comic book',
+ 918: 'crossword puzzle, crossword',
+ 919: 'street sign',
+ 920: 'traffic light, traffic signal, stoplight',
+ 921: 'book jacket, dust cover, dust jacket, dust wrapper',
+ 922: 'menu',
+ 923: 'plate',
+ 924: 'guacamole',
+ 925: 'consomme',
+ 926: 'hot pot, hotpot',
+ 927: 'trifle',
+ 928: 'ice cream, icecream',
+ 929: 'ice lolly, lolly, lollipop, popsicle',
+ 930: 'French loaf',
+ 931: 'bagel, beigel',
+ 932: 'pretzel',
+ 933: 'cheeseburger',
+ 934: 'hotdog, hot dog, red hot',
+ 935: 'mashed potato',
+ 936: 'head cabbage',
+ 937: 'broccoli',
+ 938: 'cauliflower',
+ 939: 'zucchini, courgette',
+ 940: 'spaghetti squash',
+ 941: 'acorn squash',
+ 942: 'butternut squash',
+ 943: 'cucumber, cuke',
+ 944: 'artichoke, globe artichoke',
+ 945: 'bell pepper',
+ 946: 'cardoon',
+ 947: 'mushroom',
+ 948: 'Granny Smith',
+ 949: 'strawberry',
+ 950: 'orange',
+ 951: 'lemon',
+ 952: 'fig',
+ 953: 'pineapple, ananas',
+ 954: 'banana',
+ 955: 'jackfruit, jak, jack',
+ 956: 'custard apple',
+ 957: 'pomegranate',
+ 958: 'hay',
+ 959: 'carbonara',
+ 960: 'chocolate sauce, chocolate syrup',
+ 961: 'dough',
+ 962: 'meat loaf, meatloaf',
+ 963: 'pizza, pizza pie',
+ 964: 'potpie',
+ 965: 'burrito',
+ 966: 'red wine',
+ 967: 'espresso',
+ 968: 'cup',
+ 969: 'eggnog',
+ 970: 'alp',
+ 971: 'bubble',
+ 972: 'cliff, drop, drop-off',
+ 973: 'coral reef',
+ 974: 'geyser',
+ 975: 'lakeside, lakeshore',
+ 976: 'promontory, headland, head, foreland',
+ 977: 'sandbar, sand bar',
+ 978: 'seashore, coast, seacoast, sea-coast',
+ 979: 'valley, vale',
+ 980: 'volcano',
+ 981: 'ballplayer, baseball player',
+ 982: 'groom, bridegroom',
+ 983: 'scuba diver',
+ 984: 'rapeseed',
+ 985: 'daisy',
+ 986: "yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum",
+ 987: 'corn',
+ 988: 'acorn',
+ 989: 'hip, rose hip, rosehip',
+ 990: 'buckeye, horse chestnut, conker',
+ 991: 'coral fungus',
+ 992: 'agaric',
+ 993: 'gyromitra',
+ 994: 'stinkhorn, carrion fungus',
+ 995: 'earthstar',
+ 996: 'hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa',
+ 997: 'bolete',
+ 998: 'ear, spike, capitulum',
+ 999: 'toilet tissue, toilet paper, bathroom tissue'}
\ No newline at end of file
diff --git a/rknn-toolkit-lite2/examples/dynamic_shape/test.py b/rknn-toolkit-lite2/examples/dynamic_shape/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..62fa0e5b5bb019c863e1bf14d7cb9dfa48d4fa65
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/dynamic_shape/test.py
@@ -0,0 +1,135 @@
+import cv2
+import numpy as np
+import platform
+from synset_label import labels
+from rknnlite.api import RKNNLite
+
+# decice tree for RK356x/RK3576/RK3588
+DEVICE_COMPATIBLE_NODE = '/proc/device-tree/compatible'
+
+def get_host():
+ # get platform and device type
+ system = platform.system()
+ machine = platform.machine()
+ os_machine = system + '-' + machine
+ if os_machine == 'Linux-aarch64':
+ try:
+ with open(DEVICE_COMPATIBLE_NODE) as f:
+ device_compatible_str = f.read()
+ if 'rk3588' in device_compatible_str:
+ host = 'RK3588'
+ elif 'rk3562' in device_compatible_str:
+ host = 'RK3562'
+ elif 'rk3576' in device_compatible_str:
+ host = 'RK3576'
+ else:
+ host = 'RK3566_RK3568'
+ except IOError:
+ print('Read device node {} failed.'.format(DEVICE_COMPATIBLE_NODE))
+ exit(-1)
+ else:
+ host = os_machine
+ return host
+
+INPUT_SIZE = 224
+
+RK3566_RK3568_RKNN_MODEL = 'mobilenet_v2_for_rk3566_rk3568.rknn'
+RK3588_RKNN_MODEL = 'mobilenet_v2_for_rk3588.rknn'
+RK3562_RKNN_MODEL = 'mobilenet_v2_for_rk3562.rknn'
+RK3576_RKNN_MODEL = 'mobilenet_v2_for_rk3576.rknn'
+
+
+def show_top5(result):
+ output = result[0].reshape(-1)
+ # Get the indices of the top 5 largest values
+ output_sorted_indices = np.argsort(output)[::-1][:5]
+ top5_str = '-----TOP 5-----\n'
+ for i, index in enumerate(output_sorted_indices):
+ value = output[index]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(
+ index, value, labels[index])
+ else:
+ topi = '-1: 0.0\n'
+ top5_str += topi
+ print(top5_str)
+
+
+if __name__ == '__main__':
+
+ # Get device information
+ host_name = get_host()
+ if host_name == 'RK3566_RK3568':
+ rknn_model = RK3566_RK3568_RKNN_MODEL
+ elif host_name == 'RK3562':
+ rknn_model = RK3562_RKNN_MODEL
+ elif host_name == 'RK3576':
+ rknn_model = RK3576_RKNN_MODEL
+ elif host_name == 'RK3588':
+ rknn_model = RK3588_RKNN_MODEL
+ else:
+ print("This demo cannot run on the current platform: {}".format(host_name))
+ exit(-1)
+
+ dynamic_input = [
+ [[1, 3, 192, 192]],
+ [[1, 3, 256, 256]],
+ [[1, 3, 160, 160]],
+ [[1, 3, 224, 224]]
+ ]
+
+ rknn_lite = RKNNLite()
+
+ # Load RKNN model
+ print('--> Load RKNN model')
+ ret = rknn_lite.load_rknn(rknn_model)
+ if ret != 0:
+ print('Load RKNN model failed')
+ exit(ret)
+ print('done')
+
+ img = cv2.imread('./dog_224x224.jpg')
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ # Run on RK356x / RK3576 / RK3588 with Debian OS, do not need specify target.
+ if host_name in ['RK3576', 'RK3588']:
+ # For RK3576 / RK3588, specify which NPU core the model runs on through the core_mask parameter.
+ ret = rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_0)
+ else:
+ ret = rknn_lite.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ print('model: mobilenet_v2\n')
+ print('input shape: 1,3,224,224')
+ real_img = cv2.resize(img, (224, 224))
+ real_img = np.expand_dims(real_img, 0)
+ real_img = np.transpose(real_img, (0, 3, 1, 2))
+ outputs = rknn_lite.inference(inputs=[real_img], data_format=['nchw'])
+ # Show the classification results
+ show_top5(outputs)
+
+ print('input shape: 1,3,160,160')
+ real_img = cv2.resize(img, (160, 160))
+ real_img = np.expand_dims(real_img, 0)
+ real_img = np.transpose(real_img, (0, 3, 1, 2))
+ outputs = rknn_lite.inference(inputs=[real_img], data_format=['nchw'])
+ # Show the classification results
+ show_top5(outputs)
+
+ print('input shape: 1,3,256,256')
+ real_img = cv2.resize(img, (256, 256))
+ real_img = np.expand_dims(real_img, 0)
+ real_img = np.transpose(real_img, (0, 3, 1, 2))
+ outputs = rknn_lite.inference(inputs=[real_img], data_format=['nchw'])
+ # Show the classification results
+ show_top5(outputs)
+
+ print('done')
+
+ rknn_lite.release()
diff --git a/rknn-toolkit-lite2/examples/resnet18/README.md b/rknn-toolkit-lite2/examples/resnet18/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2af7d5edd4cc12907edf6b1fe88bd2a5d2aaeee8
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/README.md
@@ -0,0 +1,34 @@
+# Example of resnet18
+
+## Model Source
+
+### Original model
+The models used in this example come from the torchvision project:
+https://github.com/pytorch/vision/tree/main/torchvision/models
+
+### Convert to RKNN model
+Please refer to the example in the RKNN Toolkit2 project to generate the RKNN model:
+https://github.com/rockchip-linux/rknn-toolkit2/tree/master/examples/pytorch/resnet18
+
+## Script Usage
+
+Usage
+
+```
+python test.py
+```
+
+## Expected results
+
+This example will print the TOP5 labels and corresponding scores of the test image classification results. For example, the inference results of this example are as follows:
+```
+-----TOP 5-----
+[812] score:0.999680 class:"space shuttle"
+[404] score:0.000249 class:"airliner"
+[657] score:0.000013 class:"missile"
+[466] score:0.000009 class:"bullet train, bullet"
+[895] score:0.000008 class:"warplane, military plane"
+```
+
+1. The label index with the highest score is 812, the corresponding label is `space shuttle`.
+2. Different platforms, different versions of tools and drivers may have slightly different results.
diff --git a/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3562.rknn b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3562.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..7b806bd6f6e0f8d0e3ce761207307abde3239ab8
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3562.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97b6fe0bf2e9879001831b1cd32bdeda6868e8079304c84c49b2463c8046e3bd
+size 11849493
diff --git a/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3566_rk3568.rknn b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3566_rk3568.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..3c4eb95c83ef15c8e835cb35434180c90b134261
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3566_rk3568.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a37ea8a4a49278db0d47db5817ccb9f03127d69edfddf709f7998d05b377f03
+size 11834645
diff --git a/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3576.rknn b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3576.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..a7546e7706187e934a17817e90cd028b75efe5b0
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3576.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e32069165d149da30810a2436837fcc3b50a8582d0d420877bfbfb26e787780d
+size 11986965
diff --git a/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3588.rknn b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3588.rknn
new file mode 100644
index 0000000000000000000000000000000000000000..729c56c3de07d9177e74682c3d0c5ae1cbb91cbb
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/resnet18_for_rk3588.rknn
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9546823b3fc80ef6ba506ebee42aa16a5b8e8fe3fa8e13139552a83737538021
+size 11996181
diff --git a/rknn-toolkit-lite2/examples/resnet18/space_shuttle_224.jpg b/rknn-toolkit-lite2/examples/resnet18/space_shuttle_224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..412a855c379648d80d5b4267ba1da58188cdee1c
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/space_shuttle_224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a827cc9060d15cd34b1b5ac512f4d6d8366416a5874a2075951991cbacef78d4
+size 23472
diff --git a/rknn-toolkit-lite2/examples/resnet18/synset_label.py b/rknn-toolkit-lite2/examples/resnet18/synset_label.py
new file mode 100644
index 0000000000000000000000000000000000000000..b53fbf603e968333b3e101d8cbf4267a12b3ab5b
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/synset_label.py
@@ -0,0 +1,1003 @@
+# the labels come from synset.txt, download link: https://s3.amazonaws.com/onnx-model-zoo/synset.txt
+
+labels = \
+{0: 'tench, Tinca tinca',
+ 1: 'goldfish, Carassius auratus',
+ 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias',
+ 3: 'tiger shark, Galeocerdo cuvieri',
+ 4: 'hammerhead, hammerhead shark',
+ 5: 'electric ray, crampfish, numbfish, torpedo',
+ 6: 'stingray',
+ 7: 'cock',
+ 8: 'hen',
+ 9: 'ostrich, Struthio camelus',
+ 10: 'brambling, Fringilla montifringilla',
+ 11: 'goldfinch, Carduelis carduelis',
+ 12: 'house finch, linnet, Carpodacus mexicanus',
+ 13: 'junco, snowbird',
+ 14: 'indigo bunting, indigo finch, indigo bird, Passerina cyanea',
+ 15: 'robin, American robin, Turdus migratorius',
+ 16: 'bulbul',
+ 17: 'jay',
+ 18: 'magpie',
+ 19: 'chickadee',
+ 20: 'water ouzel, dipper',
+ 21: 'kite',
+ 22: 'bald eagle, American eagle, Haliaeetus leucocephalus',
+ 23: 'vulture',
+ 24: 'great grey owl, great gray owl, Strix nebulosa',
+ 25: 'European fire salamander, Salamandra salamandra',
+ 26: 'common newt, Triturus vulgaris',
+ 27: 'eft',
+ 28: 'spotted salamander, Ambystoma maculatum',
+ 29: 'axolotl, mud puppy, Ambystoma mexicanum',
+ 30: 'bullfrog, Rana catesbeiana',
+ 31: 'tree frog, tree-frog',
+ 32: 'tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui',
+ 33: 'loggerhead, loggerhead turtle, Caretta caretta',
+ 34: 'leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea',
+ 35: 'mud turtle',
+ 36: 'terrapin',
+ 37: 'box turtle, box tortoise',
+ 38: 'banded gecko',
+ 39: 'common iguana, iguana, Iguana iguana',
+ 40: 'American chameleon, anole, Anolis carolinensis',
+ 41: 'whiptail, whiptail lizard',
+ 42: 'agama',
+ 43: 'frilled lizard, Chlamydosaurus kingi',
+ 44: 'alligator lizard',
+ 45: 'Gila monster, Heloderma suspectum',
+ 46: 'green lizard, Lacerta viridis',
+ 47: 'African chameleon, Chamaeleo chamaeleon',
+ 48: 'Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis',
+ 49: 'African crocodile, Nile crocodile, Crocodylus niloticus',
+ 50: 'American alligator, Alligator mississipiensis',
+ 51: 'triceratops',
+ 52: 'thunder snake, worm snake, Carphophis amoenus',
+ 53: 'ringneck snake, ring-necked snake, ring snake',
+ 54: 'hognose snake, puff adder, sand viper',
+ 55: 'green snake, grass snake',
+ 56: 'king snake, kingsnake',
+ 57: 'garter snake, grass snake',
+ 58: 'water snake',
+ 59: 'vine snake',
+ 60: 'night snake, Hypsiglena torquata',
+ 61: 'boa constrictor, Constrictor constrictor',
+ 62: 'rock python, rock snake, Python sebae',
+ 63: 'Indian cobra, Naja naja',
+ 64: 'green mamba',
+ 65: 'sea snake',
+ 66: 'horned viper, cerastes, sand viper, horned asp, Cerastes cornutus',
+ 67: 'diamondback, diamondback rattlesnake, Crotalus adamanteus',
+ 68: 'sidewinder, horned rattlesnake, Crotalus cerastes',
+ 69: 'trilobite',
+ 70: 'harvestman, daddy longlegs, Phalangium opilio',
+ 71: 'scorpion',
+ 72: 'black and gold garden spider, Argiope aurantia',
+ 73: 'barn spider, Araneus cavaticus',
+ 74: 'garden spider, Aranea diademata',
+ 75: 'black widow, Latrodectus mactans',
+ 76: 'tarantula',
+ 77: 'wolf spider, hunting spider',
+ 78: 'tick',
+ 79: 'centipede',
+ 80: 'black grouse',
+ 81: 'ptarmigan',
+ 82: 'ruffed grouse, partridge, Bonasa umbellus',
+ 83: 'prairie chicken, prairie grouse, prairie fowl',
+ 84: 'peacock',
+ 85: 'quail',
+ 86: 'partridge',
+ 87: 'African grey, African gray, Psittacus erithacus',
+ 88: 'macaw',
+ 89: 'sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita',
+ 90: 'lorikeet',
+ 91: 'coucal',
+ 92: 'bee eater',
+ 93: 'hornbill',
+ 94: 'hummingbird',
+ 95: 'jacamar',
+ 96: 'toucan',
+ 97: 'drake',
+ 98: 'red-breasted merganser, Mergus serrator',
+ 99: 'goose',
+ 100: 'black swan, Cygnus atratus',
+ 101: 'tusker',
+ 102: 'echidna, spiny anteater, anteater',
+ 103: 'platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus',
+ 104: 'wallaby, brush kangaroo',
+ 105: 'koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus',
+ 106: 'wombat',
+ 107: 'jellyfish',
+ 108: 'sea anemone, anemone',
+ 109: 'brain coral',
+ 110: 'flatworm, platyhelminth',
+ 111: 'nematode, nematode worm, roundworm',
+ 112: 'conch',
+ 113: 'snail',
+ 114: 'slug',
+ 115: 'sea slug, nudibranch',
+ 116: 'chiton, coat-of-mail shell, sea cradle, polyplacophore',
+ 117: 'chambered nautilus, pearly nautilus, nautilus',
+ 118: 'Dungeness crab, Cancer magister',
+ 119: 'rock crab, Cancer irroratus',
+ 120: 'fiddler crab',
+ 121: 'king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica',
+ 122: 'American lobster, Northern lobster, Maine lobster, Homarus americanus',
+ 123: 'spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish',
+ 124: 'crayfish, crawfish, crawdad, crawdaddy',
+ 125: 'hermit crab',
+ 126: 'isopod',
+ 127: 'white stork, Ciconia ciconia',
+ 128: 'black stork, Ciconia nigra',
+ 129: 'spoonbill',
+ 130: 'flamingo',
+ 131: 'little blue heron, Egretta caerulea',
+ 132: 'American egret, great white heron, Egretta albus',
+ 133: 'bittern',
+ 134: 'crane',
+ 135: 'limpkin, Aramus pictus',
+ 136: 'European gallinule, Porphyrio porphyrio',
+ 137: 'American coot, marsh hen, mud hen, water hen, Fulica americana',
+ 138: 'bustard',
+ 139: 'ruddy turnstone, Arenaria interpres',
+ 140: 'red-backed sandpiper, dunlin, Erolia alpina',
+ 141: 'redshank, Tringa totanus',
+ 142: 'dowitcher',
+ 143: 'oystercatcher, oyster catcher',
+ 144: 'pelican',
+ 145: 'king penguin, Aptenodytes patagonica',
+ 146: 'albatross, mollymawk',
+ 147: 'grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus',
+ 148: 'killer whale, killer, orca, grampus, sea wolf, Orcinus orca',
+ 149: 'dugong, Dugong dugon',
+ 150: 'sea lion',
+ 151: 'Chihuahua',
+ 152: 'Japanese spaniel',
+ 153: 'Maltese dog, Maltese terrier, Maltese',
+ 154: 'Pekinese, Pekingese, Peke',
+ 155: 'Shih-Tzu',
+ 156: 'Blenheim spaniel',
+ 157: 'papillon',
+ 158: 'toy terrier',
+ 159: 'Rhodesian ridgeback',
+ 160: 'Afghan hound, Afghan',
+ 161: 'basset, basset hound',
+ 162: 'beagle',
+ 163: 'bloodhound, sleuthhound',
+ 164: 'bluetick',
+ 165: 'black-and-tan coonhound',
+ 166: 'Walker hound, Walker foxhound',
+ 167: 'English foxhound',
+ 168: 'redbone',
+ 169: 'borzoi, Russian wolfhound',
+ 170: 'Irish wolfhound',
+ 171: 'Italian greyhound',
+ 172: 'whippet',
+ 173: 'Ibizan hound, Ibizan Podenco',
+ 174: 'Norwegian elkhound, elkhound',
+ 175: 'otterhound, otter hound',
+ 176: 'Saluki, gazelle hound',
+ 177: 'Scottish deerhound, deerhound',
+ 178: 'Weimaraner',
+ 179: 'Staffordshire bullterrier, Staffordshire bull terrier',
+ 180: 'American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier',
+ 181: 'Bedlington terrier',
+ 182: 'Border terrier',
+ 183: 'Kerry blue terrier',
+ 184: 'Irish terrier',
+ 185: 'Norfolk terrier',
+ 186: 'Norwich terrier',
+ 187: 'Yorkshire terrier',
+ 188: 'wire-haired fox terrier',
+ 189: 'Lakeland terrier',
+ 190: 'Sealyham terrier, Sealyham',
+ 191: 'Airedale, Airedale terrier',
+ 192: 'cairn, cairn terrier',
+ 193: 'Australian terrier',
+ 194: 'Dandie Dinmont, Dandie Dinmont terrier',
+ 195: 'Boston bull, Boston terrier',
+ 196: 'miniature schnauzer',
+ 197: 'giant schnauzer',
+ 198: 'standard schnauzer',
+ 199: 'Scotch terrier, Scottish terrier, Scottie',
+ 200: 'Tibetan terrier, chrysanthemum dog',
+ 201: 'silky terrier, Sydney silky',
+ 202: 'soft-coated wheaten terrier',
+ 203: 'West Highland white terrier',
+ 204: 'Lhasa, Lhasa apso',
+ 205: 'flat-coated retriever',
+ 206: 'curly-coated retriever',
+ 207: 'golden retriever',
+ 208: 'Labrador retriever',
+ 209: 'Chesapeake Bay retriever',
+ 210: 'German short-haired pointer',
+ 211: 'vizsla, Hungarian pointer',
+ 212: 'English setter',
+ 213: 'Irish setter, red setter',
+ 214: 'Gordon setter',
+ 215: 'Brittany spaniel',
+ 216: 'clumber, clumber spaniel',
+ 217: 'English springer, English springer spaniel',
+ 218: 'Welsh springer spaniel',
+ 219: 'cocker spaniel, English cocker spaniel, cocker',
+ 220: 'Sussex spaniel',
+ 221: 'Irish water spaniel',
+ 222: 'kuvasz',
+ 223: 'schipperke',
+ 224: 'groenendael',
+ 225: 'malinois',
+ 226: 'briard',
+ 227: 'kelpie',
+ 228: 'komondor',
+ 229: 'Old English sheepdog, bobtail',
+ 230: 'Shetland sheepdog, Shetland sheep dog, Shetland',
+ 231: 'collie',
+ 232: 'Border collie',
+ 233: 'Bouvier des Flandres, Bouviers des Flandres',
+ 234: 'Rottweiler',
+ 235: 'German shepherd, German shepherd dog, German police dog, alsatian',
+ 236: 'Doberman, Doberman pinscher',
+ 237: 'miniature pinscher',
+ 238: 'Greater Swiss Mountain dog',
+ 239: 'Bernese mountain dog',
+ 240: 'Appenzeller',
+ 241: 'EntleBucher',
+ 242: 'boxer',
+ 243: 'bull mastiff',
+ 244: 'Tibetan mastiff',
+ 245: 'French bulldog',
+ 246: 'Great Dane',
+ 247: 'Saint Bernard, St Bernard',
+ 248: 'Eskimo dog, husky',
+ 249: 'malamute, malemute, Alaskan malamute',
+ 250: 'Siberian husky',
+ 251: 'dalmatian, coach dog, carriage dog',
+ 252: 'affenpinscher, monkey pinscher, monkey dog',
+ 253: 'basenji',
+ 254: 'pug, pug-dog',
+ 255: 'Leonberg',
+ 256: 'Newfoundland, Newfoundland dog',
+ 257: 'Great Pyrenees',
+ 258: 'Samoyed, Samoyede',
+ 259: 'Pomeranian',
+ 260: 'chow, chow chow',
+ 261: 'keeshond',
+ 262: 'Brabancon griffon',
+ 263: 'Pembroke, Pembroke Welsh corgi',
+ 264: 'Cardigan, Cardigan Welsh corgi',
+ 265: 'toy poodle',
+ 266: 'miniature poodle',
+ 267: 'standard poodle',
+ 268: 'Mexican hairless',
+ 269: 'timber wolf, grey wolf, gray wolf, Canis lupus',
+ 270: 'white wolf, Arctic wolf, Canis lupus tundrarum',
+ 271: 'red wolf, maned wolf, Canis rufus, Canis niger',
+ 272: 'coyote, prairie wolf, brush wolf, Canis latrans',
+ 273: 'dingo, warrigal, warragal, Canis dingo',
+ 274: 'dhole, Cuon alpinus',
+ 275: 'African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus',
+ 276: 'hyena, hyaena',
+ 277: 'red fox, Vulpes vulpes',
+ 278: 'kit fox, Vulpes macrotis',
+ 279: 'Arctic fox, white fox, Alopex lagopus',
+ 280: 'grey fox, gray fox, Urocyon cinereoargenteus',
+ 281: 'tabby, tabby cat',
+ 282: 'tiger cat',
+ 283: 'Persian cat',
+ 284: 'Siamese cat, Siamese',
+ 285: 'Egyptian cat',
+ 286: 'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor',
+ 287: 'lynx, catamount',
+ 288: 'leopard, Panthera pardus',
+ 289: 'snow leopard, ounce, Panthera uncia',
+ 290: 'jaguar, panther, Panthera onca, Felis onca',
+ 291: 'lion, king of beasts, Panthera leo',
+ 292: 'tiger, Panthera tigris',
+ 293: 'cheetah, chetah, Acinonyx jubatus',
+ 294: 'brown bear, bruin, Ursus arctos',
+ 295: 'American black bear, black bear, Ursus americanus, Euarctos americanus',
+ 296: 'ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus',
+ 297: 'sloth bear, Melursus ursinus, Ursus ursinus',
+ 298: 'mongoose',
+ 299: 'meerkat, mierkat',
+ 300: 'tiger beetle',
+ 301: 'ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle',
+ 302: 'ground beetle, carabid beetle',
+ 303: 'long-horned beetle, longicorn, longicorn beetle',
+ 304: 'leaf beetle, chrysomelid',
+ 305: 'dung beetle',
+ 306: 'rhinoceros beetle',
+ 307: 'weevil',
+ 308: 'fly',
+ 309: 'bee',
+ 310: 'ant, emmet, pismire',
+ 311: 'grasshopper, hopper',
+ 312: 'cricket',
+ 313: 'walking stick, walkingstick, stick insect',
+ 314: 'cockroach, roach',
+ 315: 'mantis, mantid',
+ 316: 'cicada, cicala',
+ 317: 'leafhopper',
+ 318: 'lacewing, lacewing fly',
+ 319: "dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
+ 320: 'damselfly',
+ 321: 'admiral',
+ 322: 'ringlet, ringlet butterfly',
+ 323: 'monarch, monarch butterfly, milkweed butterfly, Danaus plexippus',
+ 324: 'cabbage butterfly',
+ 325: 'sulphur butterfly, sulfur butterfly',
+ 326: 'lycaenid, lycaenid butterfly',
+ 327: 'starfish, sea star',
+ 328: 'sea urchin',
+ 329: 'sea cucumber, holothurian',
+ 330: 'wood rabbit, cottontail, cottontail rabbit',
+ 331: 'hare',
+ 332: 'Angora, Angora rabbit',
+ 333: 'hamster',
+ 334: 'porcupine, hedgehog',
+ 335: 'fox squirrel, eastern fox squirrel, Sciurus niger',
+ 336: 'marmot',
+ 337: 'beaver',
+ 338: 'guinea pig, Cavia cobaya',
+ 339: 'sorrel',
+ 340: 'zebra',
+ 341: 'hog, pig, grunter, squealer, Sus scrofa',
+ 342: 'wild boar, boar, Sus scrofa',
+ 343: 'warthog',
+ 344: 'hippopotamus, hippo, river horse, Hippopotamus amphibius',
+ 345: 'ox',
+ 346: 'water buffalo, water ox, Asiatic buffalo, Bubalus bubalis',
+ 347: 'bison',
+ 348: 'ram, tup',
+ 349: 'bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis',
+ 350: 'ibex, Capra ibex',
+ 351: 'hartebeest',
+ 352: 'impala, Aepyceros melampus',
+ 353: 'gazelle',
+ 354: 'Arabian camel, dromedary, Camelus dromedarius',
+ 355: 'llama',
+ 356: 'weasel',
+ 357: 'mink',
+ 358: 'polecat, fitch, foulmart, foumart, Mustela putorius',
+ 359: 'black-footed ferret, ferret, Mustela nigripes',
+ 360: 'otter',
+ 361: 'skunk, polecat, wood pussy',
+ 362: 'badger',
+ 363: 'armadillo',
+ 364: 'three-toed sloth, ai, Bradypus tridactylus',
+ 365: 'orangutan, orang, orangutang, Pongo pygmaeus',
+ 366: 'gorilla, Gorilla gorilla',
+ 367: 'chimpanzee, chimp, Pan troglodytes',
+ 368: 'gibbon, Hylobates lar',
+ 369: 'siamang, Hylobates syndactylus, Symphalangus syndactylus',
+ 370: 'guenon, guenon monkey',
+ 371: 'patas, hussar monkey, Erythrocebus patas',
+ 372: 'baboon',
+ 373: 'macaque',
+ 374: 'langur',
+ 375: 'colobus, colobus monkey',
+ 376: 'proboscis monkey, Nasalis larvatus',
+ 377: 'marmoset',
+ 378: 'capuchin, ringtail, Cebus capucinus',
+ 379: 'howler monkey, howler',
+ 380: 'titi, titi monkey',
+ 381: 'spider monkey, Ateles geoffroyi',
+ 382: 'squirrel monkey, Saimiri sciureus',
+ 383: 'Madagascar cat, ring-tailed lemur, Lemur catta',
+ 384: 'indri, indris, Indri indri, Indri brevicaudatus',
+ 385: 'Indian elephant, Elephas maximus',
+ 386: 'African elephant, Loxodonta africana',
+ 387: 'lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens',
+ 388: 'giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca',
+ 389: 'barracouta, snoek',
+ 390: 'eel',
+ 391: 'coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch',
+ 392: 'rock beauty, Holocanthus tricolor',
+ 393: 'anemone fish',
+ 394: 'sturgeon',
+ 395: 'gar, garfish, garpike, billfish, Lepisosteus osseus',
+ 396: 'lionfish',
+ 397: 'puffer, pufferfish, blowfish, globefish',
+ 398: 'abacus',
+ 399: 'abaya',
+ 400: "academic gown, academic robe, judge's robe",
+ 401: 'accordion, piano accordion, squeeze box',
+ 402: 'acoustic guitar',
+ 403: 'aircraft carrier, carrier, flattop, attack aircraft carrier',
+ 404: 'airliner',
+ 405: 'airship, dirigible',
+ 406: 'altar',
+ 407: 'ambulance',
+ 408: 'amphibian, amphibious vehicle',
+ 409: 'analog clock',
+ 410: 'apiary, bee house',
+ 411: 'apron',
+ 412: 'ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin',
+ 413: 'assault rifle, assault gun',
+ 414: 'backpack, back pack, knapsack, packsack, rucksack, haversack',
+ 415: 'bakery, bakeshop, bakehouse',
+ 416: 'balance beam, beam',
+ 417: 'balloon',
+ 418: 'ballpoint, ballpoint pen, ballpen, Biro',
+ 419: 'Band Aid',
+ 420: 'banjo',
+ 421: 'bannister, banister, balustrade, balusters, handrail',
+ 422: 'barbell',
+ 423: 'barber chair',
+ 424: 'barbershop',
+ 425: 'barn',
+ 426: 'barometer',
+ 427: 'barrel, cask',
+ 428: 'barrow, garden cart, lawn cart, wheelbarrow',
+ 429: 'baseball',
+ 430: 'basketball',
+ 431: 'bassinet',
+ 432: 'bassoon',
+ 433: 'bathing cap, swimming cap',
+ 434: 'bath towel',
+ 435: 'bathtub, bathing tub, bath, tub',
+ 436: 'beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon',
+ 437: 'beacon, lighthouse, beacon light, pharos',
+ 438: 'beaker',
+ 439: 'bearskin, busby, shako',
+ 440: 'beer bottle',
+ 441: 'beer glass',
+ 442: 'bell cote, bell cot',
+ 443: 'bib',
+ 444: 'bicycle-built-for-two, tandem bicycle, tandem',
+ 445: 'bikini, two-piece',
+ 446: 'binder, ring-binder',
+ 447: 'binoculars, field glasses, opera glasses',
+ 448: 'birdhouse',
+ 449: 'boathouse',
+ 450: 'bobsled, bobsleigh, bob',
+ 451: 'bolo tie, bolo, bola tie, bola',
+ 452: 'bonnet, poke bonnet',
+ 453: 'bookcase',
+ 454: 'bookshop, bookstore, bookstall',
+ 455: 'bottlecap',
+ 456: 'bow',
+ 457: 'bow tie, bow-tie, bowtie',
+ 458: 'brass, memorial tablet, plaque',
+ 459: 'brassiere, bra, bandeau',
+ 460: 'breakwater, groin, groyne, mole, bulwark, seawall, jetty',
+ 461: 'breastplate, aegis, egis',
+ 462: 'broom',
+ 463: 'bucket, pail',
+ 464: 'buckle',
+ 465: 'bulletproof vest',
+ 466: 'bullet train, bullet',
+ 467: 'butcher shop, meat market',
+ 468: 'cab, hack, taxi, taxicab',
+ 469: 'caldron, cauldron',
+ 470: 'candle, taper, wax light',
+ 471: 'cannon',
+ 472: 'canoe',
+ 473: 'can opener, tin opener',
+ 474: 'cardigan',
+ 475: 'car mirror',
+ 476: 'carousel, carrousel, merry-go-round, roundabout, whirligig',
+ 477: "carpenter's kit, tool kit",
+ 478: 'carton',
+ 479: 'car wheel',
+ 480: 'cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM',
+ 481: 'cassette',
+ 482: 'cassette player',
+ 483: 'castle',
+ 484: 'catamaran',
+ 485: 'CD player',
+ 486: 'cello, violoncello',
+ 487: 'cellular telephone, cellular phone, cellphone, cell, mobile phone',
+ 488: 'chain',
+ 489: 'chainlink fence',
+ 490: 'chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour',
+ 491: 'chain saw, chainsaw',
+ 492: 'chest',
+ 493: 'chiffonier, commode',
+ 494: 'chime, bell, gong',
+ 495: 'china cabinet, china closet',
+ 496: 'Christmas stocking',
+ 497: 'church, church building',
+ 498: 'cinema, movie theater, movie theatre, movie house, picture palace',
+ 499: 'cleaver, meat cleaver, chopper',
+ 500: 'cliff dwelling',
+ 501: 'cloak',
+ 502: 'clog, geta, patten, sabot',
+ 503: 'cocktail shaker',
+ 504: 'coffee mug',
+ 505: 'coffeepot',
+ 506: 'coil, spiral, volute, whorl, helix',
+ 507: 'combination lock',
+ 508: 'computer keyboard, keypad',
+ 509: 'confectionery, confectionary, candy store',
+ 510: 'container ship, containership, container vessel',
+ 511: 'convertible',
+ 512: 'corkscrew, bottle screw',
+ 513: 'cornet, horn, trumpet, trump',
+ 514: 'cowboy boot',
+ 515: 'cowboy hat, ten-gallon hat',
+ 516: 'cradle',
+ 517: 'crane',
+ 518: 'crash helmet',
+ 519: 'crate',
+ 520: 'crib, cot',
+ 521: 'Crock Pot',
+ 522: 'croquet ball',
+ 523: 'crutch',
+ 524: 'cuirass',
+ 525: 'dam, dike, dyke',
+ 526: 'desk',
+ 527: 'desktop computer',
+ 528: 'dial telephone, dial phone',
+ 529: 'diaper, nappy, napkin',
+ 530: 'digital clock',
+ 531: 'digital watch',
+ 532: 'dining table, board',
+ 533: 'dishrag, dishcloth',
+ 534: 'dishwasher, dish washer, dishwashing machine',
+ 535: 'disk brake, disc brake',
+ 536: 'dock, dockage, docking facility',
+ 537: 'dogsled, dog sled, dog sleigh',
+ 538: 'dome',
+ 539: 'doormat, welcome mat',
+ 540: 'drilling platform, offshore rig',
+ 541: 'drum, membranophone, tympan',
+ 542: 'drumstick',
+ 543: 'dumbbell',
+ 544: 'Dutch oven',
+ 545: 'electric fan, blower',
+ 546: 'electric guitar',
+ 547: 'electric locomotive',
+ 548: 'entertainment center',
+ 549: 'envelope',
+ 550: 'espresso maker',
+ 551: 'face powder',
+ 552: 'feather boa, boa',
+ 553: 'file, file cabinet, filing cabinet',
+ 554: 'fireboat',
+ 555: 'fire engine, fire truck',
+ 556: 'fire screen, fireguard',
+ 557: 'flagpole, flagstaff',
+ 558: 'flute, transverse flute',
+ 559: 'folding chair',
+ 560: 'football helmet',
+ 561: 'forklift',
+ 562: 'fountain',
+ 563: 'fountain pen',
+ 564: 'four-poster',
+ 565: 'freight car',
+ 566: 'French horn, horn',
+ 567: 'frying pan, frypan, skillet',
+ 568: 'fur coat',
+ 569: 'garbage truck, dustcart',
+ 570: 'gasmask, respirator, gas helmet',
+ 571: 'gas pump, gasoline pump, petrol pump, island dispenser',
+ 572: 'goblet',
+ 573: 'go-kart',
+ 574: 'golf ball',
+ 575: 'golfcart, golf cart',
+ 576: 'gondola',
+ 577: 'gong, tam-tam',
+ 578: 'gown',
+ 579: 'grand piano, grand',
+ 580: 'greenhouse, nursery, glasshouse',
+ 581: 'grille, radiator grille',
+ 582: 'grocery store, grocery, food market, market',
+ 583: 'guillotine',
+ 584: 'hair slide',
+ 585: 'hair spray',
+ 586: 'half track',
+ 587: 'hammer',
+ 588: 'hamper',
+ 589: 'hand blower, blow dryer, blow drier, hair dryer, hair drier',
+ 590: 'hand-held computer, hand-held microcomputer',
+ 591: 'handkerchief, hankie, hanky, hankey',
+ 592: 'hard disc, hard disk, fixed disk',
+ 593: 'harmonica, mouth organ, harp, mouth harp',
+ 594: 'harp',
+ 595: 'harvester, reaper',
+ 596: 'hatchet',
+ 597: 'holster',
+ 598: 'home theater, home theatre',
+ 599: 'honeycomb',
+ 600: 'hook, claw',
+ 601: 'hoopskirt, crinoline',
+ 602: 'horizontal bar, high bar',
+ 603: 'horse cart, horse-cart',
+ 604: 'hourglass',
+ 605: 'iPod',
+ 606: 'iron, smoothing iron',
+ 607: "jack-o'-lantern",
+ 608: 'jean, blue jean, denim',
+ 609: 'jeep, landrover',
+ 610: 'jersey, T-shirt, tee shirt',
+ 611: 'jigsaw puzzle',
+ 612: 'jinrikisha, ricksha, rickshaw',
+ 613: 'joystick',
+ 614: 'kimono',
+ 615: 'knee pad',
+ 616: 'knot',
+ 617: 'lab coat, laboratory coat',
+ 618: 'ladle',
+ 619: 'lampshade, lamp shade',
+ 620: 'laptop, laptop computer',
+ 621: 'lawn mower, mower',
+ 622: 'lens cap, lens cover',
+ 623: 'letter opener, paper knife, paperknife',
+ 624: 'library',
+ 625: 'lifeboat',
+ 626: 'lighter, light, igniter, ignitor',
+ 627: 'limousine, limo',
+ 628: 'liner, ocean liner',
+ 629: 'lipstick, lip rouge',
+ 630: 'Loafer',
+ 631: 'lotion',
+ 632: 'loudspeaker, speaker, speaker unit, loudspeaker system, speaker system',
+ 633: "loupe, jeweler's loupe",
+ 634: 'lumbermill, sawmill',
+ 635: 'magnetic compass',
+ 636: 'mailbag, postbag',
+ 637: 'mailbox, letter box',
+ 638: 'maillot',
+ 639: 'maillot, tank suit',
+ 640: 'manhole cover',
+ 641: 'maraca',
+ 642: 'marimba, xylophone',
+ 643: 'mask',
+ 644: 'matchstick',
+ 645: 'maypole',
+ 646: 'maze, labyrinth',
+ 647: 'measuring cup',
+ 648: 'medicine chest, medicine cabinet',
+ 649: 'megalith, megalithic structure',
+ 650: 'microphone, mike',
+ 651: 'microwave, microwave oven',
+ 652: 'military uniform',
+ 653: 'milk can',
+ 654: 'minibus',
+ 655: 'miniskirt, mini',
+ 656: 'minivan',
+ 657: 'missile',
+ 658: 'mitten',
+ 659: 'mixing bowl',
+ 660: 'mobile home, manufactured home',
+ 661: 'Model T',
+ 662: 'modem',
+ 663: 'monastery',
+ 664: 'monitor',
+ 665: 'moped',
+ 666: 'mortar',
+ 667: 'mortarboard',
+ 668: 'mosque',
+ 669: 'mosquito net',
+ 670: 'motor scooter, scooter',
+ 671: 'mountain bike, all-terrain bike, off-roader',
+ 672: 'mountain tent',
+ 673: 'mouse, computer mouse',
+ 674: 'mousetrap',
+ 675: 'moving van',
+ 676: 'muzzle',
+ 677: 'nail',
+ 678: 'neck brace',
+ 679: 'necklace',
+ 680: 'nipple',
+ 681: 'notebook, notebook computer',
+ 682: 'obelisk',
+ 683: 'oboe, hautboy, hautbois',
+ 684: 'ocarina, sweet potato',
+ 685: 'odometer, hodometer, mileometer, milometer',
+ 686: 'oil filter',
+ 687: 'organ, pipe organ',
+ 688: 'oscilloscope, scope, cathode-ray oscilloscope, CRO',
+ 689: 'overskirt',
+ 690: 'oxcart',
+ 691: 'oxygen mask',
+ 692: 'packet',
+ 693: 'paddle, boat paddle',
+ 694: 'paddlewheel, paddle wheel',
+ 695: 'padlock',
+ 696: 'paintbrush',
+ 697: "pajama, pyjama, pj's, jammies",
+ 698: 'palace',
+ 699: 'panpipe, pandean pipe, syrinx',
+ 700: 'paper towel',
+ 701: 'parachute, chute',
+ 702: 'parallel bars, bars',
+ 703: 'park bench',
+ 704: 'parking meter',
+ 705: 'passenger car, coach, carriage',
+ 706: 'patio, terrace',
+ 707: 'pay-phone, pay-station',
+ 708: 'pedestal, plinth, footstall',
+ 709: 'pencil box, pencil case',
+ 710: 'pencil sharpener',
+ 711: 'perfume, essence',
+ 712: 'Petri dish',
+ 713: 'photocopier',
+ 714: 'pick, plectrum, plectron',
+ 715: 'pickelhaube',
+ 716: 'picket fence, paling',
+ 717: 'pickup, pickup truck',
+ 718: 'pier',
+ 719: 'piggy bank, penny bank',
+ 720: 'pill bottle',
+ 721: 'pillow',
+ 722: 'ping-pong ball',
+ 723: 'pinwheel',
+ 724: 'pirate, pirate ship',
+ 725: 'pitcher, ewer',
+ 726: "plane, carpenter's plane, woodworking plane",
+ 727: 'planetarium',
+ 728: 'plastic bag',
+ 729: 'plate rack',
+ 730: 'plow, plough',
+ 731: "plunger, plumber's helper",
+ 732: 'Polaroid camera, Polaroid Land camera',
+ 733: 'pole',
+ 734: 'police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria',
+ 735: 'poncho',
+ 736: 'pool table, billiard table, snooker table',
+ 737: 'pop bottle, soda bottle',
+ 738: 'pot, flowerpot',
+ 739: "potter's wheel",
+ 740: 'power drill',
+ 741: 'prayer rug, prayer mat',
+ 742: 'printer',
+ 743: 'prison, prison house',
+ 744: 'projectile, missile',
+ 745: 'projector',
+ 746: 'puck, hockey puck',
+ 747: 'punching bag, punch bag, punching ball, punchball',
+ 748: 'purse',
+ 749: 'quill, quill pen',
+ 750: 'quilt, comforter, comfort, puff',
+ 751: 'racer, race car, racing car',
+ 752: 'racket, racquet',
+ 753: 'radiator',
+ 754: 'radio, wireless',
+ 755: 'radio telescope, radio reflector',
+ 756: 'rain barrel',
+ 757: 'recreational vehicle, RV, R.V.',
+ 758: 'reel',
+ 759: 'reflex camera',
+ 760: 'refrigerator, icebox',
+ 761: 'remote control, remote',
+ 762: 'restaurant, eating house, eating place, eatery',
+ 763: 'revolver, six-gun, six-shooter',
+ 764: 'rifle',
+ 765: 'rocking chair, rocker',
+ 766: 'rotisserie',
+ 767: 'rubber eraser, rubber, pencil eraser',
+ 768: 'rugby ball',
+ 769: 'rule, ruler',
+ 770: 'running shoe',
+ 771: 'safe',
+ 772: 'safety pin',
+ 773: 'saltshaker, salt shaker',
+ 774: 'sandal',
+ 775: 'sarong',
+ 776: 'sax, saxophone',
+ 777: 'scabbard',
+ 778: 'scale, weighing machine',
+ 779: 'school bus',
+ 780: 'schooner',
+ 781: 'scoreboard',
+ 782: 'screen, CRT screen',
+ 783: 'screw',
+ 784: 'screwdriver',
+ 785: 'seat belt, seatbelt',
+ 786: 'sewing machine',
+ 787: 'shield, buckler',
+ 788: 'shoe shop, shoe-shop, shoe store',
+ 789: 'shoji',
+ 790: 'shopping basket',
+ 791: 'shopping cart',
+ 792: 'shovel',
+ 793: 'shower cap',
+ 794: 'shower curtain',
+ 795: 'ski',
+ 796: 'ski mask',
+ 797: 'sleeping bag',
+ 798: 'slide rule, slipstick',
+ 799: 'sliding door',
+ 800: 'slot, one-armed bandit',
+ 801: 'snorkel',
+ 802: 'snowmobile',
+ 803: 'snowplow, snowplough',
+ 804: 'soap dispenser',
+ 805: 'soccer ball',
+ 806: 'sock',
+ 807: 'solar dish, solar collector, solar furnace',
+ 808: 'sombrero',
+ 809: 'soup bowl',
+ 810: 'space bar',
+ 811: 'space heater',
+ 812: 'space shuttle',
+ 813: 'spatula',
+ 814: 'speedboat',
+ 815: "spider web, spider's web",
+ 816: 'spindle',
+ 817: 'sports car, sport car',
+ 818: 'spotlight, spot',
+ 819: 'stage',
+ 820: 'steam locomotive',
+ 821: 'steel arch bridge',
+ 822: 'steel drum',
+ 823: 'stethoscope',
+ 824: 'stole',
+ 825: 'stone wall',
+ 826: 'stopwatch, stop watch',
+ 827: 'stove',
+ 828: 'strainer',
+ 829: 'streetcar, tram, tramcar, trolley, trolley car',
+ 830: 'stretcher',
+ 831: 'studio couch, day bed',
+ 832: 'stupa, tope',
+ 833: 'submarine, pigboat, sub, U-boat',
+ 834: 'suit, suit of clothes',
+ 835: 'sundial',
+ 836: 'sunglass',
+ 837: 'sunglasses, dark glasses, shades',
+ 838: 'sunscreen, sunblock, sun blocker',
+ 839: 'suspension bridge',
+ 840: 'swab, swob, mop',
+ 841: 'sweatshirt',
+ 842: 'swimming trunks, bathing trunks',
+ 843: 'swing',
+ 844: 'switch, electric switch, electrical switch',
+ 845: 'syringe',
+ 846: 'table lamp',
+ 847: 'tank, army tank, armored combat vehicle, armoured combat vehicle',
+ 848: 'tape player',
+ 849: 'teapot',
+ 850: 'teddy, teddy bear',
+ 851: 'television, television system',
+ 852: 'tennis ball',
+ 853: 'thatch, thatched roof',
+ 854: 'theater curtain, theatre curtain',
+ 855: 'thimble',
+ 856: 'thresher, thrasher, threshing machine',
+ 857: 'throne',
+ 858: 'tile roof',
+ 859: 'toaster',
+ 860: 'tobacco shop, tobacconist shop, tobacconist',
+ 861: 'toilet seat',
+ 862: 'torch',
+ 863: 'totem pole',
+ 864: 'tow truck, tow car, wrecker',
+ 865: 'toyshop',
+ 866: 'tractor',
+ 867: 'trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi',
+ 868: 'tray',
+ 869: 'trench coat',
+ 870: 'tricycle, trike, velocipede',
+ 871: 'trimaran',
+ 872: 'tripod',
+ 873: 'triumphal arch',
+ 874: 'trolleybus, trolley coach, trackless trolley',
+ 875: 'trombone',
+ 876: 'tub, vat',
+ 877: 'turnstile',
+ 878: 'typewriter keyboard',
+ 879: 'umbrella',
+ 880: 'unicycle, monocycle',
+ 881: 'upright, upright piano',
+ 882: 'vacuum, vacuum cleaner',
+ 883: 'vase',
+ 884: 'vault',
+ 885: 'velvet',
+ 886: 'vending machine',
+ 887: 'vestment',
+ 888: 'viaduct',
+ 889: 'violin, fiddle',
+ 890: 'volleyball',
+ 891: 'waffle iron',
+ 892: 'wall clock',
+ 893: 'wallet, billfold, notecase, pocketbook',
+ 894: 'wardrobe, closet, press',
+ 895: 'warplane, military plane',
+ 896: 'washbasin, handbasin, washbowl, lavabo, wash-hand basin',
+ 897: 'washer, automatic washer, washing machine',
+ 898: 'water bottle',
+ 899: 'water jug',
+ 900: 'water tower',
+ 901: 'whiskey jug',
+ 902: 'whistle',
+ 903: 'wig',
+ 904: 'window screen',
+ 905: 'window shade',
+ 906: 'Windsor tie',
+ 907: 'wine bottle',
+ 908: 'wing',
+ 909: 'wok',
+ 910: 'wooden spoon',
+ 911: 'wool, woolen, woollen',
+ 912: 'worm fence, snake fence, snake-rail fence, Virginia fence',
+ 913: 'wreck',
+ 914: 'yawl',
+ 915: 'yurt',
+ 916: 'web site, website, internet site, site',
+ 917: 'comic book',
+ 918: 'crossword puzzle, crossword',
+ 919: 'street sign',
+ 920: 'traffic light, traffic signal, stoplight',
+ 921: 'book jacket, dust cover, dust jacket, dust wrapper',
+ 922: 'menu',
+ 923: 'plate',
+ 924: 'guacamole',
+ 925: 'consomme',
+ 926: 'hot pot, hotpot',
+ 927: 'trifle',
+ 928: 'ice cream, icecream',
+ 929: 'ice lolly, lolly, lollipop, popsicle',
+ 930: 'French loaf',
+ 931: 'bagel, beigel',
+ 932: 'pretzel',
+ 933: 'cheeseburger',
+ 934: 'hotdog, hot dog, red hot',
+ 935: 'mashed potato',
+ 936: 'head cabbage',
+ 937: 'broccoli',
+ 938: 'cauliflower',
+ 939: 'zucchini, courgette',
+ 940: 'spaghetti squash',
+ 941: 'acorn squash',
+ 942: 'butternut squash',
+ 943: 'cucumber, cuke',
+ 944: 'artichoke, globe artichoke',
+ 945: 'bell pepper',
+ 946: 'cardoon',
+ 947: 'mushroom',
+ 948: 'Granny Smith',
+ 949: 'strawberry',
+ 950: 'orange',
+ 951: 'lemon',
+ 952: 'fig',
+ 953: 'pineapple, ananas',
+ 954: 'banana',
+ 955: 'jackfruit, jak, jack',
+ 956: 'custard apple',
+ 957: 'pomegranate',
+ 958: 'hay',
+ 959: 'carbonara',
+ 960: 'chocolate sauce, chocolate syrup',
+ 961: 'dough',
+ 962: 'meat loaf, meatloaf',
+ 963: 'pizza, pizza pie',
+ 964: 'potpie',
+ 965: 'burrito',
+ 966: 'red wine',
+ 967: 'espresso',
+ 968: 'cup',
+ 969: 'eggnog',
+ 970: 'alp',
+ 971: 'bubble',
+ 972: 'cliff, drop, drop-off',
+ 973: 'coral reef',
+ 974: 'geyser',
+ 975: 'lakeside, lakeshore',
+ 976: 'promontory, headland, head, foreland',
+ 977: 'sandbar, sand bar',
+ 978: 'seashore, coast, seacoast, sea-coast',
+ 979: 'valley, vale',
+ 980: 'volcano',
+ 981: 'ballplayer, baseball player',
+ 982: 'groom, bridegroom',
+ 983: 'scuba diver',
+ 984: 'rapeseed',
+ 985: 'daisy',
+ 986: "yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum",
+ 987: 'corn',
+ 988: 'acorn',
+ 989: 'hip, rose hip, rosehip',
+ 990: 'buckeye, horse chestnut, conker',
+ 991: 'coral fungus',
+ 992: 'agaric',
+ 993: 'gyromitra',
+ 994: 'stinkhorn, carrion fungus',
+ 995: 'earthstar',
+ 996: 'hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa',
+ 997: 'bolete',
+ 998: 'ear, spike, capitulum',
+ 999: 'toilet tissue, toilet paper, bathroom tissue'}
\ No newline at end of file
diff --git a/rknn-toolkit-lite2/examples/resnet18/test.py b/rknn-toolkit-lite2/examples/resnet18/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..08c24d629ca72da812ec88cd25c7cde95bd5371e
--- /dev/null
+++ b/rknn-toolkit-lite2/examples/resnet18/test.py
@@ -0,0 +1,110 @@
+import cv2
+import numpy as np
+import platform
+from synset_label import labels
+from rknnlite.api import RKNNLite
+
+# decice tree for RK356x/RK3576/RK3588
+DEVICE_COMPATIBLE_NODE = '/proc/device-tree/compatible'
+
+def get_host():
+ # get platform and device type
+ system = platform.system()
+ machine = platform.machine()
+ os_machine = system + '-' + machine
+ if os_machine == 'Linux-aarch64':
+ try:
+ with open(DEVICE_COMPATIBLE_NODE) as f:
+ device_compatible_str = f.read()
+ if 'rk3562' in device_compatible_str:
+ host = 'RK3562'
+ elif 'rk3576' in device_compatible_str:
+ host = 'RK3576'
+ elif 'rk3588' in device_compatible_str:
+ host = 'RK3588'
+ else:
+ host = 'RK3566_RK3568'
+ except IOError:
+ print('Read device node {} failed.'.format(DEVICE_COMPATIBLE_NODE))
+ exit(-1)
+ else:
+ host = os_machine
+ return host
+
+INPUT_SIZE = 224
+
+RK3566_RK3568_RKNN_MODEL = 'resnet18_for_rk3566_rk3568.rknn'
+RK3588_RKNN_MODEL = 'resnet18_for_rk3588.rknn'
+RK3562_RKNN_MODEL = 'resnet18_for_rk3562.rknn'
+RK3576_RKNN_MODEL = 'resnet18_for_rk3576.rknn'
+
+
+def show_top5(result):
+ output = result[0].reshape(-1)
+ # Softmax
+ output = np.exp(output) / np.sum(np.exp(output))
+ # Get the indices of the top 5 largest values
+ output_sorted_indices = np.argsort(output)[::-1][:5]
+ top5_str = 'resnet18\n-----TOP 5-----\n'
+ for i, index in enumerate(output_sorted_indices):
+ value = output[index]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index, value, labels[index])
+ else:
+ topi = '-1: 0.0\n'
+ top5_str += topi
+ print(top5_str)
+
+
+if __name__ == '__main__':
+
+ # Get device information
+ host_name = get_host()
+ if host_name == 'RK3566_RK3568':
+ rknn_model = RK3566_RK3568_RKNN_MODEL
+ elif host_name == 'RK3562':
+ rknn_model = RK3562_RKNN_MODEL
+ elif host_name == 'RK3576':
+ rknn_model = RK3576_RKNN_MODEL
+ elif host_name == 'RK3588':
+ rknn_model = RK3588_RKNN_MODEL
+ else:
+ print("This demo cannot run on the current platform: {}".format(host_name))
+ exit(-1)
+
+ rknn_lite = RKNNLite()
+
+ # Load RKNN model
+ print('--> Load RKNN model')
+ ret = rknn_lite.load_rknn(rknn_model)
+ if ret != 0:
+ print('Load RKNN model failed')
+ exit(ret)
+ print('done')
+
+ ori_img = cv2.imread('./space_shuttle_224.jpg')
+ img = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ # Run on RK356x / RK3576 / RK3588 with Debian OS, do not need specify target.
+ if host_name in ['RK3576', 'RK3588']:
+ # For RK3576 / RK3588, specify which NPU core the model runs on through the core_mask parameter.
+ ret = rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_0)
+ else:
+ ret = rknn_lite.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn_lite.inference(inputs=[img])
+
+ # Show the classification results
+ show_top5(outputs)
+ print('done')
+
+ rknn_lite.release()
diff --git a/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..fb9c709947d9a8dbaea46ef0c471cc7e18911640
--- /dev/null
+++ b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp310-cp310-linux_aarch64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c972398c5c4deaba31a7a847e94de2cdec30533f610a0be44eed9979a8bbd1bb
+size 765634
diff --git a/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp311-cp311-linux_aarch64.whl b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp311-cp311-linux_aarch64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..0c542b5eb4b5a873e6692372f83e09dee674be38
--- /dev/null
+++ b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp311-cp311-linux_aarch64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:268acddc8abbb7436b789dae1a184a612c853e373a3e73a5bf743e6bf6da08a6
+size 775287
diff --git a/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp312-cp312-linux_aarch64.whl b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp312-cp312-linux_aarch64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..43e032cb17f7b8a078b16f3a2a658b276e4ef602
--- /dev/null
+++ b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp312-cp312-linux_aarch64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:460718f165d74055dcbb9d82e024414df050061e8a1ddfe522b3d2cf5e87bc97
+size 730898
diff --git a/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp37-cp37m-linux_aarch64.whl b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp37-cp37m-linux_aarch64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..ec4a1c9890c482f3ebd14d6bd18ec7872709d6fa
--- /dev/null
+++ b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp37-cp37m-linux_aarch64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a82659b38611049f845f7a97f2b694aeaa58baba02d4d8c3368513e47dbc519
+size 753483
diff --git a/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp38-cp38-linux_aarch64.whl b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp38-cp38-linux_aarch64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..a486cb830388012df74555cfae84654396851da4
--- /dev/null
+++ b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp38-cp38-linux_aarch64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c725cb0ee8aa34d30dd47d95ed9c26b5314c649b0e25439b619a804a41f69d12
+size 767422
diff --git a/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp39-cp39-linux_aarch64.whl b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp39-cp39-linux_aarch64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..64b3ebfac08a60c940c12dc6fe04cf54612084a2
--- /dev/null
+++ b/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp39-cp39-linux_aarch64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c34da4fcca21ba6e6118f190b6b514757b3b98f728d72c540b329e5c0e3cba0
+size 765717
diff --git a/rknn-toolkit2/CHANGELOG.txt b/rknn-toolkit2/CHANGELOG.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9b3fd1d6ed8afc8fa699d2438603a8a9bcbf584e
--- /dev/null
+++ b/rknn-toolkit2/CHANGELOG.txt
@@ -0,0 +1,991 @@
+2024-8-1
+版本: v2.1.0:
+更新内容:
+1. 增加int32/int64的输出类型的支持
+2. 修复OneHot导致的异常问题
+3. 增加flash attention的配置
+4. 更新pip源
+5. 修复量化参数异常问题
+6. 修复精度分析余弦值不准确问题
+
+2024-7-29
+版本: v2.0.0b24:
+更新内容:
+1. 修复RV1103B若干模型错误的问题
+2. 完善Conv的tiling功能
+3. 修复Lstm子图/layernorm的报错问题
+4. 修复Caffe的Split问题
+
+2024-7-22
+版本: v2.0.0b23:
+更新内容:
+1. 修复Add+Relu在开启global_fuse后融合失效以及int8 CPU exSoftmax13算子实现输出没做round的问题
+2. 完善layernorm/exmatmul/Glu支持
+3. 删除rknn.config的target_sub_class参数
+4. 修复mmse存在的报错问题
+5. 增加对paddle导出的onnx模型的支持
+
+2024-7-15
+版本: v2.0.0b22:
+更新内容:
+1. 修复Runtime不兼容<=0.8.0版本rknpu驱动的问题
+2. 完善exWindow/reducemean/cumsum支持
+3. 修复图优化进度条显示问题
+4. 修复scipy库报错问题
+
+2024-7-12
+版本: v2.0.0b21:
+更新内容:
+1. [修复]
+ 1) 修复输入出现4维undefine layout等若干Bug
+ 2) 修复1103b板子信息上错误并增加rknn_server版本检查
+ 3) 修复sparse_infer开启时的报错问题
+2. [特性]
+ 1) 增加one-hot/top-k算子支持
+ 2) 增加exWindow mode=partition_num_first支持
+ 3) 增加ConvTranspose+Sigmoid融合支持
+ 4) 增加无效ReduceMean/ReduceSum消除规则
+ 5) 增加1103b等小内存平台的分段传输功能
+3. 优化SDPA的仿真器推理速度
+4. 完善对带有Constant的external_data的支持
+5. 完善图优化规则优先级逻辑, 支持多级优先级
+
+2024-6-28
+版本: v2.0.0b20:
+更新内容:
+1. 增加exNorm的OP量化支持
+2. 优化模型转换中shape推理的耗时
+3. 修复Slice去除无效参数导致的错误
+4. 修复自定义OP的shape推理异常问题
+5. 修复softmax因axis为负值导致的异常
+
+2024-6-26
+版本: v2.0.0b19:
+更新内容:
+1. 修复prelu算子错误
+2. 增加Matmul API B_layout=TP_NORM功能以支持B输入是NxK的数据排布
+3. RK3588增强大channel的exNorm算子支持
+4. 增加图优化进度条显示
+5. 完善w4a8的量化计算方式
+6. 修复exmatmul/deconv/Reduce类OP异常问题
+7. 修复Concat/Add/Reshape的消融问题
+8. 修复模型裁剪type错误和shape推理的问题
+
+2024-6-20
+版本: v2.0.0b18:
+更新内容:
+1. 修复部分激活函数下溢出和Pad浮点算子出现NaN的Bug
+2. 增加更多Transpose算子规格的NPU支持;优化非对齐Concat的效率
+3. 更新exglu/exnorm/Elu/Log/Sub/Div/avgpool和多级split/concat支持
+4. 增加rv1103b的平台支持
+5. 更新Relu/Clip/LeakyRelu/Elu/TopK的5维支持
+6. 优化swap合并性能和bypass特性支持
+7. 完善reduce类OP的图优化支持
+8. 修复多slice/gather/scatternd的合并问题
+
+2024-6-13
+版本: v2.0.0b17:
+更新内容:
+1. 更新Einsum/Softmax/ReduceSum/Gather支持
+2. 增加BN/rmsnorm/Floor等消融规则
+3. 修复exmatmul/GreaterOrEqual问题
+
+2024-6-12
+版本: v2.0.0b16:
+更新内容:
+1. 完善BN与deconv的融合规则
+2. 修复Slice的交换规则问题
+
+2024-6-8
+版本: v2.0.0b15:
+更新内容:
+1. 增加config的quantized_hybrid_level配置参数
+2. 增加bn和conv/deconv的合并规则
+3. 更新Gather/TP/并行OP相关支持
+4. 增加对sequence类型的部分支持
+5. 修复w8a16下mmse可能报错的问题
+
+2024-5-31
+版本: v2.0.0b14:
+更新内容:
+1. Runtime对部分CPU算子模型解析参数错误的兼容性问题
+2. 增加convtranspose+relu/leakyrelu的融合
+3. 优化常量折叠对空tensor的支持
+4. 完善avgpool的图优化处理
+
+2024-5-29
+版本: v2.0.0b13:
+更新内容:
+1. 修复多batch SDPA算子结果错误和Runtime兼容老版本rknn模型问题
+2. 增加rv1103平台的SDPA支持
+3. 修改quantized_dtype定义, 增加部分w4a16/w4a8的量化支持
+4. 修复混合量化推荐功能异常问题
+
+2024-5-24
+版本: v2.0.0b12:
+更新内容:
+1. 修复RK3562 exNorm NPU算子中间结果溢出问题
+2. 增加对大kernel_size卷积支持
+3. 完善Glu子图合并支持和非4D支持
+4. 修复1维Dropout问题
+5. 修复CodeGen输入文件异常问题
+
+2024-5-20
+版本: v2.0.0b11:
+更新内容:
+1. 增加exNorm CPU算子支持
+2. 增加scalar常量/reducel2/Gelu子图支持
+3. 优化axis-OP附近Reshape消除规则
+4. 优化exMatMul的执行性能和精度问题
+5. 修复精度分析core_mask参数失效问题
+6. 修复带Constant节点的常量折叠问题
+7. 修复超大模型的内存问题
+8. 修复gather子图/SDPA/swap规则问题
+
+2024-5-16
+版本: v2.0.0b10:
+更新内容:
+1. RK3576增加exSDPA算子多核支持
+2. 修复Reshape/Transpose算子Bug/部分exNorm结果不正确问题
+3. 优化exWindow/Gather子图融合问题
+4. 修复并行Slice消除问题
+5. 修复where转Clip的报错问题
+
+2024-5-7
+版本: v2.0.0b9:
+更新内容:
+1. 将exLayerNorm/exMeanVarianceNorm/RMSNorm统一转换成exNrom
+2. 完善exMatMul算子功能
+3. 完善Transpose/Reshape图优化功能
+4. 增加Transformer模型性能
+5. 完善Reshape/TP/Mul/Gather消融功能
+6. 优化Concat/Split/Slice的性能
+7. 增加exWindow/SDPA/大尺寸Conv的支持
+8. 优化动态shape的图优化处理流程
+
+2024-4-28
+版本: v2.0.0b8:
+更新内容:
+1. 优化Concat/Split的对齐规则
+2. 修复CodeGen在没有设置输入时的报错
+3. 修复错误捕抓模块的问题
+4. 修复shape推理的死循环问题
+5. 修复inference接口在传入大写的data_format时的报错问题
+
+2024-4-23
+版本: v2.0.0b7:
+更新内容:
+1. 修复gather融合在indices为scalar值时的错误
+
+2024-4-19
+版本: v2.0.0b5:
+更新内容:
+1. 增加对rv1103的i16的混合量化支持
+2. 优化rknn.config错误日志
+3. 优化大尺寸stride的conv的支持
+4. 优化rknnlog异常捕抓模块日志太长、不清晰的问题
+5. 修复静态图动态化时reshape参数错误的问题
+
+2024-4-15
+版本: v2.0.0b4:
+更新内容:
+1. 增加对TopK的部分转换支持
+
+2024-4-12
+版本: v2.0.0b3:
+更新内容:
+1. [RK3588]增加更多Transpose规格的NPU算子支持
+2. 修复fp16的模型加载报错问题
+
+2024-4-9
+版本: v2.0.0b2:
+更新内容:
+1. 增加exSwish的beta属性支持
+2. 修复input_size_list解析错误的问题
+
+2024-4-3
+版本: v2.0.0b1:
+更新内容:
+1. 修复Div算子height/width方向broadcast情况错误
+2. 增加RKNN_FLAG_MODEL_BUFFER_ZERO_COPY标志,用于NPU分配的model
+buffer初始化上下文
+3. 修复部分Transpose和Reshape错误问题
+4. 增加Split/TP/Relu的消除规则
+5. 增加动态shape的模型裁剪和CodeGen支持
+6. 更新对MeanVarNorm/GLU的支持
+7. 修复EinSum/Slice转换问题
+8. 修复量化模型Clip的min值问题
+9. 更新QAT对输入&输出量化参数不一致的支持
+10. 修复常量折叠可能存在的遗留无效常量问题
+
+2024-3-22
+版本: v2.0.0b0:
+更新内容:
+1. 修复部分图优化问题
+2. 更新Matmul支持
+3. 更新稀疏推理功能
+4. 更新codegen功能
+5. 更新onnx_edit功能
+
+2024-2-26
+版本: v1.6.2b0:
+更新内容:
+1. 增加onnx_edit接口
+2. 更新gen_cpp_demo功能
+3. 更新torch 2.1.0的支持
+4. 更新elu/cat支持
+5. 更新量化onnx模型的支持
+6. 更新自定义op用例和文档
+7. 修复部分dilations问题
+
+2024-2-19
+版本: v1.6.1b13:
+更新内容:
+1. [RK3576] 增加target支持
+2. 修复rknn_convert问题
+3. 更新sigmoid支持
+4. 优化transpose/reshape性能
+5. 优化工具包大小
+6. 修复量化参数错误问题
+7. 添加cat的量化支持
+8. 修复reshape优化问题
+9. 更新自定义op的用法
+
+2024-1-28
+版本: v1.6.1b11:
+更新内容:
+1. [RK3588] 增加更多规格Reshape算子NPU支持
+2. 添加rk3576部分支持
+
+2024-1-23
+版本: v1.6.1b9:
+更新内容:
+1. [RK3588] 修复BEVformer模型融合错误问题
+2. 修复bias量化参数问题
+3. 更新MatMul转换支持
+4. 修复图优化可能存在的死循环问题
+5. 更新MeanVariance支持
+
+2024-1-19
+版本: v1.6.1b8:
+更新内容:
+1. [RK3588] 修复Pad算子错误问题
+2. 更新pt的linear/deconv/bn/mul量化op支持
+3. 优化conv+reshape/deconv/性能
+4. 更新量化转换节点的支持
+5. 添加tranpose消除优化
+
+2024-1-15
+版本: v1.6.1b7:
+更新内容:
+1. [RK3588] 增加exMeanVarianceNorm算子支持
+
+2024-1-12
+版本: v1.6.1b6:
+更新内容:
+1. [RK3588] 优化rknn模型内部的layout转换性能
+2. 修复部分adb问题
+3. 修复pt模型的量化dtype问题
+4. 修复opset转换问题
+5. 修复pt模型的部分op支持
+6. 更新自定义op的支持
+7. 更新ScatterND/DeConv/Gather的支持
+8. 添加Concat/Scatternd相关优化
+9. 修复auto_pads与pads相关逻辑
+
+2023-12-26
+版本: v1.6.1b3:
+更新内容:
+1. [RK3566/RK3562] 增加动态权重卷积支持
+2. [Matmul] 修改Matmul API的rknn_matmul_info结构体定义,rknn_matmul_api.h兼容1.5.2版本的头文件
+3. [OP] 修复Not算子出错的Bug
+4. 修复图优化部分bug
+
+2023-12-22
+版本: v1.6.1b1:
+更新内容:
+1. [RK3566] 修复float16 Conv+Activation层融合的错误
+2. [Matmul] 增加Matmul API添加量化参数的功能,rknn_matmul_api.h头文件更新
+3. 更新layernorm支持
+4. 修复图优化部分bug
+5. 添加部分图优化规则
+6. 添加QAT模型的channel支持
+7. 添加float64模型支持
+
+2023-12-19
+版本: v1.6.1b0:
+更新内容:
+1. 修改hybrid_quantization_step1接口生成推荐层逻辑.proposal=False不生成推荐层
+2. 增加部分OP的2纬~6维的图优化支持
+3. 修复图优化部分bug
+4. 添加部分图优化规则
+5. 更新日志提示
+6. 修复部分pb模型问题
+
+2023-11-30
+版本: v1.6.0:
+更新内容:
+1. 优化部分图优化规则
+2. 更新docker镜像为ubuntu20.04/cp38
+3. 更新对cp37/cp39/cp311版本的支持
+4. 添加自定义OP功能
+
+2023-12-11
+版本: v1.5.3b21:
+更新内容:
+1. 修复非对齐channel的Expand算子结果错误问题
+2. [RK3588]修复start=-1, end=-w-1, step=-1的slice算子结果错误问题
+3. [RV1106]:
+ 1) 增加Transpose perm=[1,0,2,3]优化
+ 2) 修复RKNN_QUERY_OUTPUT_ATTR查询fmt错误问题
+4. Matmul API头文件数据结构优化,新app需更新头文件并编译程序
+
+2023-11-24
+版本: v1.5.3b17:
+更新内容:
+1. 修复动态权重卷积的bug
+2. 添加部分结构图优化,如Transformer FFN
+3. 修复部分图优化报错问题
+4. 更新eval_perf&eval_memory功能
+5. 添加部分pytorch的OP支持
+
+2023-11-13
+版本: v1.5.3b15:
+更新内容:
+1. 添加rknn_convert的功能
+2. 更新GLU的支持
+3. 修复部分图优化失效报错
+4. 优化Transformer的FFN结构
+5. 更新对ONNX的opset 12~19的支持
+
+2023-11-03
+版本: v1.5.3b14:
+更新内容:
+1. 支持opset 12~19 的ONNX模型.
+2. 优化RV1103/RV1106 Runtime初始化模型速度.
+3. 优化eval_mem接口显示内容.
+4. 其他若干Bug修复.
+5. 更新dynamic_input对只存在一组shape的支持
+6. 修复常量折叠可能导致的问题
+7. 添加对If的部分支持
+8. 修复onnx模型裁剪导致的问题
+9. 更新rknn.eval_memory功能
+10. 修复新torch版本导致的部分错误
+11. 更新pb/tflite模型的支持
+
+2023-10-27
+版本: v1.5.3b13:
+更新内容:
+1. 修复rknn_set_io_mem接口输入输出内存地址相同导致的错误。
+2. 修复”unknown target error“报错日志。
+3. 其他若干bug修复。
+4. 修复DFP量化问题
+5. 去除对torchvision包的依赖
+6. 修复新版本numpy导致的包错
+
+2023-10-21
+版本: v1.5.3b11:
+更新内容:
+1. 修复部分Slice层生成的rknn模型输出形状不对的Bug.
+2. 修复Conv开启quantize weight后结果错误的Bug.
+3. 修复Runtime显示ddr cycle错误等Bug.
+4. 添加config.quantize_weight的功能
+5. 优化RoiAlign/Softmax/ReduceL2/Gelu的支持
+6. 修复带external权重的fp16模型加载问题
+7. 添加部分Conv融合功能, 提高性能
+8. 更新requirements.txt的部分包依赖
+9. 更新模型剪枝支持
+10. 更新部分功能的用户提示
+11. 更新examples示例
+12. 修复部分量化信息错误导致的精度问题
+13. 添加对cp37/cp39/cp311版本的支持
+14. 更新精度分析功能
+
+2023-9-21
+版本: v1.5.3b7:
+更新内容:
+1. 支持自定义LayerNorm参数,避免float16类型输入上溢出.
+2. 添加config.remove_reshape的功能
+3. 优化Where的支持
+
+2023-9-12
+版本: v1.5.3b6:
+更新内容:
+1. 支持输入类型是int64的Add.
+2. 支持使用子图定义来做混合量化
+3. 修复部分dynamic_input功能报错
+4. 修复部分图优化报错
+5. 优化GEMM的支持
+6. 修复部分caffe模型解析错误问题
+
+2023-9-5
+版本: v1.5.3b2:
+更新内容:
+1. 修复rknn_batch_size>1的动态shape模型特定情况随机错误问题
+2. 更新QAT模型支持
+3. 修复ubuntu16.04存在的报错问题
+
+2023-9-1
+版本: v1.5.3b1(功能未合并到主分支):
+更新内容:
+1. 动态权重的普通卷积支持
+2. 添加cocnat/split/slice/reshape的图优化
+3. 添加导出常量输出的功能
+4. 修复mmse可能存在的报错问题
+
+2023-8-28
+版本: v1.5.3b0(功能未合并到主分支):
+更新内容:
+1. 优化Transpose+Matmul结构的GPU运算效率
+2. 优化dynamic_input功能
+3. split并行节点的优化
+4. 优化部分库对python版本的依赖
+5. 添加自定义op支持
+
+2023-8-25
+版本: v1.5.2:
+更新内容:
+1. 添加glu支持
+2. 更新examples
+3. 完善dynamic_input功能
+4. 优化transformer模型支持
+5. 添加torch的部分op支持
+6. 更新rknn_batch_size支持
+
+2023-7-14
+版本: v1.5.1b19:
+更新内容:
+1. 优化quantize_weight功能,优化部分网络生成的rknn模型大小.
+
+2023-7-3
+版本: v1.5.1b18:
+更新内容:
+1. 增加Matmul层GPU target支持
+2. 增加where+softmax子图优化
+3. 修复load_rknn在dynamic_input启用时的部分问题
+4. 添加新的图优化规则
+5. 更新对大模型动态输入的支持
+
+2023-6-29
+版本: v1.5.1b17:
+更新内容:
+1. 修复LSTM的重复调用rknn_inputs_set导致卡死问题
+2. 修复Transpose输出内存分配过大问题
+3. 优化部分单通道输入大分辨率模型效率
+4. 修复图优化规则报错问题
+5. 修复原生动态模型的大部分问题
+
+2023-6-25
+版本: v1.5.1b16:
+更新内容:
+1. 修复动态shape LSTM的错误问题
+2. 更新config.target_platform的默认值
+3. 修复原生动态模型的支持问题
+
+2023-6-16
+版本: v1.5.1b13:
+更新内容:
+1. 动态shape rknn_batch_size > 1的支持
+2. 更新动态输入的支持
+3. 更新部分图优化支持
+4. 添加对原生动态模型的初步支持
+
+2023-6-9
+版本: v1.5.1b10:
+更新内容:
+1. reshape/transpose等胶水算子的layout优化
+
+2023-6-9
+版本: v1.5.1b9:
+更新内容:
+1. 修复动态shape最高维度非1情况结果错误的bug
+
+2023-6-9
+版本: v1.5.1b8:
+更新内容:
+1. [C API]修复多核多batch模式运行结果错误的Bug
+2. [C API]优化rknn_init耗时
+3. [C API]增加CURRENT_NATIVE_INPUT/OUTPUT_ATTR属性查询
+4. 修复部分模型internal 内存偏大的问题
+5. 修复动态模型支持问题
+6. 动态模型添加对rknn_batch_size的支持
+7. 更新部分图优化支持
+
+2023-6-1
+版本: v1.5.1b3:
+更新内容:
+1. 修复动态shape性能分析/内存分析失败的Bug
+2. 降低导出RKNN模型大小
+3. 添加通过加载多个onnx模型来仿真动态模型的实验性功能
+
+2023-5-30
+版本: v1.5.1b2:
+更新内容:
+1. [新特性]采用预编译模型,提高Runtime初始化RKNN模型效率。要求重新导出RKNN模型并更新Runtime,若不使用新特性无需重新导出
+2. 修复稀疏化的报错和部分精度问题
+3. 更新cp38/cp310的依赖库版本
+4. 混合量化添加对子图进行混合量化的功能
+
+2023-5-27
+版本: v1.5.1b1:
+更新内容:
+1. 修复Pad算子的错误
+2. 添加Mul的广播部分支持
+
+2023-5-18
+版本: v1.5.0:
+更新内容:
+1. 更新config.dynamic_input的接口定义
+2. 修复部分op属性获取失败的问题
+
+2023-5-17
+版本: v1.4.6b2:
+更新内容:
+1. 修复RK3562 多batch rknn模型C API运行错误的Bug
+
+2023-5-15
+版本: v1.4.6b1:
+更新内容:
+1. 修复普通API多输入多输出模型动态shape出错的bug
+2. 增加RK3562 Matmul API支持
+3. 修复第一层为Reshape时dynamic_input失败的问题
+4. 修复opset12~15可能存在的问题
+
+2023-5-11
+版本: v1.4.6b0:
+更新内容:
+1. 优化RKNN_FLAG_COLLECT_MODEL_INFO_ONLY初始化效率
+2. 修复1x1x1x1两个feature Add算子转换Bug
+3. 修复load_rknn加载老版本模型出错的兼容性问题
+4. 添加opset13/14/15的部分支持 (试验性质)
+5. 修复eval_perf导出csv时可能会报错的问题
+6. 修复load_rknn报错问题
+7. 添加非4维的ReduceXXX支持
+
+2023-5-6
+版本: v1.4.5b3:
+更新内容:
+1. 增加RKNN_MIN_TIMEOUT_MS环境变量设置NPU提交任务超时的阈值
+2. 添加一维Where的支持
+3. 修复大模型包含Constant节点报错的问题
+4. 优化权重稀疏化的性能
+
+2023-4-28
+版本: v1.4.5b2:
+更新内容:
+1. 修复dynamic_input普通api结果错误问题
+2. 修复非4维输入连板推理报错问题
+
+2023-4-27
+版本: v1.4.5b1:
+更新内容:
+1. 修复dynamic_input连板推理输出shape报错问题
+2. 添加matmul前后transpose的消除规则, 并优化matmul性能
+3. 修复大模型编译报错问题
+4. 添加load_rknn的dynamic_input支持
+5. 修复代码生产时resize出错的问题
+
+2023-4-26
+版本: v1.4.5b0:
+更新内容:
+1. [RK3562] 优化Transformer模型中的transpose/reshape多算子级联的性能
+2. 增加后缀为.torchscript的pytorch文件格式支持
+
+2023-4-25
+版本: v1.4.4b5:
+更新内容:
+1. 修复dynamic_input在存在Reshape下的推理报错问题
+2. 增加dynamic_input多轴动态支持
+3. 更新cpp部署代码生成功能
+
+2023-4-23
+版本: v1.4.4b3:
+更新内容:
+1. 添加dynamic_input功能
+2. 修复3维deconv报错问题
+3. 更新大模型转换支持
+4. 优化模拟器推理性能
+5. 添加cpp部署代码生成功能
+6. 修复load_rknn的推理问题
+
+2023-4-14
+版本: v1.4.3b12:
+更新内容:
+1. [RK3562]增加指定层跑CPU/GPU/NPU特性
+2. 修复concat优化规则
+3. 添加op_target功能
+
+2023-4-11
+版本: v1.4.3b10:
+更新内容:
+1. 更新rknn编译器
+
+2023-4-10
+版本: v1.4.3b9:
+更新内容:
+1. 更新tensorflow QAT支持
+2. 优化大模型的转换内存和性能
+3. 修复图优化问题,并添加部分新规则
+4. 修复mmse报错问题
+5. 优化conv的拆分规则
+6. 修复混合量化问题
+7. 添加RMSNorm支持
+8. load_onnx添加input_initial_val参数
+9. 修复onnxoptimizer报错问题
+
+2023-3-28
+版本: v1.4.3b4:
+更新内容:
+1. 修复5维slice的问题
+
+2023-3-27
+版本: v1.4.3b3:
+更新内容:
+1. [RK3566]优化CNN+LSTM结构模型的内存
+2. 优化Concat性能
+3. load_tflite/load_tensorflow添加input_is_nchw参数
+
+2023-3-23
+版本: v1.4.3b2:
+更新内容:
+1. mul/add/div/sub算子优化
+2. 修复多级maxpool量化问题
+
+2023-3-21
+版本: v1.4.3b1:
+更新内容:
+1. 修复Expand算子Bug
+
+2023-3-21
+版本: v1.4.3b0:
+更新内容:
+1. [RK3562]增加内部Buffer循环复用功能
+2. [RK3562]优化多batch layerNorm算子精度
+3. [RK3566]int8 Matmul CPU算子优化
+4. [全平台]expand NPU OP支持
+5. [全平台]fp16模型输入耗时优化
+6. 完善Cast算子的支持
+7. 修复remove_weight/多输入归一化参数匹配错误等Bug
+8. 更新常量折叠支持
+9. 更新eval_perf功能
+10. 增加float16模型的支持
+11. 优化常量共享的模型
+
+2023-3-9
+版本: v1.4.2b6:
+更新内容:
+1. RK3562平台Bug修复
+2. 增加model_pruning控制,并支持deconv,以及Bug修复
+3. 增加If/Loop的部分转换支持
+4. 修复MMSE部分模型失败的问题
+5. 优化仿真器的结果
+6. 增加python3.10的支持
+7. 优化转换内存占用
+8. 增加部分非4维Op支持
+
+2023-2-15
+版本: v1.4.2b1:
+更新内容:
+1. 修复RK3562查询的size_with_stride大小错误问题
+
+2023-2-14
+版本: v1.4.2b0:
+更新内容:
+1. 更新neg支持
+2. 增加min/max的融合优化
+3. 增加了RK3562平台支持
+
+2023-2-8
+版本: v1.4.1b23:
+更新内容:
+1. 修复特定stride反卷积算子的Bug
+2. 更新MatMul的perchannel量化支持
+3. 更新动态图检测功能
+4. 优化where的量化支持
+
+2023-2-2
+版本: v1.4.1b22:
+更新内容:
+1. 增加Equal算子对Bool类型支持
+2. 修复Matmul算子/exLayerNorm算子的Bug
+3. 更新equal/slice/cast/pad/ConvTranspose支持
+4. 更新QAT模型支持
+5. 移除bfloat16包依赖
+
+2023-1-13
+版本: v1.4.1b21:
+更新内容:
+1. 修复RK3588 Matmul接口错误
+2. 修复4通道输入float16类型模型在RK356X平台查询虚宽错误问题
+3. 模型不填写量化信息情况下,默认Tensor量化类型为float16
+4. 增加unk__xxx无效shape支持
+5. 更新abs/dataconvert支持
+6. 优化模型剪枝功能
+
+2023-1-6
+版本: v1.4.1b19:
+更新内容:
+1. [功能]增加Conv+Add+Relu子图融合。
+2. 修复Conv+Add在量化参数不一致情况下融合的Bug。
+3. 修复RK3588 大kernel卷积的Bug。
+4. 增加模型剪枝功能
+5. 优化Sigmoid的量化参数
+6. 增加rk3562的支持
+
+2022-12-17
+版本: v1.4.1b17:
+更新内容:
+1. [优化]增加NPU输出NCHW数据支持。
+2. [功能]增加conv+add+relu融合支持。
+3. 修复最高维度非1模型MaxPool算子错误的Bug。
+4. 修复最高维度非1模型首层Conv错误的Bug。
+5. 修改4维npy的layout定义
+6. 优化dataconvert/gather/transpose/mul/maxpool/sigmoid/pad/conv/relu/softmax支持
+7. 增加aten::upsample_nearest2d支持
+8. 修复仿真器在perchannel下可能的溢出问题
+9. 增加更多的转换错误提示
+10. 更新混合量化支持
+
+2022-11-26
+版本: v1.4.1b14:
+更新内容:
+1. 修复寄存器位宽限制警告。
+2. 优化Concat CPU算子效率。
+3. 增加2维layernorm支持
+4. 更新MatMul支持
+
+2022-11-19
+版本: v1.4.1b13:
+更新内容:
+1. [重要]Android NDK编译器升级到r23b版本,APP建议使用该版本NDK重新编译。
+2. LSTM结构更新升级,需要重新转换模型。
+3. RK356X增加Transpose优化。
+4. RK356X模型非对齐通道的float类型NCHW输出效率优化。
+5. 增加常量输出节点删除功能
+6. MMSE支持无法batch扩维的模型
+7. 修复resize/clip缺失属性的问题
+8. 增加swish/dataconvert/softmax/lstm/layernorm相关优化
+9. 增加离群值检测功能
+10. 优化非4维OP的性能
+
+2022-11-01
+版本: v1.4.1b12:
+更新内容:
+1.修复LSTM模型多次转换结果不一致问题。
+2.改进onnx模型裁剪功能
+
+2022-10-29
+版本: v1.4.1b11:
+更新内容:
+1.修复Runtime外部分配内接口运行LSTM错误问题。
+2.修复Runtime rknn_dup_context接口运行LSTM错误问题。
+3.优化大模型转换性能
+4.添加Loop/Scatter转换支持
+
+2022-10-24
+版本: v1.4.1b10:
+更新内容:
+1.修复LSTM兼容性问题。
+2.修复RK3588输入自动填充虚宽值的重复运行错误的bug。
+3.修复出现size=0的中间tensor刷cache失败的问题(模型需重新生成)。
+4.增加IN、Swish非4维支持
+5.添加tflite支持perchannel的QAT模型
+
+2022-10-19
+版本: v1.4.1b9:
+更新内容:
+1.修复RV1106 rknn_detroy接口内存泄漏问题。
+
+2022-10-18
+版本: v1.4.1b8:
+更新内容:
+1.修复非LSTM模型共享权重时rknn_init失败的bug。
+
+2022-10-17
+版本: v1.4.1b7:
+更新内容:
+1.修复RK3588分支合并后的bug。
+
+2022-10-17
+版本: v1.4.1b6:
+更新内容:
+1.修复大分辨率输入的bug。
+2.优化无效pad
+
+2022-10-13
+版本: v1.4.1b5:
+更新内容:
+1.修复32-bit库matmul错误的bug。
+2.添加FAQ文档
+3.更新图优化规则
+4.调节MatMul量化方式
+
+2022-10-12
+版本: v1.4.1b4:
+更新内容:
+1.修复LSTM共享权重失败问题。
+2.更新图优化规则
+
+2022-10-10
+版本: v1.4.1b3:
+更新内容:
+1. LSTM寄存器配置内存占用的优化。
+2. 优化MMSE量化算法
+3. 优化KL量化算法
+
+2022-9-30
+版本: v1.4.1b2:
+更新内容:
+1. 关闭寄存器差量支持
+2. 增加Batchnorm+Relu融合支持
+3. 增加32-bit Runtime库Neon优化支持。
+4. 优化rknn_init空初始化性能。
+5. 更新精度分析功能
+6. 修复QAT模型的hardsigmoid等问题
+7. 修复lstm/gru图优化问题
+8. 更新图优化规则
+
+2022-9-14
+版本: v1.4.1b1:
+更新内容:
+1. 增加寄存器差量支持
+2. 修复lstm的bug
+
+2022-9-14
+版本: v1.4.1b0:
+更新内容:
+1. 增加rknn.config接口增加npu_do_output_nhwc配置,开启或关闭NPU直接输出NHWC的特性
+2. 修复QAT模型解析问题
+
+
+------------------------------------------------------------
+2022-8-20
+版本: v1.4.0:
+更新内容:
+1. 升级相关依赖包到主流版本
+2. 添加更多2/3/5维度的Op支持
+3. 更新config/init_runtime等接口
+4. 更新LSTM等Op支持
+5. 添加yuv输入支持
+6. 更新QAT模型支持
+
+2022-7-2
+版本: v1.3.4b5:
+更新内容:
+1. rknn-toolkit2:
+ 1) optimize_onnx接口
+ a. 在设置optimization_level=2时,关闭conv+add融合。
+ b. 保留BatchNormalize算子带的量化参数。
+ 2) RK3588屏蔽NPU直接输出NHWC layout的支持, RK3566/RV1106保留该功能。
+2. C API:
+ 1) RK3588/RK3566/RV1106支持传入一个包含rknn模型的大文件路径,rknn_init接口设置包含偏移和真实rknn模型大小的rknn_init_extend结构体指针。
+
+
+------------------------------------------------------------
+2021-4-22
+版本: v1.3.0:
+更新内容:
+1. 新功能: python3.8/ubuntu20.04 平台支持
+2. 修复一些已知的bug:
+ 1) 修复了一些图优化和量化bug
+
+2021-4-7
+版本: v1.2.5:
+更新内容:
+1. 新功能: rv1103/rv1109平台的支持.
+2. 修复一些已知的bug:
+ 1) 修复了一些QAT模型转换问题
+ 2) 修复了一些图优化bug
+
+
+2021-1-27
+版本: v1.2.1-beta:
+更新内容:
+1. 新功能: 多batch的NHWC格式输入时,在H维度,有效元素个数与实际内存中的元素个数不一致时,支持H方向实际元素个数按照h_stride设置.
+2. 修复一些已知的bug:
+ 1) LSTM算子内部变量重名的问题.
+
+
+------------------------------------------------------------
+2021-1-12
+版本:v1.2.0
+更新内容:
+1. 新功能: rk3588平台的支持; rknn模型加密支持; tensorflow/tflite/pytorch量化感知模型支持; 增加了一些新的 op 支持: InstanceNormalization, Swish, Conv1D等(详见 op support list);增加了参数量计算以及算力分析
+2. examples 更新:增加了从 pytorch 转 onnx 的转换 demo:resnet18_export_onnx ;增加了pytorch量化感知模型的加载demo:resnet18_qat demo;增加了模型加密功能:添加了3588平台 rknn 转换 demo
+3. 接口更改:移除了 config,load_caffe,load_tensorflow等接口的一些不必要的参数设置,更新了 eval_perf 接口,详细改动见Uer_Guide文档
+4. 修复一些已知的bug:
+ 1) 修复了一些模型无法转换rknn的问题
+ 2) 修复了一些图优化bug
+ 3) 修复了一些模型推理结果错误的问题
+ 4) 修复了 pytorch、tflite 某些 op 转换失败的问题
+5. 优化: 精度分析耗时优化; 模型转换和量化耗时优化
+
+
+------------------------------------------------------------
+2021-8-12
+版本:v1.1.0
+更新内容:
+1. 新功能: LSTM,GRU的支持;增加了accuracy_analysis对比项目;增加了一些op支持:caffe hardswish;onnx gather,reduceMax等op;更新了更全面的图优化规则。
+2. examples更新:增加了yolov5的demo
+3. 修复一些已知的bug:
+ 1)修复了一些模拟器的推理结果错误问题
+ 2)修复了一些图优化bug
+ 3)修复了一些大模型无法转换rknn的问题
+ 4)修复了多输入的转换和推理bug
+4. 更新了文档,更新了OP支持列表
+
+2021-6-30
+版本:v1.1.0beta
+更新内容:
+1. 新功能: 混合量化功能(支持自定义是否量化以及量化参数修改);完善了 accuracy_analysis 对比功能(包括连板对比结果)
+2. examples更新:增加了常用接口的demo示例:accuracy_analysis、batch_size、hybrid_quant、load_quantized_model、mmse、multi_input_test
+3. 修复一些已知的bug:
+ 1)修复了一些int8/fp16模型的转换问题以及op精度问题
+ 2)修复了一些图优化bug,修复了一些依赖的版本问题
+4. 更新了文档,更新了OP支持列表
+
+
+------------------------------------------------------------
+2021-4-30
+版本:v1.0.0
+更新内容:
+1. 新功能: 卷积类的per channel量化功能;添加了config中custom_inf的模型信息设置、img_quant_RGB2BGR设置;添加了eval performance的性能测试接口;增加了版本打印功能
+2. OP支持:1) 添加了Caffe新OP支持:Power/Tile/Eltwise(Max)/去除了normalize维度的限制; 2) 添加了onnx新OP支持:HardSigmoid/Pow/Tile
+3. 修复一些已知的bug:
+ 1) 修复了caffe FC的输出shape以及name的错误
+ 2) 优化了mmse的量化性能
+ 3)修复caffe的Pooling层的输出shape计算错误
+ 4)修复了caffe slice丢弃了其中一个输出的inference bug
+ 5)修复了一些模型优化的bug
+4. 弃置了reorder_channel的config设置,由用户自行保证inference输入数据的channel正确性
+5. 更新了文档,更新了OP支持列表
+
+
+------------------------------------------------------------
+2021-4-2
+版本:v0.7.0
+更新内容:
+1. 新功能: 新的量化算法支持(mmse), 添加支持tensorflow的预量化模型导入
+2. 添加了Caffe新OP支持:relu6/ConvolutionDepthwise/Transpose/reorg
+3. 修复一些已知的bug:
+ 1) 增加concat的非channel维度,非4维输入的支持
+ 2) 修复了第一层是scale的预处理bug
+ 3)更新了onnxruntime==1.7.0的版本
+4. 更新了文档,更新了OP支持列表
+
+
+------------------------------------------------------------
+2021-3-1
+版本:v0.6.0
+更新内容:
+1. 新功能: caffe load API添加指定输入name的接口;添加了caffe lrn(WithinChannel)的支持
+2. 添加了Caffe新OP支持:crop/flatten/normalize/proposal/reduction
+3. 添加了onnx/pytorch/tensorflow/darknet/tflite新OP支持
+4. 移除了aciq以及Kl散度量化功能
+5. 修复一些已知的bug:
+ 1) 最后一层是reshape转换bug;
+ 2) 修复了caffe中InnerProduct随机生成blob的bug;
+ 3) 修复了过大的size导致GlobalAvgPool GlobalMaxPool crash的问题;
+ 4) 修复了第一层是RoIpooling的维度错误;
+ 5) 修复了SSD设备端推理错误的问题等。
+6. 更新了文档,增加了OP支持列表
diff --git a/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/Dockerfile_ubuntu_20_04_for_cp38 b/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/Dockerfile_ubuntu_20_04_for_cp38
new file mode 100644
index 0000000000000000000000000000000000000000..24d1dcb72bd8f90898c911881a0b1582f2b09785
--- /dev/null
+++ b/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/Dockerfile_ubuntu_20_04_for_cp38
@@ -0,0 +1,27 @@
+FROM ubuntu:20.04
+
+COPY sources_bionic.list /etc/apt/sources.list
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update \
+ && apt-get install -y python3 python3-dev python3-pip gcc vim libprotobuf-dev zlib1g zlib1g-dev libsm6 \
+ && apt-get install -y libgl1 libglib2.0-0 android-tools-adb
+
+RUN cd /usr/bin \
+ && ln -sfn idle3 idle \
+ && ln -sfn pydoc3 pydoc \
+ && ln -sfn python3 python \
+ && ln -sfn python3-config python-config \
+ && ln -sfn pip3 pip \
+ && ls -al
+
+RUN python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host=pypi.tuna.tsinghua.edu.cn
+RUN pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
+RUN pip3 config set install.trusted-host pypi.tuna.tsinghua.edu.cn
+
+RUN python3 --version
+RUN pip3 --version
+COPY rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl
+RUN pip3 install torch==1.10.1
+RUN pip3 install rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl
diff --git a/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl b/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..db60a57870ff1ade743420d18f9b641fc62e47eb
--- /dev/null
+++ b/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce5f162e56e4e0117b939b4dd59e12fbf69d4d8503b7d4f17d88cba1a9492aab
+size 48556997
diff --git a/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/sources_bionic.list b/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/sources_bionic.list
new file mode 100644
index 0000000000000000000000000000000000000000..dab0a2ea2c399c594d67353463ce72a3501196fa
--- /dev/null
+++ b/rknn-toolkit2/docker/docker_file/ubuntu_20_04_cp38/sources_bionic.list
@@ -0,0 +1,14 @@
+deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
+
+deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
+
+deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
+
+deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
+
+deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/README.md b/rknn-toolkit2/examples/caffe/mobilenet_v2/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..d5d5be6fa53cc657edaf7a30655b1d8a446c5e64
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/README.md
@@ -0,0 +1,30 @@
+# Caffe MobileNet V2
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/shicai/MobileNet-Caffe
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3566 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[155] score:0.994629 class:"Shih-Tzu"
+[154] score:0.001950 class:"Pekinese, Pekingese, Peke"
+[204] score:0.001950 class:"Lhasa, Lhasa apso"
+[283] score:0.000674 class:"Persian cat"
+[196] score:0.000109 class:"miniature schnauzer"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/dataset.txt b/rknn-toolkit2/examples/caffe/mobilenet_v2/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5ff21133b1a082f10275eb8b12595e270635d308
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/dataset.txt
@@ -0,0 +1,20 @@
+./imgs/ILSVRC2012_val_00000665.JPEG
+./imgs/ILSVRC2012_val_00001123.JPEG
+./imgs/ILSVRC2012_val_00001129.JPEG
+./imgs/ILSVRC2012_val_00001284.JPEG
+./imgs/ILSVRC2012_val_00003026.JPEG
+./imgs/ILSVRC2012_val_00005276.JPEG
+./imgs/ILSVRC2012_val_00006178.JPEG
+./imgs/ILSVRC2012_val_00007829.JPEG
+./imgs/ILSVRC2012_val_00009338.JPEG
+./imgs/ILSVRC2012_val_00010420.JPEG
+./imgs/ILSVRC2012_val_00011878.JPEG
+./imgs/ILSVRC2012_val_00011240.JPEG
+./imgs/ILSVRC2012_val_00012037.JPEG
+./imgs/ILSVRC2012_val_00012351.JPEG
+./imgs/ILSVRC2012_val_00012470.JPEG
+./imgs/ILSVRC2012_val_00020169.JPEG
+./imgs/ILSVRC2012_val_00020173.JPEG
+./imgs/ILSVRC2012_val_00021224.JPEG
+./imgs/ILSVRC2012_val_00024249.JPEG
+./imgs/ILSVRC2012_val_00025601.JPEG
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/dog_224x224.jpg b/rknn-toolkit2/examples/caffe/mobilenet_v2/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00000665.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00000665.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..0bf97ca1379b5660759bdd4b9fd1fff64eb8b7e2
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00000665.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:daf8aaae07f31e21bbaab3a354d3988a01e11870c3f084916deacc51efc717c2
+size 35733
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001123.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001123.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..0eaab99aa7998f70a6d167d0b7ff0de90b88e0ee
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001123.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dabdef1f03f630562080e0c81164cb377a08b99a75aee5c10cecbf158cd50db0
+size 64718
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001129.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001129.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..841eb47c8a2a992a59fe6e32d74c79de1868b4a7
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001129.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71c6c38fafa312ffe59f8677f34ef0deca765159f88cc7bc658aa8fa46ab849f
+size 59505
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001284.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001284.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..20e63b5399b084c5b9630da6374b726da6dd3795
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00001284.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fde063ceecb6e3b60b08ddf9e92103e4209eca811b8b1d5e30b5ef521d848264
+size 39046
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00003026.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00003026.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..75541fb8d8c544b45c5edd37729b8e4775f64cf0
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00003026.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36cb013938e09bab0d77c0ee55b1ceae9fa7a02b381de89cf36c4ce1b1611d51
+size 45399
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00005276.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00005276.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..ca1b937bfbf036e9341bf7033b71e78388f9f180
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00005276.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be90f9427f845a9217f5cb2ed677d69b77639f45bcb86a65bb31b7cbe301d3ab
+size 40154
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00006178.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00006178.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..34d7a9b3d33bd1b5cd6202fdec6aa3ed353d8c74
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00006178.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb68e32513cec7f5a6d9d87c9904609e2b79c81f441f1ab0cefe5ead86cc8b78
+size 34758
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00007829.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00007829.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..9636405fa93db3cb7b4348433d8695090fd428b7
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00007829.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e2514468cacb551e6bd630320ef25c2fa71c9edce3c3f3e0e5961f3bd6d0349c
+size 29408
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00009338.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00009338.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..6c44f4e634ac8fb02a1c469a636eec44904c5b79
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00009338.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:55beedd32bd6cb941c0dfbd3ff8db78ae09fe5d8a0a8f49de9245d391936be91
+size 54934
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00010420.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00010420.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..bf24eabf1ba093b722988becb892e314814a4dcc
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00010420.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:adf5e92ad063391069e5733fad0e866b631ba9b3195d2d1c35aae4fd53e51fe5
+size 37224
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00011240.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00011240.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..817ec2baea400934a09f6da95d0f30ba9598d1bc
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00011240.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5373f94639c1f4fd7d798857b58f6b47ea78a8f3b4704033f039c4f0011778ca
+size 57348
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00011878.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00011878.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..2582825a7edcc0122b4a3605bd03c904bbf7c9d8
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00011878.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d0919e346c93387d9e7af36534ee4d3f66554ed70bda151e8615cd83b3fe4bb
+size 46427
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012037.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012037.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..c94b9dd764b1fd62f467033719e804fec42d8fcf
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012037.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:77dcba5390a4ab726ae86aec0da4146e279c80b8b5ec5b7e306b1cc6cd34a0bf
+size 39699
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012351.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012351.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..d8f04f4175b22968a247495b6b1b68524ad92808
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012351.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:795ad0816d4724027bf02a626be630ff90d7ebd8a3bb84746ee06e4292882e8f
+size 46567
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012470.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012470.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..51c3a82fdb83857eecc3b0bdf3df695497e15505
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00012470.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7e0c2019df22cf5581b5e9b36135ab193dbec3f750bcdef85c6e26a533952a7
+size 37044
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00020169.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00020169.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..8d027a6564c5facd8e6004bda0f60692b4ded5d8
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00020169.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee0be764391438507764931bad27442eaac1db84f4e3a3f7282e542217b432f7
+size 50627
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00020173.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00020173.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..f3dac1512ffac0931744eaf974234485d4161078
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00020173.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f69bbca0c50482848b2e453e949384154b61b8bdd9ab2ca64fe1557019d1c5d
+size 56171
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00021224.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00021224.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..daa1f3a1719c464123072989a6eb6ea3472eb08c
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00021224.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6cde8ec23fdbb783cacb0aa5edbfb8c389b54c19c8047fec8da6d8efaf55c09
+size 56670
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00024249.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00024249.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..2d308fc24226656658ed8920da3707f15cb54d5a
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00024249.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf79f4662be54f552b62a83c315944888b2fc4e6306fedd7f77d7e638e2d0d78
+size 30549
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00025601.JPEG b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00025601.JPEG
new file mode 100755
index 0000000000000000000000000000000000000000..3bf5ce80bc04a8b2259f92fa7944551190b04359
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/imgs/ILSVRC2012_val_00025601.JPEG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7f8d8f591d3b67ddbaf978b63fe9cdbc4f80c888999ecf70ff6ee0d3abb2530
+size 38027
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/labels.txt b/rknn-toolkit2/examples/caffe/mobilenet_v2/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/mobilenet_v2.caffemodel b/rknn-toolkit2/examples/caffe/mobilenet_v2/mobilenet_v2.caffemodel
new file mode 100755
index 0000000000000000000000000000000000000000..584b45b3b709b2b5f10db821eb5ab1183f1ba075
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/mobilenet_v2.caffemodel
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3124ce7abd258c7f35a2c586576bee8116934fa2a8556e4e528041859dd753f
+size 14186496
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/mobilenet_v2_deploy.prototxt b/rknn-toolkit2/examples/caffe/mobilenet_v2/mobilenet_v2_deploy.prototxt
new file mode 100755
index 0000000000000000000000000000000000000000..a6465e8c50ce1d90ee870db2ece75752e0a41bf3
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/mobilenet_v2_deploy.prototxt
@@ -0,0 +1,3417 @@
+name: "MOBILENET_V2"
+# transform_param {
+# scale: 0.017
+# mirror: false
+# crop_size: 224
+# mean_value: [103.94,116.78,123.68]
+# }
+input: "data"
+input_dim: 1
+input_dim: 3
+input_dim: 224
+input_dim: 224
+layer {
+ name: "conv1"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv1/bn"
+ type: "BatchNorm"
+ bottom: "conv1"
+ top: "conv1/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv1/scale"
+ type: "Scale"
+ bottom: "conv1/bn"
+ top: "conv1/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu1"
+ type: "ReLU"
+ bottom: "conv1/bn"
+ top: "conv1/bn"
+}
+layer {
+ name: "conv2_1/expand"
+ type: "Convolution"
+ bottom: "conv1/bn"
+ top: "conv2_1/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_1/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv2_1/expand"
+ top: "conv2_1/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_1/expand/scale"
+ type: "Scale"
+ bottom: "conv2_1/expand/bn"
+ top: "conv2_1/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu2_1/expand"
+ type: "ReLU"
+ bottom: "conv2_1/expand/bn"
+ top: "conv2_1/expand/bn"
+}
+layer {
+ name: "conv2_1/dwise"
+ type: "Convolution"
+ bottom: "conv2_1/expand/bn"
+ top: "conv2_1/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 32
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv2_1/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv2_1/dwise"
+ top: "conv2_1/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_1/dwise/scale"
+ type: "Scale"
+ bottom: "conv2_1/dwise/bn"
+ top: "conv2_1/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu2_1/dwise"
+ type: "ReLU"
+ bottom: "conv2_1/dwise/bn"
+ top: "conv2_1/dwise/bn"
+}
+layer {
+ name: "conv2_1/linear"
+ type: "Convolution"
+ bottom: "conv2_1/dwise/bn"
+ top: "conv2_1/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 16
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_1/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv2_1/linear"
+ top: "conv2_1/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_1/linear/scale"
+ type: "Scale"
+ bottom: "conv2_1/linear/bn"
+ top: "conv2_1/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "conv2_2/expand"
+ type: "Convolution"
+ bottom: "conv2_1/linear/bn"
+ top: "conv2_2/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 96
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_2/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv2_2/expand"
+ top: "conv2_2/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_2/expand/scale"
+ type: "Scale"
+ bottom: "conv2_2/expand/bn"
+ top: "conv2_2/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu2_2/expand"
+ type: "ReLU"
+ bottom: "conv2_2/expand/bn"
+ top: "conv2_2/expand/bn"
+}
+layer {
+ name: "conv2_2/dwise"
+ type: "Convolution"
+ bottom: "conv2_2/expand/bn"
+ top: "conv2_2/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 96
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 96
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv2_2/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv2_2/dwise"
+ top: "conv2_2/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_2/dwise/scale"
+ type: "Scale"
+ bottom: "conv2_2/dwise/bn"
+ top: "conv2_2/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu2_2/dwise"
+ type: "ReLU"
+ bottom: "conv2_2/dwise/bn"
+ top: "conv2_2/dwise/bn"
+}
+layer {
+ name: "conv2_2/linear"
+ type: "Convolution"
+ bottom: "conv2_2/dwise/bn"
+ top: "conv2_2/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 24
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_2/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv2_2/linear"
+ top: "conv2_2/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_2/linear/scale"
+ type: "Scale"
+ bottom: "conv2_2/linear/bn"
+ top: "conv2_2/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "conv3_1/expand"
+ type: "Convolution"
+ bottom: "conv2_2/linear/bn"
+ top: "conv3_1/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 144
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_1/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv3_1/expand"
+ top: "conv3_1/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_1/expand/scale"
+ type: "Scale"
+ bottom: "conv3_1/expand/bn"
+ top: "conv3_1/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu3_1/expand"
+ type: "ReLU"
+ bottom: "conv3_1/expand/bn"
+ top: "conv3_1/expand/bn"
+}
+layer {
+ name: "conv3_1/dwise"
+ type: "Convolution"
+ bottom: "conv3_1/expand/bn"
+ top: "conv3_1/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 144
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 144
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv3_1/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv3_1/dwise"
+ top: "conv3_1/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_1/dwise/scale"
+ type: "Scale"
+ bottom: "conv3_1/dwise/bn"
+ top: "conv3_1/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu3_1/dwise"
+ type: "ReLU"
+ bottom: "conv3_1/dwise/bn"
+ top: "conv3_1/dwise/bn"
+}
+layer {
+ name: "conv3_1/linear"
+ type: "Convolution"
+ bottom: "conv3_1/dwise/bn"
+ top: "conv3_1/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 24
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_1/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv3_1/linear"
+ top: "conv3_1/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_1/linear/scale"
+ type: "Scale"
+ bottom: "conv3_1/linear/bn"
+ top: "conv3_1/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_3_1"
+ type: "Eltwise"
+ bottom: "conv2_2/linear/bn"
+ bottom: "conv3_1/linear/bn"
+ top: "block_3_1"
+}
+layer {
+ name: "conv3_2/expand"
+ type: "Convolution"
+ bottom: "block_3_1"
+ top: "conv3_2/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 144
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_2/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv3_2/expand"
+ top: "conv3_2/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_2/expand/scale"
+ type: "Scale"
+ bottom: "conv3_2/expand/bn"
+ top: "conv3_2/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu3_2/expand"
+ type: "ReLU"
+ bottom: "conv3_2/expand/bn"
+ top: "conv3_2/expand/bn"
+}
+layer {
+ name: "conv3_2/dwise"
+ type: "Convolution"
+ bottom: "conv3_2/expand/bn"
+ top: "conv3_2/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 144
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 144
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv3_2/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv3_2/dwise"
+ top: "conv3_2/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_2/dwise/scale"
+ type: "Scale"
+ bottom: "conv3_2/dwise/bn"
+ top: "conv3_2/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu3_2/dwise"
+ type: "ReLU"
+ bottom: "conv3_2/dwise/bn"
+ top: "conv3_2/dwise/bn"
+}
+layer {
+ name: "conv3_2/linear"
+ type: "Convolution"
+ bottom: "conv3_2/dwise/bn"
+ top: "conv3_2/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_2/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv3_2/linear"
+ top: "conv3_2/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_2/linear/scale"
+ type: "Scale"
+ bottom: "conv3_2/linear/bn"
+ top: "conv3_2/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "conv4_1/expand"
+ type: "Convolution"
+ bottom: "conv3_2/linear/bn"
+ top: "conv4_1/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 192
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_1/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv4_1/expand"
+ top: "conv4_1/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_1/expand/scale"
+ type: "Scale"
+ bottom: "conv4_1/expand/bn"
+ top: "conv4_1/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_1/expand"
+ type: "ReLU"
+ bottom: "conv4_1/expand/bn"
+ top: "conv4_1/expand/bn"
+}
+layer {
+ name: "conv4_1/dwise"
+ type: "Convolution"
+ bottom: "conv4_1/expand/bn"
+ top: "conv4_1/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 192
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 192
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv4_1/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv4_1/dwise"
+ top: "conv4_1/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_1/dwise/scale"
+ type: "Scale"
+ bottom: "conv4_1/dwise/bn"
+ top: "conv4_1/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_1/dwise"
+ type: "ReLU"
+ bottom: "conv4_1/dwise/bn"
+ top: "conv4_1/dwise/bn"
+}
+layer {
+ name: "conv4_1/linear"
+ type: "Convolution"
+ bottom: "conv4_1/dwise/bn"
+ top: "conv4_1/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_1/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv4_1/linear"
+ top: "conv4_1/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_1/linear/scale"
+ type: "Scale"
+ bottom: "conv4_1/linear/bn"
+ top: "conv4_1/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_4_1"
+ type: "Eltwise"
+ bottom: "conv3_2/linear/bn"
+ bottom: "conv4_1/linear/bn"
+ top: "block_4_1"
+}
+layer {
+ name: "conv4_2/expand"
+ type: "Convolution"
+ bottom: "block_4_1"
+ top: "conv4_2/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 192
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_2/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv4_2/expand"
+ top: "conv4_2/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_2/expand/scale"
+ type: "Scale"
+ bottom: "conv4_2/expand/bn"
+ top: "conv4_2/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_2/expand"
+ type: "ReLU"
+ bottom: "conv4_2/expand/bn"
+ top: "conv4_2/expand/bn"
+}
+layer {
+ name: "conv4_2/dwise"
+ type: "Convolution"
+ bottom: "conv4_2/expand/bn"
+ top: "conv4_2/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 192
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 192
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv4_2/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv4_2/dwise"
+ top: "conv4_2/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_2/dwise/scale"
+ type: "Scale"
+ bottom: "conv4_2/dwise/bn"
+ top: "conv4_2/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_2/dwise"
+ type: "ReLU"
+ bottom: "conv4_2/dwise/bn"
+ top: "conv4_2/dwise/bn"
+}
+layer {
+ name: "conv4_2/linear"
+ type: "Convolution"
+ bottom: "conv4_2/dwise/bn"
+ top: "conv4_2/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_2/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv4_2/linear"
+ top: "conv4_2/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_2/linear/scale"
+ type: "Scale"
+ bottom: "conv4_2/linear/bn"
+ top: "conv4_2/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_4_2"
+ type: "Eltwise"
+ bottom: "block_4_1"
+ bottom: "conv4_2/linear/bn"
+ top: "block_4_2"
+}
+layer {
+ name: "conv4_3/expand"
+ type: "Convolution"
+ bottom: "block_4_2"
+ top: "conv4_3/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 192
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_3/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv4_3/expand"
+ top: "conv4_3/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_3/expand/scale"
+ type: "Scale"
+ bottom: "conv4_3/expand/bn"
+ top: "conv4_3/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_3/expand"
+ type: "ReLU"
+ bottom: "conv4_3/expand/bn"
+ top: "conv4_3/expand/bn"
+}
+layer {
+ name: "conv4_3/dwise"
+ type: "Convolution"
+ bottom: "conv4_3/expand/bn"
+ top: "conv4_3/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 192
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 192
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv4_3/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv4_3/dwise"
+ top: "conv4_3/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_3/dwise/scale"
+ type: "Scale"
+ bottom: "conv4_3/dwise/bn"
+ top: "conv4_3/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_3/dwise"
+ type: "ReLU"
+ bottom: "conv4_3/dwise/bn"
+ top: "conv4_3/dwise/bn"
+}
+layer {
+ name: "conv4_3/linear"
+ type: "Convolution"
+ bottom: "conv4_3/dwise/bn"
+ top: "conv4_3/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 64
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_3/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv4_3/linear"
+ top: "conv4_3/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_3/linear/scale"
+ type: "Scale"
+ bottom: "conv4_3/linear/bn"
+ top: "conv4_3/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "conv4_4/expand"
+ type: "Convolution"
+ bottom: "conv4_3/linear/bn"
+ top: "conv4_4/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_4/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv4_4/expand"
+ top: "conv4_4/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_4/expand/scale"
+ type: "Scale"
+ bottom: "conv4_4/expand/bn"
+ top: "conv4_4/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_4/expand"
+ type: "ReLU"
+ bottom: "conv4_4/expand/bn"
+ top: "conv4_4/expand/bn"
+}
+layer {
+ name: "conv4_4/dwise"
+ type: "Convolution"
+ bottom: "conv4_4/expand/bn"
+ top: "conv4_4/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 384
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv4_4/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv4_4/dwise"
+ top: "conv4_4/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_4/dwise/scale"
+ type: "Scale"
+ bottom: "conv4_4/dwise/bn"
+ top: "conv4_4/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_4/dwise"
+ type: "ReLU"
+ bottom: "conv4_4/dwise/bn"
+ top: "conv4_4/dwise/bn"
+}
+layer {
+ name: "conv4_4/linear"
+ type: "Convolution"
+ bottom: "conv4_4/dwise/bn"
+ top: "conv4_4/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 64
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_4/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv4_4/linear"
+ top: "conv4_4/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_4/linear/scale"
+ type: "Scale"
+ bottom: "conv4_4/linear/bn"
+ top: "conv4_4/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_4_4"
+ type: "Eltwise"
+ bottom: "conv4_3/linear/bn"
+ bottom: "conv4_4/linear/bn"
+ top: "block_4_4"
+}
+layer {
+ name: "conv4_5/expand"
+ type: "Convolution"
+ bottom: "block_4_4"
+ top: "conv4_5/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_5/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv4_5/expand"
+ top: "conv4_5/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_5/expand/scale"
+ type: "Scale"
+ bottom: "conv4_5/expand/bn"
+ top: "conv4_5/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_5/expand"
+ type: "ReLU"
+ bottom: "conv4_5/expand/bn"
+ top: "conv4_5/expand/bn"
+}
+layer {
+ name: "conv4_5/dwise"
+ type: "Convolution"
+ bottom: "conv4_5/expand/bn"
+ top: "conv4_5/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 384
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv4_5/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv4_5/dwise"
+ top: "conv4_5/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_5/dwise/scale"
+ type: "Scale"
+ bottom: "conv4_5/dwise/bn"
+ top: "conv4_5/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_5/dwise"
+ type: "ReLU"
+ bottom: "conv4_5/dwise/bn"
+ top: "conv4_5/dwise/bn"
+}
+layer {
+ name: "conv4_5/linear"
+ type: "Convolution"
+ bottom: "conv4_5/dwise/bn"
+ top: "conv4_5/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 64
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_5/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv4_5/linear"
+ top: "conv4_5/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_5/linear/scale"
+ type: "Scale"
+ bottom: "conv4_5/linear/bn"
+ top: "conv4_5/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_4_5"
+ type: "Eltwise"
+ bottom: "block_4_4"
+ bottom: "conv4_5/linear/bn"
+ top: "block_4_5"
+}
+layer {
+ name: "conv4_6/expand"
+ type: "Convolution"
+ bottom: "block_4_5"
+ top: "conv4_6/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_6/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv4_6/expand"
+ top: "conv4_6/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_6/expand/scale"
+ type: "Scale"
+ bottom: "conv4_6/expand/bn"
+ top: "conv4_6/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_6/expand"
+ type: "ReLU"
+ bottom: "conv4_6/expand/bn"
+ top: "conv4_6/expand/bn"
+}
+layer {
+ name: "conv4_6/dwise"
+ type: "Convolution"
+ bottom: "conv4_6/expand/bn"
+ top: "conv4_6/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 384
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv4_6/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv4_6/dwise"
+ top: "conv4_6/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_6/dwise/scale"
+ type: "Scale"
+ bottom: "conv4_6/dwise/bn"
+ top: "conv4_6/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_6/dwise"
+ type: "ReLU"
+ bottom: "conv4_6/dwise/bn"
+ top: "conv4_6/dwise/bn"
+}
+layer {
+ name: "conv4_6/linear"
+ type: "Convolution"
+ bottom: "conv4_6/dwise/bn"
+ top: "conv4_6/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 64
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_6/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv4_6/linear"
+ top: "conv4_6/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_6/linear/scale"
+ type: "Scale"
+ bottom: "conv4_6/linear/bn"
+ top: "conv4_6/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_4_6"
+ type: "Eltwise"
+ bottom: "block_4_5"
+ bottom: "conv4_6/linear/bn"
+ top: "block_4_6"
+}
+layer {
+ name: "conv4_7/expand"
+ type: "Convolution"
+ bottom: "block_4_6"
+ top: "conv4_7/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_7/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv4_7/expand"
+ top: "conv4_7/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_7/expand/scale"
+ type: "Scale"
+ bottom: "conv4_7/expand/bn"
+ top: "conv4_7/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_7/expand"
+ type: "ReLU"
+ bottom: "conv4_7/expand/bn"
+ top: "conv4_7/expand/bn"
+}
+layer {
+ name: "conv4_7/dwise"
+ type: "Convolution"
+ bottom: "conv4_7/expand/bn"
+ top: "conv4_7/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 384
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 384
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv4_7/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv4_7/dwise"
+ top: "conv4_7/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_7/dwise/scale"
+ type: "Scale"
+ bottom: "conv4_7/dwise/bn"
+ top: "conv4_7/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu4_7/dwise"
+ type: "ReLU"
+ bottom: "conv4_7/dwise/bn"
+ top: "conv4_7/dwise/bn"
+}
+layer {
+ name: "conv4_7/linear"
+ type: "Convolution"
+ bottom: "conv4_7/dwise/bn"
+ top: "conv4_7/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 96
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_7/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv4_7/linear"
+ top: "conv4_7/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_7/linear/scale"
+ type: "Scale"
+ bottom: "conv4_7/linear/bn"
+ top: "conv4_7/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "conv5_1/expand"
+ type: "Convolution"
+ bottom: "conv4_7/linear/bn"
+ top: "conv5_1/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 576
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_1/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv5_1/expand"
+ top: "conv5_1/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_1/expand/scale"
+ type: "Scale"
+ bottom: "conv5_1/expand/bn"
+ top: "conv5_1/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu5_1/expand"
+ type: "ReLU"
+ bottom: "conv5_1/expand/bn"
+ top: "conv5_1/expand/bn"
+}
+layer {
+ name: "conv5_1/dwise"
+ type: "Convolution"
+ bottom: "conv5_1/expand/bn"
+ top: "conv5_1/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 576
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 576
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv5_1/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv5_1/dwise"
+ top: "conv5_1/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_1/dwise/scale"
+ type: "Scale"
+ bottom: "conv5_1/dwise/bn"
+ top: "conv5_1/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu5_1/dwise"
+ type: "ReLU"
+ bottom: "conv5_1/dwise/bn"
+ top: "conv5_1/dwise/bn"
+}
+layer {
+ name: "conv5_1/linear"
+ type: "Convolution"
+ bottom: "conv5_1/dwise/bn"
+ top: "conv5_1/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 96
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_1/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv5_1/linear"
+ top: "conv5_1/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_1/linear/scale"
+ type: "Scale"
+ bottom: "conv5_1/linear/bn"
+ top: "conv5_1/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_5_1"
+ type: "Eltwise"
+ bottom: "conv4_7/linear/bn"
+ bottom: "conv5_1/linear/bn"
+ top: "block_5_1"
+}
+layer {
+ name: "conv5_2/expand"
+ type: "Convolution"
+ bottom: "block_5_1"
+ top: "conv5_2/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 576
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_2/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv5_2/expand"
+ top: "conv5_2/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_2/expand/scale"
+ type: "Scale"
+ bottom: "conv5_2/expand/bn"
+ top: "conv5_2/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu5_2/expand"
+ type: "ReLU"
+ bottom: "conv5_2/expand/bn"
+ top: "conv5_2/expand/bn"
+}
+layer {
+ name: "conv5_2/dwise"
+ type: "Convolution"
+ bottom: "conv5_2/expand/bn"
+ top: "conv5_2/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 576
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 576
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv5_2/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv5_2/dwise"
+ top: "conv5_2/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_2/dwise/scale"
+ type: "Scale"
+ bottom: "conv5_2/dwise/bn"
+ top: "conv5_2/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu5_2/dwise"
+ type: "ReLU"
+ bottom: "conv5_2/dwise/bn"
+ top: "conv5_2/dwise/bn"
+}
+layer {
+ name: "conv5_2/linear"
+ type: "Convolution"
+ bottom: "conv5_2/dwise/bn"
+ top: "conv5_2/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 96
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_2/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv5_2/linear"
+ top: "conv5_2/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_2/linear/scale"
+ type: "Scale"
+ bottom: "conv5_2/linear/bn"
+ top: "conv5_2/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_5_2"
+ type: "Eltwise"
+ bottom: "block_5_1"
+ bottom: "conv5_2/linear/bn"
+ top: "block_5_2"
+}
+layer {
+ name: "conv5_3/expand"
+ type: "Convolution"
+ bottom: "block_5_2"
+ top: "conv5_3/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 576
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_3/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv5_3/expand"
+ top: "conv5_3/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_3/expand/scale"
+ type: "Scale"
+ bottom: "conv5_3/expand/bn"
+ top: "conv5_3/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu5_3/expand"
+ type: "ReLU"
+ bottom: "conv5_3/expand/bn"
+ top: "conv5_3/expand/bn"
+}
+layer {
+ name: "conv5_3/dwise"
+ type: "Convolution"
+ bottom: "conv5_3/expand/bn"
+ top: "conv5_3/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 576
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 576
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv5_3/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv5_3/dwise"
+ top: "conv5_3/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_3/dwise/scale"
+ type: "Scale"
+ bottom: "conv5_3/dwise/bn"
+ top: "conv5_3/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu5_3/dwise"
+ type: "ReLU"
+ bottom: "conv5_3/dwise/bn"
+ top: "conv5_3/dwise/bn"
+}
+layer {
+ name: "conv5_3/linear"
+ type: "Convolution"
+ bottom: "conv5_3/dwise/bn"
+ top: "conv5_3/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 160
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_3/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv5_3/linear"
+ top: "conv5_3/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_3/linear/scale"
+ type: "Scale"
+ bottom: "conv5_3/linear/bn"
+ top: "conv5_3/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "conv6_1/expand"
+ type: "Convolution"
+ bottom: "conv5_3/linear/bn"
+ top: "conv6_1/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 960
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6_1/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv6_1/expand"
+ top: "conv6_1/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_1/expand/scale"
+ type: "Scale"
+ bottom: "conv6_1/expand/bn"
+ top: "conv6_1/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu6_1/expand"
+ type: "ReLU"
+ bottom: "conv6_1/expand/bn"
+ top: "conv6_1/expand/bn"
+}
+layer {
+ name: "conv6_1/dwise"
+ type: "Convolution"
+ bottom: "conv6_1/expand/bn"
+ top: "conv6_1/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 960
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 960
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv6_1/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv6_1/dwise"
+ top: "conv6_1/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_1/dwise/scale"
+ type: "Scale"
+ bottom: "conv6_1/dwise/bn"
+ top: "conv6_1/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu6_1/dwise"
+ type: "ReLU"
+ bottom: "conv6_1/dwise/bn"
+ top: "conv6_1/dwise/bn"
+}
+layer {
+ name: "conv6_1/linear"
+ type: "Convolution"
+ bottom: "conv6_1/dwise/bn"
+ top: "conv6_1/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 160
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6_1/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv6_1/linear"
+ top: "conv6_1/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_1/linear/scale"
+ type: "Scale"
+ bottom: "conv6_1/linear/bn"
+ top: "conv6_1/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_6_1"
+ type: "Eltwise"
+ bottom: "conv5_3/linear/bn"
+ bottom: "conv6_1/linear/bn"
+ top: "block_6_1"
+}
+layer {
+ name: "conv6_2/expand"
+ type: "Convolution"
+ bottom: "block_6_1"
+ top: "conv6_2/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 960
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6_2/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv6_2/expand"
+ top: "conv6_2/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_2/expand/scale"
+ type: "Scale"
+ bottom: "conv6_2/expand/bn"
+ top: "conv6_2/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu6_2/expand"
+ type: "ReLU"
+ bottom: "conv6_2/expand/bn"
+ top: "conv6_2/expand/bn"
+}
+layer {
+ name: "conv6_2/dwise"
+ type: "Convolution"
+ bottom: "conv6_2/expand/bn"
+ top: "conv6_2/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 960
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 960
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv6_2/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv6_2/dwise"
+ top: "conv6_2/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_2/dwise/scale"
+ type: "Scale"
+ bottom: "conv6_2/dwise/bn"
+ top: "conv6_2/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu6_2/dwise"
+ type: "ReLU"
+ bottom: "conv6_2/dwise/bn"
+ top: "conv6_2/dwise/bn"
+}
+layer {
+ name: "conv6_2/linear"
+ type: "Convolution"
+ bottom: "conv6_2/dwise/bn"
+ top: "conv6_2/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 160
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6_2/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv6_2/linear"
+ top: "conv6_2/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_2/linear/scale"
+ type: "Scale"
+ bottom: "conv6_2/linear/bn"
+ top: "conv6_2/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "block_6_2"
+ type: "Eltwise"
+ bottom: "block_6_1"
+ bottom: "conv6_2/linear/bn"
+ top: "block_6_2"
+}
+layer {
+ name: "conv6_3/expand"
+ type: "Convolution"
+ bottom: "block_6_2"
+ top: "conv6_3/expand"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 960
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6_3/expand/bn"
+ type: "BatchNorm"
+ bottom: "conv6_3/expand"
+ top: "conv6_3/expand/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_3/expand/scale"
+ type: "Scale"
+ bottom: "conv6_3/expand/bn"
+ top: "conv6_3/expand/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu6_3/expand"
+ type: "ReLU"
+ bottom: "conv6_3/expand/bn"
+ top: "conv6_3/expand/bn"
+}
+layer {
+ name: "conv6_3/dwise"
+ type: "Convolution"
+ bottom: "conv6_3/expand/bn"
+ top: "conv6_3/dwise"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 960
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 960
+ weight_filler {
+ type: "msra"
+ }
+ engine: CAFFE
+ }
+}
+layer {
+ name: "conv6_3/dwise/bn"
+ type: "BatchNorm"
+ bottom: "conv6_3/dwise"
+ top: "conv6_3/dwise/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_3/dwise/scale"
+ type: "Scale"
+ bottom: "conv6_3/dwise/bn"
+ top: "conv6_3/dwise/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu6_3/dwise"
+ type: "ReLU"
+ bottom: "conv6_3/dwise/bn"
+ top: "conv6_3/dwise/bn"
+}
+layer {
+ name: "conv6_3/linear"
+ type: "Convolution"
+ bottom: "conv6_3/dwise/bn"
+ top: "conv6_3/linear"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 320
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6_3/linear/bn"
+ type: "BatchNorm"
+ bottom: "conv6_3/linear"
+ top: "conv6_3/linear/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_3/linear/scale"
+ type: "Scale"
+ bottom: "conv6_3/linear/bn"
+ top: "conv6_3/linear/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "conv6_4"
+ type: "Convolution"
+ bottom: "conv6_3/linear/bn"
+ top: "conv6_4"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 1280
+ bias_term: false
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6_4/bn"
+ type: "BatchNorm"
+ bottom: "conv6_4"
+ top: "conv6_4/bn"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6_4/scale"
+ type: "Scale"
+ bottom: "conv6_4/bn"
+ top: "conv6_4/bn"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ bias_term: true
+ }
+}
+layer {
+ name: "relu6_4"
+ type: "ReLU"
+ bottom: "conv6_4/bn"
+ top: "conv6_4/bn"
+}
+layer {
+ name: "pool6"
+ type: "Pooling"
+ bottom: "conv6_4/bn"
+ top: "pool6"
+ pooling_param {
+ pool: AVE
+ global_pooling: true
+ }
+}
+layer {
+ name: "fc7"
+ type: "Convolution"
+ bottom: "pool6"
+ top: "fc7"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 1000
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "prob"
+ type: "Softmax"
+ bottom: "fc7"
+ top: "prob"
+}
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/model_config.yml b/rknn-toolkit2/examples/caffe/mobilenet_v2/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..51c569ca9c0e5db118242dbed7efff2265cf77e2
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/model_config.yml
@@ -0,0 +1,17 @@
+models:
+ name: mobilenet_v2 # 模型输出名称
+ platform: caffe # 原始模型使用的框架
+ prototxt_file_path: ./mobilenet_v2_deploy.prototxt # caffe的prototxt文件
+ caffemodel_file_path: ./mobilenet_v2.caffemodel # caffe的caffemode文件
+ subgraphs: # 描述输入输出shape等信息,模型单输入可不写
+ input_size_list:
+ - 1,3,224,224
+ quantize: true # 是否量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ quantized_dtype: asymmetric_quantized-8 # 量化类型
+ mean_values: [103.94, 116.78, 123.68] # rknn.config的mean_values参数
+ std_values: [58.82, 58.82, 58.82] # rknn.config的std_values参数
+ quant_img_RGB2BGR: true # 进行RGB2BGR转换
+ quantized_algorithm: normal # 量化算法
+ quantized_method: channel # 量化方法
diff --git a/rknn-toolkit2/examples/caffe/mobilenet_v2/test.py b/rknn-toolkit2/examples/caffe/mobilenet_v2/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..62564cc3f4cd65196105fc003125b5fe489372fe
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/mobilenet_v2/test.py
@@ -0,0 +1,76 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ np.save('./caffe_mobilenet_v2_0.npy', outputs[0])
+ output = outputs[0].reshape(-1)
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'mobilenet_v2\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82], quant_img_RGB2BGR=True, target_platform='rk3566')
+ print('done')
+
+ # Load model (from https://github.com/shicai/MobileNet-Caffe)
+ print('--> Loading model')
+ ret = rknn.load_caffe(model='./mobilenet_v2_deploy.prototxt',
+ blobs='./mobilenet_v2.caffemodel')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet_v2.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/README.md b/rknn-toolkit2/examples/caffe/vgg-ssd/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2a2c1baf63da4b57c7fb4278fa8c988dec5e736c
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/README.md
@@ -0,0 +1,24 @@
+# Caffe VGG-SSD
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/weiliu89/caffe/tree/ssd#models
+But the model download link has expired, please download from [VGG_VOC0712_SSD_300x300_iter_120000.caffemodel](https://ftzr.zbox.filez.com/v2/delivery/data/95f00b0fc900458ba134f8b180b3f7a1/asset/vgg-ssd/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel).
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3566 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will save the result of object detection to the 'result.jpg', as follows:
+
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/dataset.txt b/rknn-toolkit2/examples/caffe/vgg-ssd/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8caaf85d1ca3ae2db2a96aafe248208dd250c065
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/dataset.txt
@@ -0,0 +1 @@
+road_300x300.jpg
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/deploy_rm_detection_output.prototxt b/rknn-toolkit2/examples/caffe/vgg-ssd/deploy_rm_detection_output.prototxt
new file mode 100755
index 0000000000000000000000000000000000000000..6e42430c363c0e5027d1676c1baecb8436236864
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/deploy_rm_detection_output.prototxt
@@ -0,0 +1,1605 @@
+name: "VGG_VOC0712_SSD_300x300_deploy"
+layer {
+ name: "input"
+ type: "Input"
+ top: "data"
+ input_param {
+ shape {
+ dim: 1
+ dim: 3
+ dim: 300
+ dim: 300
+ }
+ }
+}
+layer {
+ name: "conv1_1"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv1_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 64
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu1_1"
+ type: "ReLU"
+ bottom: "conv1_1"
+ top: "conv1_1"
+}
+layer {
+ name: "conv1_2"
+ type: "Convolution"
+ bottom: "conv1_1"
+ top: "conv1_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 64
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu1_2"
+ type: "ReLU"
+ bottom: "conv1_2"
+ top: "conv1_2"
+}
+layer {
+ name: "pool1"
+ type: "Pooling"
+ bottom: "conv1_2"
+ top: "pool1"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ }
+}
+layer {
+ name: "conv2_1"
+ type: "Convolution"
+ bottom: "pool1"
+ top: "conv2_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 128
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu2_1"
+ type: "ReLU"
+ bottom: "conv2_1"
+ top: "conv2_1"
+}
+layer {
+ name: "conv2_2"
+ type: "Convolution"
+ bottom: "conv2_1"
+ top: "conv2_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 128
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu2_2"
+ type: "ReLU"
+ bottom: "conv2_2"
+ top: "conv2_2"
+}
+layer {
+ name: "pool2"
+ type: "Pooling"
+ bottom: "conv2_2"
+ top: "pool2"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ }
+}
+layer {
+ name: "conv3_1"
+ type: "Convolution"
+ bottom: "pool2"
+ top: "conv3_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 256
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu3_1"
+ type: "ReLU"
+ bottom: "conv3_1"
+ top: "conv3_1"
+}
+layer {
+ name: "conv3_2"
+ type: "Convolution"
+ bottom: "conv3_1"
+ top: "conv3_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 256
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu3_2"
+ type: "ReLU"
+ bottom: "conv3_2"
+ top: "conv3_2"
+}
+layer {
+ name: "conv3_3"
+ type: "Convolution"
+ bottom: "conv3_2"
+ top: "conv3_3"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 256
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu3_3"
+ type: "ReLU"
+ bottom: "conv3_3"
+ top: "conv3_3"
+}
+layer {
+ name: "pool3"
+ type: "Pooling"
+ bottom: "conv3_3"
+ top: "pool3"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ }
+}
+layer {
+ name: "conv4_1"
+ type: "Convolution"
+ bottom: "pool3"
+ top: "conv4_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 512
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu4_1"
+ type: "ReLU"
+ bottom: "conv4_1"
+ top: "conv4_1"
+}
+layer {
+ name: "conv4_2"
+ type: "Convolution"
+ bottom: "conv4_1"
+ top: "conv4_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 512
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu4_2"
+ type: "ReLU"
+ bottom: "conv4_2"
+ top: "conv4_2"
+}
+layer {
+ name: "conv4_3"
+ type: "Convolution"
+ bottom: "conv4_2"
+ top: "conv4_3"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 512
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu4_3"
+ type: "ReLU"
+ bottom: "conv4_3"
+ top: "conv4_3"
+}
+layer {
+ name: "pool4"
+ type: "Pooling"
+ bottom: "conv4_3"
+ top: "pool4"
+ pooling_param {
+ pool: MAX
+ kernel_size: 2
+ stride: 2
+ }
+}
+layer {
+ name: "conv5_1"
+ type: "Convolution"
+ bottom: "pool4"
+ top: "conv5_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 512
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ dilation: 1
+ }
+}
+layer {
+ name: "relu5_1"
+ type: "ReLU"
+ bottom: "conv5_1"
+ top: "conv5_1"
+}
+layer {
+ name: "conv5_2"
+ type: "Convolution"
+ bottom: "conv5_1"
+ top: "conv5_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 512
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ dilation: 1
+ }
+}
+layer {
+ name: "relu5_2"
+ type: "ReLU"
+ bottom: "conv5_2"
+ top: "conv5_2"
+}
+layer {
+ name: "conv5_3"
+ type: "Convolution"
+ bottom: "conv5_2"
+ top: "conv5_3"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 512
+ pad: 1
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ dilation: 1
+ }
+}
+layer {
+ name: "relu5_3"
+ type: "ReLU"
+ bottom: "conv5_3"
+ top: "conv5_3"
+}
+layer {
+ name: "pool5"
+ type: "Pooling"
+ bottom: "conv5_3"
+ top: "pool5"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ stride: 1
+ pad: 1
+ }
+}
+layer {
+ name: "fc6"
+ type: "Convolution"
+ bottom: "pool5"
+ top: "fc6"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 1024
+ pad: 6
+ kernel_size: 3
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ dilation: 6
+ }
+}
+layer {
+ name: "relu6"
+ type: "ReLU"
+ bottom: "fc6"
+ top: "fc6"
+}
+layer {
+ name: "fc7"
+ type: "Convolution"
+ bottom: "fc6"
+ top: "fc7"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 1024
+ kernel_size: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu7"
+ type: "ReLU"
+ bottom: "fc7"
+ top: "fc7"
+}
+layer {
+ name: "conv6_1"
+ type: "Convolution"
+ bottom: "fc7"
+ top: "conv6_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 256
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv6_1_relu"
+ type: "ReLU"
+ bottom: "conv6_1"
+ top: "conv6_1"
+}
+layer {
+ name: "conv6_2"
+ type: "Convolution"
+ bottom: "conv6_1"
+ top: "conv6_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 512
+ pad: 1
+ kernel_size: 3
+ stride: 2
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv6_2_relu"
+ type: "ReLU"
+ bottom: "conv6_2"
+ top: "conv6_2"
+}
+layer {
+ name: "conv7_1"
+ type: "Convolution"
+ bottom: "conv6_2"
+ top: "conv7_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 128
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv7_1_relu"
+ type: "ReLU"
+ bottom: "conv7_1"
+ top: "conv7_1"
+}
+layer {
+ name: "conv7_2"
+ type: "Convolution"
+ bottom: "conv7_1"
+ top: "conv7_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 256
+ pad: 1
+ kernel_size: 3
+ stride: 2
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv7_2_relu"
+ type: "ReLU"
+ bottom: "conv7_2"
+ top: "conv7_2"
+}
+layer {
+ name: "conv8_1"
+ type: "Convolution"
+ bottom: "conv7_2"
+ top: "conv8_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 128
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv8_1_relu"
+ type: "ReLU"
+ bottom: "conv8_1"
+ top: "conv8_1"
+}
+layer {
+ name: "conv8_2"
+ type: "Convolution"
+ bottom: "conv8_1"
+ top: "conv8_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 256
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv8_2_relu"
+ type: "ReLU"
+ bottom: "conv8_2"
+ top: "conv8_2"
+}
+layer {
+ name: "conv9_1"
+ type: "Convolution"
+ bottom: "conv8_2"
+ top: "conv9_1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 128
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv9_1_relu"
+ type: "ReLU"
+ bottom: "conv9_1"
+ top: "conv9_1"
+}
+layer {
+ name: "conv9_2"
+ type: "Convolution"
+ bottom: "conv9_1"
+ top: "conv9_2"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 256
+ pad: 0
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv9_2_relu"
+ type: "ReLU"
+ bottom: "conv9_2"
+ top: "conv9_2"
+}
+layer {
+ name: "conv4_3_norm"
+ type: "Normalize"
+ bottom: "conv4_3"
+ top: "conv4_3_norm"
+ norm_param {
+ across_spatial: false
+ scale_filler {
+ type: "constant"
+ value: 20
+ }
+ channel_shared: false
+ }
+}
+layer {
+ name: "conv4_3_norm_mbox_loc"
+ type: "Convolution"
+ bottom: "conv4_3_norm"
+ top: "conv4_3_norm_mbox_loc"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 16
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv4_3_norm_mbox_loc_perm"
+ type: "Permute"
+ bottom: "conv4_3_norm_mbox_loc"
+ top: "conv4_3_norm_mbox_loc_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv4_3_norm_mbox_loc_flat"
+ type: "Flatten"
+ bottom: "conv4_3_norm_mbox_loc_perm"
+ top: "conv4_3_norm_mbox_loc_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv4_3_norm_mbox_conf"
+ type: "Convolution"
+ bottom: "conv4_3_norm"
+ top: "conv4_3_norm_mbox_conf"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 84
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv4_3_norm_mbox_conf_perm"
+ type: "Permute"
+ bottom: "conv4_3_norm_mbox_conf"
+ top: "conv4_3_norm_mbox_conf_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv4_3_norm_mbox_conf_flat"
+ type: "Flatten"
+ bottom: "conv4_3_norm_mbox_conf_perm"
+ top: "conv4_3_norm_mbox_conf_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv4_3_norm_mbox_priorbox"
+ type: "PriorBox"
+ bottom: "conv4_3_norm"
+ bottom: "data"
+ top: "conv4_3_norm_mbox_priorbox"
+ prior_box_param {
+ min_size: 30.0
+ max_size: 60.0
+ aspect_ratio: 2
+ flip: true
+ clip: false
+ variance: 0.1
+ variance: 0.1
+ variance: 0.2
+ variance: 0.2
+ step: 8
+ offset: 0.5
+ }
+}
+layer {
+ name: "fc7_mbox_loc"
+ type: "Convolution"
+ bottom: "fc7"
+ top: "fc7_mbox_loc"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 24
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "fc7_mbox_loc_perm"
+ type: "Permute"
+ bottom: "fc7_mbox_loc"
+ top: "fc7_mbox_loc_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "fc7_mbox_loc_flat"
+ type: "Flatten"
+ bottom: "fc7_mbox_loc_perm"
+ top: "fc7_mbox_loc_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "fc7_mbox_conf"
+ type: "Convolution"
+ bottom: "fc7"
+ top: "fc7_mbox_conf"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 126
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "fc7_mbox_conf_perm"
+ type: "Permute"
+ bottom: "fc7_mbox_conf"
+ top: "fc7_mbox_conf_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "fc7_mbox_conf_flat"
+ type: "Flatten"
+ bottom: "fc7_mbox_conf_perm"
+ top: "fc7_mbox_conf_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "fc7_mbox_priorbox"
+ type: "PriorBox"
+ bottom: "fc7"
+ bottom: "data"
+ top: "fc7_mbox_priorbox"
+ prior_box_param {
+ min_size: 60.0
+ max_size: 111.0
+ aspect_ratio: 2
+ aspect_ratio: 3
+ flip: true
+ clip: false
+ variance: 0.1
+ variance: 0.1
+ variance: 0.2
+ variance: 0.2
+ step: 16
+ offset: 0.5
+ }
+}
+layer {
+ name: "conv6_2_mbox_loc"
+ type: "Convolution"
+ bottom: "conv6_2"
+ top: "conv6_2_mbox_loc"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 24
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv6_2_mbox_loc_perm"
+ type: "Permute"
+ bottom: "conv6_2_mbox_loc"
+ top: "conv6_2_mbox_loc_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv6_2_mbox_loc_flat"
+ type: "Flatten"
+ bottom: "conv6_2_mbox_loc_perm"
+ top: "conv6_2_mbox_loc_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv6_2_mbox_conf"
+ type: "Convolution"
+ bottom: "conv6_2"
+ top: "conv6_2_mbox_conf"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 126
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv6_2_mbox_conf_perm"
+ type: "Permute"
+ bottom: "conv6_2_mbox_conf"
+ top: "conv6_2_mbox_conf_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv6_2_mbox_conf_flat"
+ type: "Flatten"
+ bottom: "conv6_2_mbox_conf_perm"
+ top: "conv6_2_mbox_conf_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv6_2_mbox_priorbox"
+ type: "PriorBox"
+ bottom: "conv6_2"
+ bottom: "data"
+ top: "conv6_2_mbox_priorbox"
+ prior_box_param {
+ min_size: 111.0
+ max_size: 162.0
+ aspect_ratio: 2
+ aspect_ratio: 3
+ flip: true
+ clip: false
+ variance: 0.1
+ variance: 0.1
+ variance: 0.2
+ variance: 0.2
+ step: 32
+ offset: 0.5
+ }
+}
+layer {
+ name: "conv7_2_mbox_loc"
+ type: "Convolution"
+ bottom: "conv7_2"
+ top: "conv7_2_mbox_loc"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 24
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv7_2_mbox_loc_perm"
+ type: "Permute"
+ bottom: "conv7_2_mbox_loc"
+ top: "conv7_2_mbox_loc_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv7_2_mbox_loc_flat"
+ type: "Flatten"
+ bottom: "conv7_2_mbox_loc_perm"
+ top: "conv7_2_mbox_loc_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv7_2_mbox_conf"
+ type: "Convolution"
+ bottom: "conv7_2"
+ top: "conv7_2_mbox_conf"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 126
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv7_2_mbox_conf_perm"
+ type: "Permute"
+ bottom: "conv7_2_mbox_conf"
+ top: "conv7_2_mbox_conf_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv7_2_mbox_conf_flat"
+ type: "Flatten"
+ bottom: "conv7_2_mbox_conf_perm"
+ top: "conv7_2_mbox_conf_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv7_2_mbox_priorbox"
+ type: "PriorBox"
+ bottom: "conv7_2"
+ bottom: "data"
+ top: "conv7_2_mbox_priorbox"
+ prior_box_param {
+ min_size: 162.0
+ max_size: 213.0
+ aspect_ratio: 2
+ aspect_ratio: 3
+ flip: true
+ clip: false
+ variance: 0.1
+ variance: 0.1
+ variance: 0.2
+ variance: 0.2
+ step: 64
+ offset: 0.5
+ }
+}
+layer {
+ name: "conv8_2_mbox_loc"
+ type: "Convolution"
+ bottom: "conv8_2"
+ top: "conv8_2_mbox_loc"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 16
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv8_2_mbox_loc_perm"
+ type: "Permute"
+ bottom: "conv8_2_mbox_loc"
+ top: "conv8_2_mbox_loc_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv8_2_mbox_loc_flat"
+ type: "Flatten"
+ bottom: "conv8_2_mbox_loc_perm"
+ top: "conv8_2_mbox_loc_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv8_2_mbox_conf"
+ type: "Convolution"
+ bottom: "conv8_2"
+ top: "conv8_2_mbox_conf"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 84
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv8_2_mbox_conf_perm"
+ type: "Permute"
+ bottom: "conv8_2_mbox_conf"
+ top: "conv8_2_mbox_conf_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv8_2_mbox_conf_flat"
+ type: "Flatten"
+ bottom: "conv8_2_mbox_conf_perm"
+ top: "conv8_2_mbox_conf_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv8_2_mbox_priorbox"
+ type: "PriorBox"
+ bottom: "conv8_2"
+ bottom: "data"
+ top: "conv8_2_mbox_priorbox"
+ prior_box_param {
+ min_size: 213.0
+ max_size: 264.0
+ aspect_ratio: 2
+ flip: true
+ clip: false
+ variance: 0.1
+ variance: 0.1
+ variance: 0.2
+ variance: 0.2
+ step: 100
+ offset: 0.5
+ }
+}
+layer {
+ name: "conv9_2_mbox_loc"
+ type: "Convolution"
+ bottom: "conv9_2"
+ top: "conv9_2_mbox_loc"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 16
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv9_2_mbox_loc_perm"
+ type: "Permute"
+ bottom: "conv9_2_mbox_loc"
+ top: "conv9_2_mbox_loc_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv9_2_mbox_loc_flat"
+ type: "Flatten"
+ bottom: "conv9_2_mbox_loc_perm"
+ top: "conv9_2_mbox_loc_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv9_2_mbox_conf"
+ type: "Convolution"
+ bottom: "conv9_2"
+ top: "conv9_2_mbox_conf"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 84
+ pad: 1
+ kernel_size: 3
+ stride: 1
+ weight_filler {
+ type: "xavier"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "conv9_2_mbox_conf_perm"
+ type: "Permute"
+ bottom: "conv9_2_mbox_conf"
+ top: "conv9_2_mbox_conf_perm"
+ permute_param {
+ order: 0
+ order: 2
+ order: 3
+ order: 1
+ }
+}
+layer {
+ name: "conv9_2_mbox_conf_flat"
+ type: "Flatten"
+ bottom: "conv9_2_mbox_conf_perm"
+ top: "conv9_2_mbox_conf_flat"
+ flatten_param {
+ axis: 1
+ }
+}
+layer {
+ name: "conv9_2_mbox_priorbox"
+ type: "PriorBox"
+ bottom: "conv9_2"
+ bottom: "data"
+ top: "conv9_2_mbox_priorbox"
+ prior_box_param {
+ min_size: 264.0
+ max_size: 315.0
+ aspect_ratio: 2
+ flip: true
+ clip: false
+ variance: 0.1
+ variance: 0.1
+ variance: 0.2
+ variance: 0.2
+ step: 300
+ offset: 0.5
+ }
+}
+layer {
+ name: "mbox_loc"
+ type: "Concat"
+ bottom: "conv4_3_norm_mbox_loc_flat"
+ bottom: "fc7_mbox_loc_flat"
+ bottom: "conv6_2_mbox_loc_flat"
+ bottom: "conv7_2_mbox_loc_flat"
+ bottom: "conv8_2_mbox_loc_flat"
+ bottom: "conv9_2_mbox_loc_flat"
+ top: "mbox_loc"
+ concat_param {
+ axis: 1
+ }
+}
+layer {
+ name: "mbox_conf"
+ type: "Concat"
+ bottom: "conv4_3_norm_mbox_conf_flat"
+ bottom: "fc7_mbox_conf_flat"
+ bottom: "conv6_2_mbox_conf_flat"
+ bottom: "conv7_2_mbox_conf_flat"
+ bottom: "conv8_2_mbox_conf_flat"
+ bottom: "conv9_2_mbox_conf_flat"
+ top: "mbox_conf"
+ concat_param {
+ axis: 1
+ }
+}
+layer {
+ name: "mbox_priorbox"
+ type: "Concat"
+ bottom: "conv4_3_norm_mbox_priorbox"
+ bottom: "fc7_mbox_priorbox"
+ bottom: "conv6_2_mbox_priorbox"
+ bottom: "conv7_2_mbox_priorbox"
+ bottom: "conv8_2_mbox_priorbox"
+ bottom: "conv9_2_mbox_priorbox"
+ top: "mbox_priorbox"
+ concat_param {
+ axis: 2
+ }
+}
+layer {
+ name: "mbox_conf_reshape"
+ type: "Reshape"
+ bottom: "mbox_conf"
+ top: "mbox_conf_reshape"
+ reshape_param {
+ shape {
+ dim: 0
+ dim: -1
+ dim: 21
+ }
+ }
+}
+layer {
+ name: "mbox_conf_softmax"
+ type: "Softmax"
+ bottom: "mbox_conf_reshape"
+ top: "mbox_conf_softmax"
+ softmax_param {
+ axis: 2
+ }
+}
+layer {
+ name: "mbox_conf_flatten"
+ type: "Flatten"
+ bottom: "mbox_conf_softmax"
+ top: "mbox_conf_flatten"
+ flatten_param {
+ axis: 1
+ }
+}
+
+
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/mbox_priorbox_97.txt b/rknn-toolkit2/examples/caffe/vgg-ssd/mbox_priorbox_97.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3a2b49a5cedafe87f1f9a0f8417aba466651f223
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/mbox_priorbox_97.txt
@@ -0,0 +1,69856 @@
+-0.036667
+-0.036667
+0.063333
+0.063333
+-0.057377
+-0.057377
+0.084044
+0.084044
+-0.057377
+-0.022022
+0.084044
+0.048689
+-0.022022
+-0.057377
+0.048689
+0.084044
+-0.010000
+-0.036667
+0.090000
+0.063333
+-0.030711
+-0.057377
+0.110711
+0.084044
+-0.030711
+-0.022022
+0.110711
+0.048689
+0.004645
+-0.057377
+0.075355
+0.084044
+0.016667
+-0.036667
+0.116667
+0.063333
+-0.004044
+-0.057377
+0.137377
+0.084044
+-0.004044
+-0.022022
+0.137377
+0.048689
+0.031311
+-0.057377
+0.102022
+0.084044
+0.043333
+-0.036667
+0.143333
+0.063333
+0.022623
+-0.057377
+0.164044
+0.084044
+0.022623
+-0.022022
+0.164044
+0.048689
+0.057978
+-0.057377
+0.128689
+0.084044
+0.070000
+-0.036667
+0.170000
+0.063333
+0.049289
+-0.057377
+0.190711
+0.084044
+0.049289
+-0.022022
+0.190711
+0.048689
+0.084645
+-0.057377
+0.155355
+0.084044
+0.096667
+-0.036667
+0.196667
+0.063333
+0.075956
+-0.057377
+0.217377
+0.084044
+0.075956
+-0.022022
+0.217377
+0.048689
+0.111311
+-0.057377
+0.182022
+0.084044
+0.123333
+-0.036667
+0.223333
+0.063333
+0.102623
+-0.057377
+0.244044
+0.084044
+0.102623
+-0.022022
+0.244044
+0.048689
+0.137978
+-0.057377
+0.208689
+0.084044
+0.150000
+-0.036667
+0.250000
+0.063333
+0.129289
+-0.057377
+0.270711
+0.084044
+0.129289
+-0.022022
+0.270711
+0.048689
+0.164645
+-0.057377
+0.235355
+0.084044
+0.176667
+-0.036667
+0.276667
+0.063333
+0.155956
+-0.057377
+0.297377
+0.084044
+0.155956
+-0.022022
+0.297377
+0.048689
+0.191311
+-0.057377
+0.262022
+0.084044
+0.203333
+-0.036667
+0.303333
+0.063333
+0.182623
+-0.057377
+0.324044
+0.084044
+0.182623
+-0.022022
+0.324044
+0.048689
+0.217978
+-0.057377
+0.288689
+0.084044
+0.230000
+-0.036667
+0.330000
+0.063333
+0.209289
+-0.057377
+0.350711
+0.084044
+0.209289
+-0.022022
+0.350711
+0.048689
+0.244645
+-0.057377
+0.315355
+0.084044
+0.256667
+-0.036667
+0.356667
+0.063333
+0.235956
+-0.057377
+0.377377
+0.084044
+0.235956
+-0.022022
+0.377377
+0.048689
+0.271311
+-0.057377
+0.342022
+0.084044
+0.283333
+-0.036667
+0.383333
+0.063333
+0.262623
+-0.057377
+0.404044
+0.084044
+0.262623
+-0.022022
+0.404044
+0.048689
+0.297978
+-0.057377
+0.368689
+0.084044
+0.310000
+-0.036667
+0.410000
+0.063333
+0.289289
+-0.057377
+0.430711
+0.084044
+0.289289
+-0.022022
+0.430711
+0.048689
+0.324645
+-0.057377
+0.395355
+0.084044
+0.336667
+-0.036667
+0.436667
+0.063333
+0.315956
+-0.057377
+0.457377
+0.084044
+0.315956
+-0.022022
+0.457377
+0.048689
+0.351311
+-0.057377
+0.422022
+0.084044
+0.363333
+-0.036667
+0.463333
+0.063333
+0.342623
+-0.057377
+0.484044
+0.084044
+0.342623
+-0.022022
+0.484044
+0.048689
+0.377978
+-0.057377
+0.448689
+0.084044
+0.390000
+-0.036667
+0.490000
+0.063333
+0.369289
+-0.057377
+0.510711
+0.084044
+0.369289
+-0.022022
+0.510711
+0.048689
+0.404645
+-0.057377
+0.475355
+0.084044
+0.416667
+-0.036667
+0.516667
+0.063333
+0.395956
+-0.057377
+0.537377
+0.084044
+0.395956
+-0.022022
+0.537377
+0.048689
+0.431311
+-0.057377
+0.502022
+0.084044
+0.443333
+-0.036667
+0.543333
+0.063333
+0.422623
+-0.057377
+0.564044
+0.084044
+0.422623
+-0.022022
+0.564044
+0.048689
+0.457978
+-0.057377
+0.528689
+0.084044
+0.470000
+-0.036667
+0.570000
+0.063333
+0.449289
+-0.057377
+0.590711
+0.084044
+0.449289
+-0.022022
+0.590711
+0.048689
+0.484645
+-0.057377
+0.555355
+0.084044
+0.496667
+-0.036667
+0.596667
+0.063333
+0.475956
+-0.057377
+0.617377
+0.084044
+0.475956
+-0.022022
+0.617377
+0.048689
+0.511311
+-0.057377
+0.582022
+0.084044
+0.523333
+-0.036667
+0.623333
+0.063333
+0.502623
+-0.057377
+0.644044
+0.084044
+0.502623
+-0.022022
+0.644044
+0.048689
+0.537978
+-0.057377
+0.608689
+0.084044
+0.550000
+-0.036667
+0.650000
+0.063333
+0.529289
+-0.057377
+0.670711
+0.084044
+0.529289
+-0.022022
+0.670711
+0.048689
+0.564645
+-0.057377
+0.635355
+0.084044
+0.576667
+-0.036667
+0.676667
+0.063333
+0.555956
+-0.057377
+0.697377
+0.084044
+0.555956
+-0.022022
+0.697377
+0.048689
+0.591311
+-0.057377
+0.662022
+0.084044
+0.603333
+-0.036667
+0.703333
+0.063333
+0.582623
+-0.057377
+0.724044
+0.084044
+0.582623
+-0.022022
+0.724044
+0.048689
+0.617978
+-0.057377
+0.688689
+0.084044
+0.630000
+-0.036667
+0.730000
+0.063333
+0.609289
+-0.057377
+0.750711
+0.084044
+0.609289
+-0.022022
+0.750711
+0.048689
+0.644645
+-0.057377
+0.715355
+0.084044
+0.656667
+-0.036667
+0.756667
+0.063333
+0.635956
+-0.057377
+0.777377
+0.084044
+0.635956
+-0.022022
+0.777377
+0.048689
+0.671311
+-0.057377
+0.742022
+0.084044
+0.683333
+-0.036667
+0.783333
+0.063333
+0.662623
+-0.057377
+0.804044
+0.084044
+0.662623
+-0.022022
+0.804044
+0.048689
+0.697978
+-0.057377
+0.768689
+0.084044
+0.710000
+-0.036667
+0.810000
+0.063333
+0.689289
+-0.057377
+0.830711
+0.084044
+0.689289
+-0.022022
+0.830711
+0.048689
+0.724645
+-0.057377
+0.795355
+0.084044
+0.736667
+-0.036667
+0.836667
+0.063333
+0.715956
+-0.057377
+0.857377
+0.084044
+0.715956
+-0.022022
+0.857377
+0.048689
+0.751311
+-0.057377
+0.822022
+0.084044
+0.763333
+-0.036667
+0.863333
+0.063333
+0.742623
+-0.057377
+0.884044
+0.084044
+0.742623
+-0.022022
+0.884044
+0.048689
+0.777978
+-0.057377
+0.848689
+0.084044
+0.790000
+-0.036667
+0.890000
+0.063333
+0.769289
+-0.057377
+0.910711
+0.084044
+0.769289
+-0.022022
+0.910711
+0.048689
+0.804645
+-0.057377
+0.875355
+0.084044
+0.816667
+-0.036667
+0.916667
+0.063333
+0.795956
+-0.057377
+0.937377
+0.084044
+0.795956
+-0.022022
+0.937377
+0.048689
+0.831311
+-0.057377
+0.902022
+0.084044
+0.843333
+-0.036667
+0.943333
+0.063333
+0.822623
+-0.057377
+0.964044
+0.084044
+0.822623
+-0.022022
+0.964044
+0.048689
+0.857978
+-0.057377
+0.928689
+0.084044
+0.870000
+-0.036667
+0.970000
+0.063333
+0.849289
+-0.057377
+0.990711
+0.084044
+0.849289
+-0.022022
+0.990711
+0.048689
+0.884645
+-0.057377
+0.955355
+0.084044
+0.896667
+-0.036667
+0.996667
+0.063333
+0.875956
+-0.057377
+1.017377
+0.084044
+0.875956
+-0.022022
+1.017377
+0.048689
+0.911311
+-0.057377
+0.982022
+0.084044
+0.923333
+-0.036667
+1.023333
+0.063333
+0.902623
+-0.057377
+1.044044
+0.084044
+0.902623
+-0.022022
+1.044044
+0.048689
+0.937978
+-0.057377
+1.008689
+0.084044
+0.950000
+-0.036667
+1.050000
+0.063333
+0.929289
+-0.057377
+1.070711
+0.084044
+0.929289
+-0.022022
+1.070711
+0.048689
+0.964645
+-0.057377
+1.035355
+0.084044
+-0.036667
+-0.010000
+0.063333
+0.090000
+-0.057377
+-0.030711
+0.084044
+0.110711
+-0.057377
+0.004645
+0.084044
+0.075355
+-0.022022
+-0.030711
+0.048689
+0.110711
+-0.010000
+-0.010000
+0.090000
+0.090000
+-0.030711
+-0.030711
+0.110711
+0.110711
+-0.030711
+0.004645
+0.110711
+0.075355
+0.004645
+-0.030711
+0.075355
+0.110711
+0.016667
+-0.010000
+0.116667
+0.090000
+-0.004044
+-0.030711
+0.137377
+0.110711
+-0.004044
+0.004645
+0.137377
+0.075355
+0.031311
+-0.030711
+0.102022
+0.110711
+0.043333
+-0.010000
+0.143333
+0.090000
+0.022623
+-0.030711
+0.164044
+0.110711
+0.022623
+0.004645
+0.164044
+0.075355
+0.057978
+-0.030711
+0.128689
+0.110711
+0.070000
+-0.010000
+0.170000
+0.090000
+0.049289
+-0.030711
+0.190711
+0.110711
+0.049289
+0.004645
+0.190711
+0.075355
+0.084645
+-0.030711
+0.155355
+0.110711
+0.096667
+-0.010000
+0.196667
+0.090000
+0.075956
+-0.030711
+0.217377
+0.110711
+0.075956
+0.004645
+0.217377
+0.075355
+0.111311
+-0.030711
+0.182022
+0.110711
+0.123333
+-0.010000
+0.223333
+0.090000
+0.102623
+-0.030711
+0.244044
+0.110711
+0.102623
+0.004645
+0.244044
+0.075355
+0.137978
+-0.030711
+0.208689
+0.110711
+0.150000
+-0.010000
+0.250000
+0.090000
+0.129289
+-0.030711
+0.270711
+0.110711
+0.129289
+0.004645
+0.270711
+0.075355
+0.164645
+-0.030711
+0.235355
+0.110711
+0.176667
+-0.010000
+0.276667
+0.090000
+0.155956
+-0.030711
+0.297377
+0.110711
+0.155956
+0.004645
+0.297377
+0.075355
+0.191311
+-0.030711
+0.262022
+0.110711
+0.203333
+-0.010000
+0.303333
+0.090000
+0.182623
+-0.030711
+0.324044
+0.110711
+0.182623
+0.004645
+0.324044
+0.075355
+0.217978
+-0.030711
+0.288689
+0.110711
+0.230000
+-0.010000
+0.330000
+0.090000
+0.209289
+-0.030711
+0.350711
+0.110711
+0.209289
+0.004645
+0.350711
+0.075355
+0.244645
+-0.030711
+0.315355
+0.110711
+0.256667
+-0.010000
+0.356667
+0.090000
+0.235956
+-0.030711
+0.377377
+0.110711
+0.235956
+0.004645
+0.377377
+0.075355
+0.271311
+-0.030711
+0.342022
+0.110711
+0.283333
+-0.010000
+0.383333
+0.090000
+0.262623
+-0.030711
+0.404044
+0.110711
+0.262623
+0.004645
+0.404044
+0.075355
+0.297978
+-0.030711
+0.368689
+0.110711
+0.310000
+-0.010000
+0.410000
+0.090000
+0.289289
+-0.030711
+0.430711
+0.110711
+0.289289
+0.004645
+0.430711
+0.075355
+0.324645
+-0.030711
+0.395355
+0.110711
+0.336667
+-0.010000
+0.436667
+0.090000
+0.315956
+-0.030711
+0.457377
+0.110711
+0.315956
+0.004645
+0.457377
+0.075355
+0.351311
+-0.030711
+0.422022
+0.110711
+0.363333
+-0.010000
+0.463333
+0.090000
+0.342623
+-0.030711
+0.484044
+0.110711
+0.342623
+0.004645
+0.484044
+0.075355
+0.377978
+-0.030711
+0.448689
+0.110711
+0.390000
+-0.010000
+0.490000
+0.090000
+0.369289
+-0.030711
+0.510711
+0.110711
+0.369289
+0.004645
+0.510711
+0.075355
+0.404645
+-0.030711
+0.475355
+0.110711
+0.416667
+-0.010000
+0.516667
+0.090000
+0.395956
+-0.030711
+0.537377
+0.110711
+0.395956
+0.004645
+0.537377
+0.075355
+0.431311
+-0.030711
+0.502022
+0.110711
+0.443333
+-0.010000
+0.543333
+0.090000
+0.422623
+-0.030711
+0.564044
+0.110711
+0.422623
+0.004645
+0.564044
+0.075355
+0.457978
+-0.030711
+0.528689
+0.110711
+0.470000
+-0.010000
+0.570000
+0.090000
+0.449289
+-0.030711
+0.590711
+0.110711
+0.449289
+0.004645
+0.590711
+0.075355
+0.484645
+-0.030711
+0.555355
+0.110711
+0.496667
+-0.010000
+0.596667
+0.090000
+0.475956
+-0.030711
+0.617377
+0.110711
+0.475956
+0.004645
+0.617377
+0.075355
+0.511311
+-0.030711
+0.582022
+0.110711
+0.523333
+-0.010000
+0.623333
+0.090000
+0.502623
+-0.030711
+0.644044
+0.110711
+0.502623
+0.004645
+0.644044
+0.075355
+0.537978
+-0.030711
+0.608689
+0.110711
+0.550000
+-0.010000
+0.650000
+0.090000
+0.529289
+-0.030711
+0.670711
+0.110711
+0.529289
+0.004645
+0.670711
+0.075355
+0.564645
+-0.030711
+0.635355
+0.110711
+0.576667
+-0.010000
+0.676667
+0.090000
+0.555956
+-0.030711
+0.697377
+0.110711
+0.555956
+0.004645
+0.697377
+0.075355
+0.591311
+-0.030711
+0.662022
+0.110711
+0.603333
+-0.010000
+0.703333
+0.090000
+0.582623
+-0.030711
+0.724044
+0.110711
+0.582623
+0.004645
+0.724044
+0.075355
+0.617978
+-0.030711
+0.688689
+0.110711
+0.630000
+-0.010000
+0.730000
+0.090000
+0.609289
+-0.030711
+0.750711
+0.110711
+0.609289
+0.004645
+0.750711
+0.075355
+0.644645
+-0.030711
+0.715355
+0.110711
+0.656667
+-0.010000
+0.756667
+0.090000
+0.635956
+-0.030711
+0.777377
+0.110711
+0.635956
+0.004645
+0.777377
+0.075355
+0.671311
+-0.030711
+0.742022
+0.110711
+0.683333
+-0.010000
+0.783333
+0.090000
+0.662623
+-0.030711
+0.804044
+0.110711
+0.662623
+0.004645
+0.804044
+0.075355
+0.697978
+-0.030711
+0.768689
+0.110711
+0.710000
+-0.010000
+0.810000
+0.090000
+0.689289
+-0.030711
+0.830711
+0.110711
+0.689289
+0.004645
+0.830711
+0.075355
+0.724645
+-0.030711
+0.795355
+0.110711
+0.736667
+-0.010000
+0.836667
+0.090000
+0.715956
+-0.030711
+0.857377
+0.110711
+0.715956
+0.004645
+0.857377
+0.075355
+0.751311
+-0.030711
+0.822022
+0.110711
+0.763333
+-0.010000
+0.863333
+0.090000
+0.742623
+-0.030711
+0.884044
+0.110711
+0.742623
+0.004645
+0.884044
+0.075355
+0.777978
+-0.030711
+0.848689
+0.110711
+0.790000
+-0.010000
+0.890000
+0.090000
+0.769289
+-0.030711
+0.910711
+0.110711
+0.769289
+0.004645
+0.910711
+0.075355
+0.804645
+-0.030711
+0.875355
+0.110711
+0.816667
+-0.010000
+0.916667
+0.090000
+0.795956
+-0.030711
+0.937377
+0.110711
+0.795956
+0.004645
+0.937377
+0.075355
+0.831311
+-0.030711
+0.902022
+0.110711
+0.843333
+-0.010000
+0.943333
+0.090000
+0.822623
+-0.030711
+0.964044
+0.110711
+0.822623
+0.004645
+0.964044
+0.075355
+0.857978
+-0.030711
+0.928689
+0.110711
+0.870000
+-0.010000
+0.970000
+0.090000
+0.849289
+-0.030711
+0.990711
+0.110711
+0.849289
+0.004645
+0.990711
+0.075355
+0.884645
+-0.030711
+0.955355
+0.110711
+0.896667
+-0.010000
+0.996667
+0.090000
+0.875956
+-0.030711
+1.017377
+0.110711
+0.875956
+0.004645
+1.017377
+0.075355
+0.911311
+-0.030711
+0.982022
+0.110711
+0.923333
+-0.010000
+1.023333
+0.090000
+0.902623
+-0.030711
+1.044044
+0.110711
+0.902623
+0.004645
+1.044044
+0.075355
+0.937978
+-0.030711
+1.008689
+0.110711
+0.950000
+-0.010000
+1.050000
+0.090000
+0.929289
+-0.030711
+1.070711
+0.110711
+0.929289
+0.004645
+1.070711
+0.075355
+0.964645
+-0.030711
+1.035355
+0.110711
+-0.036667
+0.016667
+0.063333
+0.116667
+-0.057377
+-0.004044
+0.084044
+0.137377
+-0.057377
+0.031311
+0.084044
+0.102022
+-0.022022
+-0.004044
+0.048689
+0.137377
+-0.010000
+0.016667
+0.090000
+0.116667
+-0.030711
+-0.004044
+0.110711
+0.137377
+-0.030711
+0.031311
+0.110711
+0.102022
+0.004645
+-0.004044
+0.075355
+0.137377
+0.016667
+0.016667
+0.116667
+0.116667
+-0.004044
+-0.004044
+0.137377
+0.137377
+-0.004044
+0.031311
+0.137377
+0.102022
+0.031311
+-0.004044
+0.102022
+0.137377
+0.043333
+0.016667
+0.143333
+0.116667
+0.022623
+-0.004044
+0.164044
+0.137377
+0.022623
+0.031311
+0.164044
+0.102022
+0.057978
+-0.004044
+0.128689
+0.137377
+0.070000
+0.016667
+0.170000
+0.116667
+0.049289
+-0.004044
+0.190711
+0.137377
+0.049289
+0.031311
+0.190711
+0.102022
+0.084645
+-0.004044
+0.155355
+0.137377
+0.096667
+0.016667
+0.196667
+0.116667
+0.075956
+-0.004044
+0.217377
+0.137377
+0.075956
+0.031311
+0.217377
+0.102022
+0.111311
+-0.004044
+0.182022
+0.137377
+0.123333
+0.016667
+0.223333
+0.116667
+0.102623
+-0.004044
+0.244044
+0.137377
+0.102623
+0.031311
+0.244044
+0.102022
+0.137978
+-0.004044
+0.208689
+0.137377
+0.150000
+0.016667
+0.250000
+0.116667
+0.129289
+-0.004044
+0.270711
+0.137377
+0.129289
+0.031311
+0.270711
+0.102022
+0.164645
+-0.004044
+0.235355
+0.137377
+0.176667
+0.016667
+0.276667
+0.116667
+0.155956
+-0.004044
+0.297377
+0.137377
+0.155956
+0.031311
+0.297377
+0.102022
+0.191311
+-0.004044
+0.262022
+0.137377
+0.203333
+0.016667
+0.303333
+0.116667
+0.182623
+-0.004044
+0.324044
+0.137377
+0.182623
+0.031311
+0.324044
+0.102022
+0.217978
+-0.004044
+0.288689
+0.137377
+0.230000
+0.016667
+0.330000
+0.116667
+0.209289
+-0.004044
+0.350711
+0.137377
+0.209289
+0.031311
+0.350711
+0.102022
+0.244645
+-0.004044
+0.315355
+0.137377
+0.256667
+0.016667
+0.356667
+0.116667
+0.235956
+-0.004044
+0.377377
+0.137377
+0.235956
+0.031311
+0.377377
+0.102022
+0.271311
+-0.004044
+0.342022
+0.137377
+0.283333
+0.016667
+0.383333
+0.116667
+0.262623
+-0.004044
+0.404044
+0.137377
+0.262623
+0.031311
+0.404044
+0.102022
+0.297978
+-0.004044
+0.368689
+0.137377
+0.310000
+0.016667
+0.410000
+0.116667
+0.289289
+-0.004044
+0.430711
+0.137377
+0.289289
+0.031311
+0.430711
+0.102022
+0.324645
+-0.004044
+0.395355
+0.137377
+0.336667
+0.016667
+0.436667
+0.116667
+0.315956
+-0.004044
+0.457377
+0.137377
+0.315956
+0.031311
+0.457377
+0.102022
+0.351311
+-0.004044
+0.422022
+0.137377
+0.363333
+0.016667
+0.463333
+0.116667
+0.342623
+-0.004044
+0.484044
+0.137377
+0.342623
+0.031311
+0.484044
+0.102022
+0.377978
+-0.004044
+0.448689
+0.137377
+0.390000
+0.016667
+0.490000
+0.116667
+0.369289
+-0.004044
+0.510711
+0.137377
+0.369289
+0.031311
+0.510711
+0.102022
+0.404645
+-0.004044
+0.475355
+0.137377
+0.416667
+0.016667
+0.516667
+0.116667
+0.395956
+-0.004044
+0.537377
+0.137377
+0.395956
+0.031311
+0.537377
+0.102022
+0.431311
+-0.004044
+0.502022
+0.137377
+0.443333
+0.016667
+0.543333
+0.116667
+0.422623
+-0.004044
+0.564044
+0.137377
+0.422623
+0.031311
+0.564044
+0.102022
+0.457978
+-0.004044
+0.528689
+0.137377
+0.470000
+0.016667
+0.570000
+0.116667
+0.449289
+-0.004044
+0.590711
+0.137377
+0.449289
+0.031311
+0.590711
+0.102022
+0.484645
+-0.004044
+0.555355
+0.137377
+0.496667
+0.016667
+0.596667
+0.116667
+0.475956
+-0.004044
+0.617377
+0.137377
+0.475956
+0.031311
+0.617377
+0.102022
+0.511311
+-0.004044
+0.582022
+0.137377
+0.523333
+0.016667
+0.623333
+0.116667
+0.502623
+-0.004044
+0.644044
+0.137377
+0.502623
+0.031311
+0.644044
+0.102022
+0.537978
+-0.004044
+0.608689
+0.137377
+0.550000
+0.016667
+0.650000
+0.116667
+0.529289
+-0.004044
+0.670711
+0.137377
+0.529289
+0.031311
+0.670711
+0.102022
+0.564645
+-0.004044
+0.635355
+0.137377
+0.576667
+0.016667
+0.676667
+0.116667
+0.555956
+-0.004044
+0.697377
+0.137377
+0.555956
+0.031311
+0.697377
+0.102022
+0.591311
+-0.004044
+0.662022
+0.137377
+0.603333
+0.016667
+0.703333
+0.116667
+0.582623
+-0.004044
+0.724044
+0.137377
+0.582623
+0.031311
+0.724044
+0.102022
+0.617978
+-0.004044
+0.688689
+0.137377
+0.630000
+0.016667
+0.730000
+0.116667
+0.609289
+-0.004044
+0.750711
+0.137377
+0.609289
+0.031311
+0.750711
+0.102022
+0.644645
+-0.004044
+0.715355
+0.137377
+0.656667
+0.016667
+0.756667
+0.116667
+0.635956
+-0.004044
+0.777377
+0.137377
+0.635956
+0.031311
+0.777377
+0.102022
+0.671311
+-0.004044
+0.742022
+0.137377
+0.683333
+0.016667
+0.783333
+0.116667
+0.662623
+-0.004044
+0.804044
+0.137377
+0.662623
+0.031311
+0.804044
+0.102022
+0.697978
+-0.004044
+0.768689
+0.137377
+0.710000
+0.016667
+0.810000
+0.116667
+0.689289
+-0.004044
+0.830711
+0.137377
+0.689289
+0.031311
+0.830711
+0.102022
+0.724645
+-0.004044
+0.795355
+0.137377
+0.736667
+0.016667
+0.836667
+0.116667
+0.715956
+-0.004044
+0.857377
+0.137377
+0.715956
+0.031311
+0.857377
+0.102022
+0.751311
+-0.004044
+0.822022
+0.137377
+0.763333
+0.016667
+0.863333
+0.116667
+0.742623
+-0.004044
+0.884044
+0.137377
+0.742623
+0.031311
+0.884044
+0.102022
+0.777978
+-0.004044
+0.848689
+0.137377
+0.790000
+0.016667
+0.890000
+0.116667
+0.769289
+-0.004044
+0.910711
+0.137377
+0.769289
+0.031311
+0.910711
+0.102022
+0.804645
+-0.004044
+0.875355
+0.137377
+0.816667
+0.016667
+0.916667
+0.116667
+0.795956
+-0.004044
+0.937377
+0.137377
+0.795956
+0.031311
+0.937377
+0.102022
+0.831311
+-0.004044
+0.902022
+0.137377
+0.843333
+0.016667
+0.943333
+0.116667
+0.822623
+-0.004044
+0.964044
+0.137377
+0.822623
+0.031311
+0.964044
+0.102022
+0.857978
+-0.004044
+0.928689
+0.137377
+0.870000
+0.016667
+0.970000
+0.116667
+0.849289
+-0.004044
+0.990711
+0.137377
+0.849289
+0.031311
+0.990711
+0.102022
+0.884645
+-0.004044
+0.955355
+0.137377
+0.896667
+0.016667
+0.996667
+0.116667
+0.875956
+-0.004044
+1.017377
+0.137377
+0.875956
+0.031311
+1.017377
+0.102022
+0.911311
+-0.004044
+0.982022
+0.137377
+0.923333
+0.016667
+1.023333
+0.116667
+0.902623
+-0.004044
+1.044044
+0.137377
+0.902623
+0.031311
+1.044044
+0.102022
+0.937978
+-0.004044
+1.008689
+0.137377
+0.950000
+0.016667
+1.050000
+0.116667
+0.929289
+-0.004044
+1.070711
+0.137377
+0.929289
+0.031311
+1.070711
+0.102022
+0.964645
+-0.004044
+1.035355
+0.137377
+-0.036667
+0.043333
+0.063333
+0.143333
+-0.057377
+0.022623
+0.084044
+0.164044
+-0.057377
+0.057978
+0.084044
+0.128689
+-0.022022
+0.022623
+0.048689
+0.164044
+-0.010000
+0.043333
+0.090000
+0.143333
+-0.030711
+0.022623
+0.110711
+0.164044
+-0.030711
+0.057978
+0.110711
+0.128689
+0.004645
+0.022623
+0.075355
+0.164044
+0.016667
+0.043333
+0.116667
+0.143333
+-0.004044
+0.022623
+0.137377
+0.164044
+-0.004044
+0.057978
+0.137377
+0.128689
+0.031311
+0.022623
+0.102022
+0.164044
+0.043333
+0.043333
+0.143333
+0.143333
+0.022623
+0.022623
+0.164044
+0.164044
+0.022623
+0.057978
+0.164044
+0.128689
+0.057978
+0.022623
+0.128689
+0.164044
+0.070000
+0.043333
+0.170000
+0.143333
+0.049289
+0.022623
+0.190711
+0.164044
+0.049289
+0.057978
+0.190711
+0.128689
+0.084645
+0.022623
+0.155355
+0.164044
+0.096667
+0.043333
+0.196667
+0.143333
+0.075956
+0.022623
+0.217377
+0.164044
+0.075956
+0.057978
+0.217377
+0.128689
+0.111311
+0.022623
+0.182022
+0.164044
+0.123333
+0.043333
+0.223333
+0.143333
+0.102623
+0.022623
+0.244044
+0.164044
+0.102623
+0.057978
+0.244044
+0.128689
+0.137978
+0.022623
+0.208689
+0.164044
+0.150000
+0.043333
+0.250000
+0.143333
+0.129289
+0.022623
+0.270711
+0.164044
+0.129289
+0.057978
+0.270711
+0.128689
+0.164645
+0.022623
+0.235355
+0.164044
+0.176667
+0.043333
+0.276667
+0.143333
+0.155956
+0.022623
+0.297377
+0.164044
+0.155956
+0.057978
+0.297377
+0.128689
+0.191311
+0.022623
+0.262022
+0.164044
+0.203333
+0.043333
+0.303333
+0.143333
+0.182623
+0.022623
+0.324044
+0.164044
+0.182623
+0.057978
+0.324044
+0.128689
+0.217978
+0.022623
+0.288689
+0.164044
+0.230000
+0.043333
+0.330000
+0.143333
+0.209289
+0.022623
+0.350711
+0.164044
+0.209289
+0.057978
+0.350711
+0.128689
+0.244645
+0.022623
+0.315355
+0.164044
+0.256667
+0.043333
+0.356667
+0.143333
+0.235956
+0.022623
+0.377377
+0.164044
+0.235956
+0.057978
+0.377377
+0.128689
+0.271311
+0.022623
+0.342022
+0.164044
+0.283333
+0.043333
+0.383333
+0.143333
+0.262623
+0.022623
+0.404044
+0.164044
+0.262623
+0.057978
+0.404044
+0.128689
+0.297978
+0.022623
+0.368689
+0.164044
+0.310000
+0.043333
+0.410000
+0.143333
+0.289289
+0.022623
+0.430711
+0.164044
+0.289289
+0.057978
+0.430711
+0.128689
+0.324645
+0.022623
+0.395355
+0.164044
+0.336667
+0.043333
+0.436667
+0.143333
+0.315956
+0.022623
+0.457377
+0.164044
+0.315956
+0.057978
+0.457377
+0.128689
+0.351311
+0.022623
+0.422022
+0.164044
+0.363333
+0.043333
+0.463333
+0.143333
+0.342623
+0.022623
+0.484044
+0.164044
+0.342623
+0.057978
+0.484044
+0.128689
+0.377978
+0.022623
+0.448689
+0.164044
+0.390000
+0.043333
+0.490000
+0.143333
+0.369289
+0.022623
+0.510711
+0.164044
+0.369289
+0.057978
+0.510711
+0.128689
+0.404645
+0.022623
+0.475355
+0.164044
+0.416667
+0.043333
+0.516667
+0.143333
+0.395956
+0.022623
+0.537377
+0.164044
+0.395956
+0.057978
+0.537377
+0.128689
+0.431311
+0.022623
+0.502022
+0.164044
+0.443333
+0.043333
+0.543333
+0.143333
+0.422623
+0.022623
+0.564044
+0.164044
+0.422623
+0.057978
+0.564044
+0.128689
+0.457978
+0.022623
+0.528689
+0.164044
+0.470000
+0.043333
+0.570000
+0.143333
+0.449289
+0.022623
+0.590711
+0.164044
+0.449289
+0.057978
+0.590711
+0.128689
+0.484645
+0.022623
+0.555355
+0.164044
+0.496667
+0.043333
+0.596667
+0.143333
+0.475956
+0.022623
+0.617377
+0.164044
+0.475956
+0.057978
+0.617377
+0.128689
+0.511311
+0.022623
+0.582022
+0.164044
+0.523333
+0.043333
+0.623333
+0.143333
+0.502623
+0.022623
+0.644044
+0.164044
+0.502623
+0.057978
+0.644044
+0.128689
+0.537978
+0.022623
+0.608689
+0.164044
+0.550000
+0.043333
+0.650000
+0.143333
+0.529289
+0.022623
+0.670711
+0.164044
+0.529289
+0.057978
+0.670711
+0.128689
+0.564645
+0.022623
+0.635355
+0.164044
+0.576667
+0.043333
+0.676667
+0.143333
+0.555956
+0.022623
+0.697377
+0.164044
+0.555956
+0.057978
+0.697377
+0.128689
+0.591311
+0.022623
+0.662022
+0.164044
+0.603333
+0.043333
+0.703333
+0.143333
+0.582623
+0.022623
+0.724044
+0.164044
+0.582623
+0.057978
+0.724044
+0.128689
+0.617978
+0.022623
+0.688689
+0.164044
+0.630000
+0.043333
+0.730000
+0.143333
+0.609289
+0.022623
+0.750711
+0.164044
+0.609289
+0.057978
+0.750711
+0.128689
+0.644645
+0.022623
+0.715355
+0.164044
+0.656667
+0.043333
+0.756667
+0.143333
+0.635956
+0.022623
+0.777377
+0.164044
+0.635956
+0.057978
+0.777377
+0.128689
+0.671311
+0.022623
+0.742022
+0.164044
+0.683333
+0.043333
+0.783333
+0.143333
+0.662623
+0.022623
+0.804044
+0.164044
+0.662623
+0.057978
+0.804044
+0.128689
+0.697978
+0.022623
+0.768689
+0.164044
+0.710000
+0.043333
+0.810000
+0.143333
+0.689289
+0.022623
+0.830711
+0.164044
+0.689289
+0.057978
+0.830711
+0.128689
+0.724645
+0.022623
+0.795355
+0.164044
+0.736667
+0.043333
+0.836667
+0.143333
+0.715956
+0.022623
+0.857377
+0.164044
+0.715956
+0.057978
+0.857377
+0.128689
+0.751311
+0.022623
+0.822022
+0.164044
+0.763333
+0.043333
+0.863333
+0.143333
+0.742623
+0.022623
+0.884044
+0.164044
+0.742623
+0.057978
+0.884044
+0.128689
+0.777978
+0.022623
+0.848689
+0.164044
+0.790000
+0.043333
+0.890000
+0.143333
+0.769289
+0.022623
+0.910711
+0.164044
+0.769289
+0.057978
+0.910711
+0.128689
+0.804645
+0.022623
+0.875355
+0.164044
+0.816667
+0.043333
+0.916667
+0.143333
+0.795956
+0.022623
+0.937377
+0.164044
+0.795956
+0.057978
+0.937377
+0.128689
+0.831311
+0.022623
+0.902022
+0.164044
+0.843333
+0.043333
+0.943333
+0.143333
+0.822623
+0.022623
+0.964044
+0.164044
+0.822623
+0.057978
+0.964044
+0.128689
+0.857978
+0.022623
+0.928689
+0.164044
+0.870000
+0.043333
+0.970000
+0.143333
+0.849289
+0.022623
+0.990711
+0.164044
+0.849289
+0.057978
+0.990711
+0.128689
+0.884645
+0.022623
+0.955355
+0.164044
+0.896667
+0.043333
+0.996667
+0.143333
+0.875956
+0.022623
+1.017377
+0.164044
+0.875956
+0.057978
+1.017377
+0.128689
+0.911311
+0.022623
+0.982022
+0.164044
+0.923333
+0.043333
+1.023333
+0.143333
+0.902623
+0.022623
+1.044044
+0.164044
+0.902623
+0.057978
+1.044044
+0.128689
+0.937978
+0.022623
+1.008689
+0.164044
+0.950000
+0.043333
+1.050000
+0.143333
+0.929289
+0.022623
+1.070711
+0.164044
+0.929289
+0.057978
+1.070711
+0.128689
+0.964645
+0.022623
+1.035355
+0.164044
+-0.036667
+0.070000
+0.063333
+0.170000
+-0.057377
+0.049289
+0.084044
+0.190711
+-0.057377
+0.084645
+0.084044
+0.155355
+-0.022022
+0.049289
+0.048689
+0.190711
+-0.010000
+0.070000
+0.090000
+0.170000
+-0.030711
+0.049289
+0.110711
+0.190711
+-0.030711
+0.084645
+0.110711
+0.155355
+0.004645
+0.049289
+0.075355
+0.190711
+0.016667
+0.070000
+0.116667
+0.170000
+-0.004044
+0.049289
+0.137377
+0.190711
+-0.004044
+0.084645
+0.137377
+0.155355
+0.031311
+0.049289
+0.102022
+0.190711
+0.043333
+0.070000
+0.143333
+0.170000
+0.022623
+0.049289
+0.164044
+0.190711
+0.022623
+0.084645
+0.164044
+0.155355
+0.057978
+0.049289
+0.128689
+0.190711
+0.070000
+0.070000
+0.170000
+0.170000
+0.049289
+0.049289
+0.190711
+0.190711
+0.049289
+0.084645
+0.190711
+0.155355
+0.084645
+0.049289
+0.155355
+0.190711
+0.096667
+0.070000
+0.196667
+0.170000
+0.075956
+0.049289
+0.217377
+0.190711
+0.075956
+0.084645
+0.217377
+0.155355
+0.111311
+0.049289
+0.182022
+0.190711
+0.123333
+0.070000
+0.223333
+0.170000
+0.102623
+0.049289
+0.244044
+0.190711
+0.102623
+0.084645
+0.244044
+0.155355
+0.137978
+0.049289
+0.208689
+0.190711
+0.150000
+0.070000
+0.250000
+0.170000
+0.129289
+0.049289
+0.270711
+0.190711
+0.129289
+0.084645
+0.270711
+0.155355
+0.164645
+0.049289
+0.235355
+0.190711
+0.176667
+0.070000
+0.276667
+0.170000
+0.155956
+0.049289
+0.297377
+0.190711
+0.155956
+0.084645
+0.297377
+0.155355
+0.191311
+0.049289
+0.262022
+0.190711
+0.203333
+0.070000
+0.303333
+0.170000
+0.182623
+0.049289
+0.324044
+0.190711
+0.182623
+0.084645
+0.324044
+0.155355
+0.217978
+0.049289
+0.288689
+0.190711
+0.230000
+0.070000
+0.330000
+0.170000
+0.209289
+0.049289
+0.350711
+0.190711
+0.209289
+0.084645
+0.350711
+0.155355
+0.244645
+0.049289
+0.315355
+0.190711
+0.256667
+0.070000
+0.356667
+0.170000
+0.235956
+0.049289
+0.377377
+0.190711
+0.235956
+0.084645
+0.377377
+0.155355
+0.271311
+0.049289
+0.342022
+0.190711
+0.283333
+0.070000
+0.383333
+0.170000
+0.262623
+0.049289
+0.404044
+0.190711
+0.262623
+0.084645
+0.404044
+0.155355
+0.297978
+0.049289
+0.368689
+0.190711
+0.310000
+0.070000
+0.410000
+0.170000
+0.289289
+0.049289
+0.430711
+0.190711
+0.289289
+0.084645
+0.430711
+0.155355
+0.324645
+0.049289
+0.395355
+0.190711
+0.336667
+0.070000
+0.436667
+0.170000
+0.315956
+0.049289
+0.457377
+0.190711
+0.315956
+0.084645
+0.457377
+0.155355
+0.351311
+0.049289
+0.422022
+0.190711
+0.363333
+0.070000
+0.463333
+0.170000
+0.342623
+0.049289
+0.484044
+0.190711
+0.342623
+0.084645
+0.484044
+0.155355
+0.377978
+0.049289
+0.448689
+0.190711
+0.390000
+0.070000
+0.490000
+0.170000
+0.369289
+0.049289
+0.510711
+0.190711
+0.369289
+0.084645
+0.510711
+0.155355
+0.404645
+0.049289
+0.475355
+0.190711
+0.416667
+0.070000
+0.516667
+0.170000
+0.395956
+0.049289
+0.537377
+0.190711
+0.395956
+0.084645
+0.537377
+0.155355
+0.431311
+0.049289
+0.502022
+0.190711
+0.443333
+0.070000
+0.543333
+0.170000
+0.422623
+0.049289
+0.564044
+0.190711
+0.422623
+0.084645
+0.564044
+0.155355
+0.457978
+0.049289
+0.528689
+0.190711
+0.470000
+0.070000
+0.570000
+0.170000
+0.449289
+0.049289
+0.590711
+0.190711
+0.449289
+0.084645
+0.590711
+0.155355
+0.484645
+0.049289
+0.555355
+0.190711
+0.496667
+0.070000
+0.596667
+0.170000
+0.475956
+0.049289
+0.617377
+0.190711
+0.475956
+0.084645
+0.617377
+0.155355
+0.511311
+0.049289
+0.582022
+0.190711
+0.523333
+0.070000
+0.623333
+0.170000
+0.502623
+0.049289
+0.644044
+0.190711
+0.502623
+0.084645
+0.644044
+0.155355
+0.537978
+0.049289
+0.608689
+0.190711
+0.550000
+0.070000
+0.650000
+0.170000
+0.529289
+0.049289
+0.670711
+0.190711
+0.529289
+0.084645
+0.670711
+0.155355
+0.564645
+0.049289
+0.635355
+0.190711
+0.576667
+0.070000
+0.676667
+0.170000
+0.555956
+0.049289
+0.697377
+0.190711
+0.555956
+0.084645
+0.697377
+0.155355
+0.591311
+0.049289
+0.662022
+0.190711
+0.603333
+0.070000
+0.703333
+0.170000
+0.582623
+0.049289
+0.724044
+0.190711
+0.582623
+0.084645
+0.724044
+0.155355
+0.617978
+0.049289
+0.688689
+0.190711
+0.630000
+0.070000
+0.730000
+0.170000
+0.609289
+0.049289
+0.750711
+0.190711
+0.609289
+0.084645
+0.750711
+0.155355
+0.644645
+0.049289
+0.715355
+0.190711
+0.656667
+0.070000
+0.756667
+0.170000
+0.635956
+0.049289
+0.777377
+0.190711
+0.635956
+0.084645
+0.777377
+0.155355
+0.671311
+0.049289
+0.742022
+0.190711
+0.683333
+0.070000
+0.783333
+0.170000
+0.662623
+0.049289
+0.804044
+0.190711
+0.662623
+0.084645
+0.804044
+0.155355
+0.697978
+0.049289
+0.768689
+0.190711
+0.710000
+0.070000
+0.810000
+0.170000
+0.689289
+0.049289
+0.830711
+0.190711
+0.689289
+0.084645
+0.830711
+0.155355
+0.724645
+0.049289
+0.795355
+0.190711
+0.736667
+0.070000
+0.836667
+0.170000
+0.715956
+0.049289
+0.857377
+0.190711
+0.715956
+0.084645
+0.857377
+0.155355
+0.751311
+0.049289
+0.822022
+0.190711
+0.763333
+0.070000
+0.863333
+0.170000
+0.742623
+0.049289
+0.884044
+0.190711
+0.742623
+0.084645
+0.884044
+0.155355
+0.777978
+0.049289
+0.848689
+0.190711
+0.790000
+0.070000
+0.890000
+0.170000
+0.769289
+0.049289
+0.910711
+0.190711
+0.769289
+0.084645
+0.910711
+0.155355
+0.804645
+0.049289
+0.875355
+0.190711
+0.816667
+0.070000
+0.916667
+0.170000
+0.795956
+0.049289
+0.937377
+0.190711
+0.795956
+0.084645
+0.937377
+0.155355
+0.831311
+0.049289
+0.902022
+0.190711
+0.843333
+0.070000
+0.943333
+0.170000
+0.822623
+0.049289
+0.964044
+0.190711
+0.822623
+0.084645
+0.964044
+0.155355
+0.857978
+0.049289
+0.928689
+0.190711
+0.870000
+0.070000
+0.970000
+0.170000
+0.849289
+0.049289
+0.990711
+0.190711
+0.849289
+0.084645
+0.990711
+0.155355
+0.884645
+0.049289
+0.955355
+0.190711
+0.896667
+0.070000
+0.996667
+0.170000
+0.875956
+0.049289
+1.017377
+0.190711
+0.875956
+0.084645
+1.017377
+0.155355
+0.911311
+0.049289
+0.982022
+0.190711
+0.923333
+0.070000
+1.023333
+0.170000
+0.902623
+0.049289
+1.044044
+0.190711
+0.902623
+0.084645
+1.044044
+0.155355
+0.937978
+0.049289
+1.008689
+0.190711
+0.950000
+0.070000
+1.050000
+0.170000
+0.929289
+0.049289
+1.070711
+0.190711
+0.929289
+0.084645
+1.070711
+0.155355
+0.964645
+0.049289
+1.035355
+0.190711
+-0.036667
+0.096667
+0.063333
+0.196667
+-0.057377
+0.075956
+0.084044
+0.217377
+-0.057377
+0.111311
+0.084044
+0.182022
+-0.022022
+0.075956
+0.048689
+0.217377
+-0.010000
+0.096667
+0.090000
+0.196667
+-0.030711
+0.075956
+0.110711
+0.217377
+-0.030711
+0.111311
+0.110711
+0.182022
+0.004645
+0.075956
+0.075355
+0.217377
+0.016667
+0.096667
+0.116667
+0.196667
+-0.004044
+0.075956
+0.137377
+0.217377
+-0.004044
+0.111311
+0.137377
+0.182022
+0.031311
+0.075956
+0.102022
+0.217377
+0.043333
+0.096667
+0.143333
+0.196667
+0.022623
+0.075956
+0.164044
+0.217377
+0.022623
+0.111311
+0.164044
+0.182022
+0.057978
+0.075956
+0.128689
+0.217377
+0.070000
+0.096667
+0.170000
+0.196667
+0.049289
+0.075956
+0.190711
+0.217377
+0.049289
+0.111311
+0.190711
+0.182022
+0.084645
+0.075956
+0.155355
+0.217377
+0.096667
+0.096667
+0.196667
+0.196667
+0.075956
+0.075956
+0.217377
+0.217377
+0.075956
+0.111311
+0.217377
+0.182022
+0.111311
+0.075956
+0.182022
+0.217377
+0.123333
+0.096667
+0.223333
+0.196667
+0.102623
+0.075956
+0.244044
+0.217377
+0.102623
+0.111311
+0.244044
+0.182022
+0.137978
+0.075956
+0.208689
+0.217377
+0.150000
+0.096667
+0.250000
+0.196667
+0.129289
+0.075956
+0.270711
+0.217377
+0.129289
+0.111311
+0.270711
+0.182022
+0.164645
+0.075956
+0.235355
+0.217377
+0.176667
+0.096667
+0.276667
+0.196667
+0.155956
+0.075956
+0.297377
+0.217377
+0.155956
+0.111311
+0.297377
+0.182022
+0.191311
+0.075956
+0.262022
+0.217377
+0.203333
+0.096667
+0.303333
+0.196667
+0.182623
+0.075956
+0.324044
+0.217377
+0.182623
+0.111311
+0.324044
+0.182022
+0.217978
+0.075956
+0.288689
+0.217377
+0.230000
+0.096667
+0.330000
+0.196667
+0.209289
+0.075956
+0.350711
+0.217377
+0.209289
+0.111311
+0.350711
+0.182022
+0.244645
+0.075956
+0.315355
+0.217377
+0.256667
+0.096667
+0.356667
+0.196667
+0.235956
+0.075956
+0.377377
+0.217377
+0.235956
+0.111311
+0.377377
+0.182022
+0.271311
+0.075956
+0.342022
+0.217377
+0.283333
+0.096667
+0.383333
+0.196667
+0.262623
+0.075956
+0.404044
+0.217377
+0.262623
+0.111311
+0.404044
+0.182022
+0.297978
+0.075956
+0.368689
+0.217377
+0.310000
+0.096667
+0.410000
+0.196667
+0.289289
+0.075956
+0.430711
+0.217377
+0.289289
+0.111311
+0.430711
+0.182022
+0.324645
+0.075956
+0.395355
+0.217377
+0.336667
+0.096667
+0.436667
+0.196667
+0.315956
+0.075956
+0.457377
+0.217377
+0.315956
+0.111311
+0.457377
+0.182022
+0.351311
+0.075956
+0.422022
+0.217377
+0.363333
+0.096667
+0.463333
+0.196667
+0.342623
+0.075956
+0.484044
+0.217377
+0.342623
+0.111311
+0.484044
+0.182022
+0.377978
+0.075956
+0.448689
+0.217377
+0.390000
+0.096667
+0.490000
+0.196667
+0.369289
+0.075956
+0.510711
+0.217377
+0.369289
+0.111311
+0.510711
+0.182022
+0.404645
+0.075956
+0.475355
+0.217377
+0.416667
+0.096667
+0.516667
+0.196667
+0.395956
+0.075956
+0.537377
+0.217377
+0.395956
+0.111311
+0.537377
+0.182022
+0.431311
+0.075956
+0.502022
+0.217377
+0.443333
+0.096667
+0.543333
+0.196667
+0.422623
+0.075956
+0.564044
+0.217377
+0.422623
+0.111311
+0.564044
+0.182022
+0.457978
+0.075956
+0.528689
+0.217377
+0.470000
+0.096667
+0.570000
+0.196667
+0.449289
+0.075956
+0.590711
+0.217377
+0.449289
+0.111311
+0.590711
+0.182022
+0.484645
+0.075956
+0.555355
+0.217377
+0.496667
+0.096667
+0.596667
+0.196667
+0.475956
+0.075956
+0.617377
+0.217377
+0.475956
+0.111311
+0.617377
+0.182022
+0.511311
+0.075956
+0.582022
+0.217377
+0.523333
+0.096667
+0.623333
+0.196667
+0.502623
+0.075956
+0.644044
+0.217377
+0.502623
+0.111311
+0.644044
+0.182022
+0.537978
+0.075956
+0.608689
+0.217377
+0.550000
+0.096667
+0.650000
+0.196667
+0.529289
+0.075956
+0.670711
+0.217377
+0.529289
+0.111311
+0.670711
+0.182022
+0.564645
+0.075956
+0.635355
+0.217377
+0.576667
+0.096667
+0.676667
+0.196667
+0.555956
+0.075956
+0.697377
+0.217377
+0.555956
+0.111311
+0.697377
+0.182022
+0.591311
+0.075956
+0.662022
+0.217377
+0.603333
+0.096667
+0.703333
+0.196667
+0.582623
+0.075956
+0.724044
+0.217377
+0.582623
+0.111311
+0.724044
+0.182022
+0.617978
+0.075956
+0.688689
+0.217377
+0.630000
+0.096667
+0.730000
+0.196667
+0.609289
+0.075956
+0.750711
+0.217377
+0.609289
+0.111311
+0.750711
+0.182022
+0.644645
+0.075956
+0.715355
+0.217377
+0.656667
+0.096667
+0.756667
+0.196667
+0.635956
+0.075956
+0.777377
+0.217377
+0.635956
+0.111311
+0.777377
+0.182022
+0.671311
+0.075956
+0.742022
+0.217377
+0.683333
+0.096667
+0.783333
+0.196667
+0.662623
+0.075956
+0.804044
+0.217377
+0.662623
+0.111311
+0.804044
+0.182022
+0.697978
+0.075956
+0.768689
+0.217377
+0.710000
+0.096667
+0.810000
+0.196667
+0.689289
+0.075956
+0.830711
+0.217377
+0.689289
+0.111311
+0.830711
+0.182022
+0.724645
+0.075956
+0.795355
+0.217377
+0.736667
+0.096667
+0.836667
+0.196667
+0.715956
+0.075956
+0.857377
+0.217377
+0.715956
+0.111311
+0.857377
+0.182022
+0.751311
+0.075956
+0.822022
+0.217377
+0.763333
+0.096667
+0.863333
+0.196667
+0.742623
+0.075956
+0.884044
+0.217377
+0.742623
+0.111311
+0.884044
+0.182022
+0.777978
+0.075956
+0.848689
+0.217377
+0.790000
+0.096667
+0.890000
+0.196667
+0.769289
+0.075956
+0.910711
+0.217377
+0.769289
+0.111311
+0.910711
+0.182022
+0.804645
+0.075956
+0.875355
+0.217377
+0.816667
+0.096667
+0.916667
+0.196667
+0.795956
+0.075956
+0.937377
+0.217377
+0.795956
+0.111311
+0.937377
+0.182022
+0.831311
+0.075956
+0.902022
+0.217377
+0.843333
+0.096667
+0.943333
+0.196667
+0.822623
+0.075956
+0.964044
+0.217377
+0.822623
+0.111311
+0.964044
+0.182022
+0.857978
+0.075956
+0.928689
+0.217377
+0.870000
+0.096667
+0.970000
+0.196667
+0.849289
+0.075956
+0.990711
+0.217377
+0.849289
+0.111311
+0.990711
+0.182022
+0.884645
+0.075956
+0.955355
+0.217377
+0.896667
+0.096667
+0.996667
+0.196667
+0.875956
+0.075956
+1.017377
+0.217377
+0.875956
+0.111311
+1.017377
+0.182022
+0.911311
+0.075956
+0.982022
+0.217377
+0.923333
+0.096667
+1.023333
+0.196667
+0.902623
+0.075956
+1.044044
+0.217377
+0.902623
+0.111311
+1.044044
+0.182022
+0.937978
+0.075956
+1.008689
+0.217377
+0.950000
+0.096667
+1.050000
+0.196667
+0.929289
+0.075956
+1.070711
+0.217377
+0.929289
+0.111311
+1.070711
+0.182022
+0.964645
+0.075956
+1.035355
+0.217377
+-0.036667
+0.123333
+0.063333
+0.223333
+-0.057377
+0.102623
+0.084044
+0.244044
+-0.057377
+0.137978
+0.084044
+0.208689
+-0.022022
+0.102623
+0.048689
+0.244044
+-0.010000
+0.123333
+0.090000
+0.223333
+-0.030711
+0.102623
+0.110711
+0.244044
+-0.030711
+0.137978
+0.110711
+0.208689
+0.004645
+0.102623
+0.075355
+0.244044
+0.016667
+0.123333
+0.116667
+0.223333
+-0.004044
+0.102623
+0.137377
+0.244044
+-0.004044
+0.137978
+0.137377
+0.208689
+0.031311
+0.102623
+0.102022
+0.244044
+0.043333
+0.123333
+0.143333
+0.223333
+0.022623
+0.102623
+0.164044
+0.244044
+0.022623
+0.137978
+0.164044
+0.208689
+0.057978
+0.102623
+0.128689
+0.244044
+0.070000
+0.123333
+0.170000
+0.223333
+0.049289
+0.102623
+0.190711
+0.244044
+0.049289
+0.137978
+0.190711
+0.208689
+0.084645
+0.102623
+0.155355
+0.244044
+0.096667
+0.123333
+0.196667
+0.223333
+0.075956
+0.102623
+0.217377
+0.244044
+0.075956
+0.137978
+0.217377
+0.208689
+0.111311
+0.102623
+0.182022
+0.244044
+0.123333
+0.123333
+0.223333
+0.223333
+0.102623
+0.102623
+0.244044
+0.244044
+0.102623
+0.137978
+0.244044
+0.208689
+0.137978
+0.102623
+0.208689
+0.244044
+0.150000
+0.123333
+0.250000
+0.223333
+0.129289
+0.102623
+0.270711
+0.244044
+0.129289
+0.137978
+0.270711
+0.208689
+0.164645
+0.102623
+0.235355
+0.244044
+0.176667
+0.123333
+0.276667
+0.223333
+0.155956
+0.102623
+0.297377
+0.244044
+0.155956
+0.137978
+0.297377
+0.208689
+0.191311
+0.102623
+0.262022
+0.244044
+0.203333
+0.123333
+0.303333
+0.223333
+0.182623
+0.102623
+0.324044
+0.244044
+0.182623
+0.137978
+0.324044
+0.208689
+0.217978
+0.102623
+0.288689
+0.244044
+0.230000
+0.123333
+0.330000
+0.223333
+0.209289
+0.102623
+0.350711
+0.244044
+0.209289
+0.137978
+0.350711
+0.208689
+0.244645
+0.102623
+0.315355
+0.244044
+0.256667
+0.123333
+0.356667
+0.223333
+0.235956
+0.102623
+0.377377
+0.244044
+0.235956
+0.137978
+0.377377
+0.208689
+0.271311
+0.102623
+0.342022
+0.244044
+0.283333
+0.123333
+0.383333
+0.223333
+0.262623
+0.102623
+0.404044
+0.244044
+0.262623
+0.137978
+0.404044
+0.208689
+0.297978
+0.102623
+0.368689
+0.244044
+0.310000
+0.123333
+0.410000
+0.223333
+0.289289
+0.102623
+0.430711
+0.244044
+0.289289
+0.137978
+0.430711
+0.208689
+0.324645
+0.102623
+0.395355
+0.244044
+0.336667
+0.123333
+0.436667
+0.223333
+0.315956
+0.102623
+0.457377
+0.244044
+0.315956
+0.137978
+0.457377
+0.208689
+0.351311
+0.102623
+0.422022
+0.244044
+0.363333
+0.123333
+0.463333
+0.223333
+0.342623
+0.102623
+0.484044
+0.244044
+0.342623
+0.137978
+0.484044
+0.208689
+0.377978
+0.102623
+0.448689
+0.244044
+0.390000
+0.123333
+0.490000
+0.223333
+0.369289
+0.102623
+0.510711
+0.244044
+0.369289
+0.137978
+0.510711
+0.208689
+0.404645
+0.102623
+0.475355
+0.244044
+0.416667
+0.123333
+0.516667
+0.223333
+0.395956
+0.102623
+0.537377
+0.244044
+0.395956
+0.137978
+0.537377
+0.208689
+0.431311
+0.102623
+0.502022
+0.244044
+0.443333
+0.123333
+0.543333
+0.223333
+0.422623
+0.102623
+0.564044
+0.244044
+0.422623
+0.137978
+0.564044
+0.208689
+0.457978
+0.102623
+0.528689
+0.244044
+0.470000
+0.123333
+0.570000
+0.223333
+0.449289
+0.102623
+0.590711
+0.244044
+0.449289
+0.137978
+0.590711
+0.208689
+0.484645
+0.102623
+0.555355
+0.244044
+0.496667
+0.123333
+0.596667
+0.223333
+0.475956
+0.102623
+0.617377
+0.244044
+0.475956
+0.137978
+0.617377
+0.208689
+0.511311
+0.102623
+0.582022
+0.244044
+0.523333
+0.123333
+0.623333
+0.223333
+0.502623
+0.102623
+0.644044
+0.244044
+0.502623
+0.137978
+0.644044
+0.208689
+0.537978
+0.102623
+0.608689
+0.244044
+0.550000
+0.123333
+0.650000
+0.223333
+0.529289
+0.102623
+0.670711
+0.244044
+0.529289
+0.137978
+0.670711
+0.208689
+0.564645
+0.102623
+0.635355
+0.244044
+0.576667
+0.123333
+0.676667
+0.223333
+0.555956
+0.102623
+0.697377
+0.244044
+0.555956
+0.137978
+0.697377
+0.208689
+0.591311
+0.102623
+0.662022
+0.244044
+0.603333
+0.123333
+0.703333
+0.223333
+0.582623
+0.102623
+0.724044
+0.244044
+0.582623
+0.137978
+0.724044
+0.208689
+0.617978
+0.102623
+0.688689
+0.244044
+0.630000
+0.123333
+0.730000
+0.223333
+0.609289
+0.102623
+0.750711
+0.244044
+0.609289
+0.137978
+0.750711
+0.208689
+0.644645
+0.102623
+0.715355
+0.244044
+0.656667
+0.123333
+0.756667
+0.223333
+0.635956
+0.102623
+0.777377
+0.244044
+0.635956
+0.137978
+0.777377
+0.208689
+0.671311
+0.102623
+0.742022
+0.244044
+0.683333
+0.123333
+0.783333
+0.223333
+0.662623
+0.102623
+0.804044
+0.244044
+0.662623
+0.137978
+0.804044
+0.208689
+0.697978
+0.102623
+0.768689
+0.244044
+0.710000
+0.123333
+0.810000
+0.223333
+0.689289
+0.102623
+0.830711
+0.244044
+0.689289
+0.137978
+0.830711
+0.208689
+0.724645
+0.102623
+0.795355
+0.244044
+0.736667
+0.123333
+0.836667
+0.223333
+0.715956
+0.102623
+0.857377
+0.244044
+0.715956
+0.137978
+0.857377
+0.208689
+0.751311
+0.102623
+0.822022
+0.244044
+0.763333
+0.123333
+0.863333
+0.223333
+0.742623
+0.102623
+0.884044
+0.244044
+0.742623
+0.137978
+0.884044
+0.208689
+0.777978
+0.102623
+0.848689
+0.244044
+0.790000
+0.123333
+0.890000
+0.223333
+0.769289
+0.102623
+0.910711
+0.244044
+0.769289
+0.137978
+0.910711
+0.208689
+0.804645
+0.102623
+0.875355
+0.244044
+0.816667
+0.123333
+0.916667
+0.223333
+0.795956
+0.102623
+0.937377
+0.244044
+0.795956
+0.137978
+0.937377
+0.208689
+0.831311
+0.102623
+0.902022
+0.244044
+0.843333
+0.123333
+0.943333
+0.223333
+0.822623
+0.102623
+0.964044
+0.244044
+0.822623
+0.137978
+0.964044
+0.208689
+0.857978
+0.102623
+0.928689
+0.244044
+0.870000
+0.123333
+0.970000
+0.223333
+0.849289
+0.102623
+0.990711
+0.244044
+0.849289
+0.137978
+0.990711
+0.208689
+0.884645
+0.102623
+0.955355
+0.244044
+0.896667
+0.123333
+0.996667
+0.223333
+0.875956
+0.102623
+1.017377
+0.244044
+0.875956
+0.137978
+1.017377
+0.208689
+0.911311
+0.102623
+0.982022
+0.244044
+0.923333
+0.123333
+1.023333
+0.223333
+0.902623
+0.102623
+1.044044
+0.244044
+0.902623
+0.137978
+1.044044
+0.208689
+0.937978
+0.102623
+1.008689
+0.244044
+0.950000
+0.123333
+1.050000
+0.223333
+0.929289
+0.102623
+1.070711
+0.244044
+0.929289
+0.137978
+1.070711
+0.208689
+0.964645
+0.102623
+1.035355
+0.244044
+-0.036667
+0.150000
+0.063333
+0.250000
+-0.057377
+0.129289
+0.084044
+0.270711
+-0.057377
+0.164645
+0.084044
+0.235355
+-0.022022
+0.129289
+0.048689
+0.270711
+-0.010000
+0.150000
+0.090000
+0.250000
+-0.030711
+0.129289
+0.110711
+0.270711
+-0.030711
+0.164645
+0.110711
+0.235355
+0.004645
+0.129289
+0.075355
+0.270711
+0.016667
+0.150000
+0.116667
+0.250000
+-0.004044
+0.129289
+0.137377
+0.270711
+-0.004044
+0.164645
+0.137377
+0.235355
+0.031311
+0.129289
+0.102022
+0.270711
+0.043333
+0.150000
+0.143333
+0.250000
+0.022623
+0.129289
+0.164044
+0.270711
+0.022623
+0.164645
+0.164044
+0.235355
+0.057978
+0.129289
+0.128689
+0.270711
+0.070000
+0.150000
+0.170000
+0.250000
+0.049289
+0.129289
+0.190711
+0.270711
+0.049289
+0.164645
+0.190711
+0.235355
+0.084645
+0.129289
+0.155355
+0.270711
+0.096667
+0.150000
+0.196667
+0.250000
+0.075956
+0.129289
+0.217377
+0.270711
+0.075956
+0.164645
+0.217377
+0.235355
+0.111311
+0.129289
+0.182022
+0.270711
+0.123333
+0.150000
+0.223333
+0.250000
+0.102623
+0.129289
+0.244044
+0.270711
+0.102623
+0.164645
+0.244044
+0.235355
+0.137978
+0.129289
+0.208689
+0.270711
+0.150000
+0.150000
+0.250000
+0.250000
+0.129289
+0.129289
+0.270711
+0.270711
+0.129289
+0.164645
+0.270711
+0.235355
+0.164645
+0.129289
+0.235355
+0.270711
+0.176667
+0.150000
+0.276667
+0.250000
+0.155956
+0.129289
+0.297377
+0.270711
+0.155956
+0.164645
+0.297377
+0.235355
+0.191311
+0.129289
+0.262022
+0.270711
+0.203333
+0.150000
+0.303333
+0.250000
+0.182623
+0.129289
+0.324044
+0.270711
+0.182623
+0.164645
+0.324044
+0.235355
+0.217978
+0.129289
+0.288689
+0.270711
+0.230000
+0.150000
+0.330000
+0.250000
+0.209289
+0.129289
+0.350711
+0.270711
+0.209289
+0.164645
+0.350711
+0.235355
+0.244645
+0.129289
+0.315355
+0.270711
+0.256667
+0.150000
+0.356667
+0.250000
+0.235956
+0.129289
+0.377377
+0.270711
+0.235956
+0.164645
+0.377377
+0.235355
+0.271311
+0.129289
+0.342022
+0.270711
+0.283333
+0.150000
+0.383333
+0.250000
+0.262623
+0.129289
+0.404044
+0.270711
+0.262623
+0.164645
+0.404044
+0.235355
+0.297978
+0.129289
+0.368689
+0.270711
+0.310000
+0.150000
+0.410000
+0.250000
+0.289289
+0.129289
+0.430711
+0.270711
+0.289289
+0.164645
+0.430711
+0.235355
+0.324645
+0.129289
+0.395355
+0.270711
+0.336667
+0.150000
+0.436667
+0.250000
+0.315956
+0.129289
+0.457377
+0.270711
+0.315956
+0.164645
+0.457377
+0.235355
+0.351311
+0.129289
+0.422022
+0.270711
+0.363333
+0.150000
+0.463333
+0.250000
+0.342623
+0.129289
+0.484044
+0.270711
+0.342623
+0.164645
+0.484044
+0.235355
+0.377978
+0.129289
+0.448689
+0.270711
+0.390000
+0.150000
+0.490000
+0.250000
+0.369289
+0.129289
+0.510711
+0.270711
+0.369289
+0.164645
+0.510711
+0.235355
+0.404645
+0.129289
+0.475355
+0.270711
+0.416667
+0.150000
+0.516667
+0.250000
+0.395956
+0.129289
+0.537377
+0.270711
+0.395956
+0.164645
+0.537377
+0.235355
+0.431311
+0.129289
+0.502022
+0.270711
+0.443333
+0.150000
+0.543333
+0.250000
+0.422623
+0.129289
+0.564044
+0.270711
+0.422623
+0.164645
+0.564044
+0.235355
+0.457978
+0.129289
+0.528689
+0.270711
+0.470000
+0.150000
+0.570000
+0.250000
+0.449289
+0.129289
+0.590711
+0.270711
+0.449289
+0.164645
+0.590711
+0.235355
+0.484645
+0.129289
+0.555355
+0.270711
+0.496667
+0.150000
+0.596667
+0.250000
+0.475956
+0.129289
+0.617377
+0.270711
+0.475956
+0.164645
+0.617377
+0.235355
+0.511311
+0.129289
+0.582022
+0.270711
+0.523333
+0.150000
+0.623333
+0.250000
+0.502623
+0.129289
+0.644044
+0.270711
+0.502623
+0.164645
+0.644044
+0.235355
+0.537978
+0.129289
+0.608689
+0.270711
+0.550000
+0.150000
+0.650000
+0.250000
+0.529289
+0.129289
+0.670711
+0.270711
+0.529289
+0.164645
+0.670711
+0.235355
+0.564645
+0.129289
+0.635355
+0.270711
+0.576667
+0.150000
+0.676667
+0.250000
+0.555956
+0.129289
+0.697377
+0.270711
+0.555956
+0.164645
+0.697377
+0.235355
+0.591311
+0.129289
+0.662022
+0.270711
+0.603333
+0.150000
+0.703333
+0.250000
+0.582623
+0.129289
+0.724044
+0.270711
+0.582623
+0.164645
+0.724044
+0.235355
+0.617978
+0.129289
+0.688689
+0.270711
+0.630000
+0.150000
+0.730000
+0.250000
+0.609289
+0.129289
+0.750711
+0.270711
+0.609289
+0.164645
+0.750711
+0.235355
+0.644645
+0.129289
+0.715355
+0.270711
+0.656667
+0.150000
+0.756667
+0.250000
+0.635956
+0.129289
+0.777377
+0.270711
+0.635956
+0.164645
+0.777377
+0.235355
+0.671311
+0.129289
+0.742022
+0.270711
+0.683333
+0.150000
+0.783333
+0.250000
+0.662623
+0.129289
+0.804044
+0.270711
+0.662623
+0.164645
+0.804044
+0.235355
+0.697978
+0.129289
+0.768689
+0.270711
+0.710000
+0.150000
+0.810000
+0.250000
+0.689289
+0.129289
+0.830711
+0.270711
+0.689289
+0.164645
+0.830711
+0.235355
+0.724645
+0.129289
+0.795355
+0.270711
+0.736667
+0.150000
+0.836667
+0.250000
+0.715956
+0.129289
+0.857377
+0.270711
+0.715956
+0.164645
+0.857377
+0.235355
+0.751311
+0.129289
+0.822022
+0.270711
+0.763333
+0.150000
+0.863333
+0.250000
+0.742623
+0.129289
+0.884044
+0.270711
+0.742623
+0.164645
+0.884044
+0.235355
+0.777978
+0.129289
+0.848689
+0.270711
+0.790000
+0.150000
+0.890000
+0.250000
+0.769289
+0.129289
+0.910711
+0.270711
+0.769289
+0.164645
+0.910711
+0.235355
+0.804645
+0.129289
+0.875355
+0.270711
+0.816667
+0.150000
+0.916667
+0.250000
+0.795956
+0.129289
+0.937377
+0.270711
+0.795956
+0.164645
+0.937377
+0.235355
+0.831311
+0.129289
+0.902022
+0.270711
+0.843333
+0.150000
+0.943333
+0.250000
+0.822623
+0.129289
+0.964044
+0.270711
+0.822623
+0.164645
+0.964044
+0.235355
+0.857978
+0.129289
+0.928689
+0.270711
+0.870000
+0.150000
+0.970000
+0.250000
+0.849289
+0.129289
+0.990711
+0.270711
+0.849289
+0.164645
+0.990711
+0.235355
+0.884645
+0.129289
+0.955355
+0.270711
+0.896667
+0.150000
+0.996667
+0.250000
+0.875956
+0.129289
+1.017377
+0.270711
+0.875956
+0.164645
+1.017377
+0.235355
+0.911311
+0.129289
+0.982022
+0.270711
+0.923333
+0.150000
+1.023333
+0.250000
+0.902623
+0.129289
+1.044044
+0.270711
+0.902623
+0.164645
+1.044044
+0.235355
+0.937978
+0.129289
+1.008689
+0.270711
+0.950000
+0.150000
+1.050000
+0.250000
+0.929289
+0.129289
+1.070711
+0.270711
+0.929289
+0.164645
+1.070711
+0.235355
+0.964645
+0.129289
+1.035355
+0.270711
+-0.036667
+0.176667
+0.063333
+0.276667
+-0.057377
+0.155956
+0.084044
+0.297377
+-0.057377
+0.191311
+0.084044
+0.262022
+-0.022022
+0.155956
+0.048689
+0.297377
+-0.010000
+0.176667
+0.090000
+0.276667
+-0.030711
+0.155956
+0.110711
+0.297377
+-0.030711
+0.191311
+0.110711
+0.262022
+0.004645
+0.155956
+0.075355
+0.297377
+0.016667
+0.176667
+0.116667
+0.276667
+-0.004044
+0.155956
+0.137377
+0.297377
+-0.004044
+0.191311
+0.137377
+0.262022
+0.031311
+0.155956
+0.102022
+0.297377
+0.043333
+0.176667
+0.143333
+0.276667
+0.022623
+0.155956
+0.164044
+0.297377
+0.022623
+0.191311
+0.164044
+0.262022
+0.057978
+0.155956
+0.128689
+0.297377
+0.070000
+0.176667
+0.170000
+0.276667
+0.049289
+0.155956
+0.190711
+0.297377
+0.049289
+0.191311
+0.190711
+0.262022
+0.084645
+0.155956
+0.155355
+0.297377
+0.096667
+0.176667
+0.196667
+0.276667
+0.075956
+0.155956
+0.217377
+0.297377
+0.075956
+0.191311
+0.217377
+0.262022
+0.111311
+0.155956
+0.182022
+0.297377
+0.123333
+0.176667
+0.223333
+0.276667
+0.102623
+0.155956
+0.244044
+0.297377
+0.102623
+0.191311
+0.244044
+0.262022
+0.137978
+0.155956
+0.208689
+0.297377
+0.150000
+0.176667
+0.250000
+0.276667
+0.129289
+0.155956
+0.270711
+0.297377
+0.129289
+0.191311
+0.270711
+0.262022
+0.164645
+0.155956
+0.235355
+0.297377
+0.176667
+0.176667
+0.276667
+0.276667
+0.155956
+0.155956
+0.297377
+0.297377
+0.155956
+0.191311
+0.297377
+0.262022
+0.191311
+0.155956
+0.262022
+0.297377
+0.203333
+0.176667
+0.303333
+0.276667
+0.182623
+0.155956
+0.324044
+0.297377
+0.182623
+0.191311
+0.324044
+0.262022
+0.217978
+0.155956
+0.288689
+0.297377
+0.230000
+0.176667
+0.330000
+0.276667
+0.209289
+0.155956
+0.350711
+0.297377
+0.209289
+0.191311
+0.350711
+0.262022
+0.244645
+0.155956
+0.315355
+0.297377
+0.256667
+0.176667
+0.356667
+0.276667
+0.235956
+0.155956
+0.377377
+0.297377
+0.235956
+0.191311
+0.377377
+0.262022
+0.271311
+0.155956
+0.342022
+0.297377
+0.283333
+0.176667
+0.383333
+0.276667
+0.262623
+0.155956
+0.404044
+0.297377
+0.262623
+0.191311
+0.404044
+0.262022
+0.297978
+0.155956
+0.368689
+0.297377
+0.310000
+0.176667
+0.410000
+0.276667
+0.289289
+0.155956
+0.430711
+0.297377
+0.289289
+0.191311
+0.430711
+0.262022
+0.324645
+0.155956
+0.395355
+0.297377
+0.336667
+0.176667
+0.436667
+0.276667
+0.315956
+0.155956
+0.457377
+0.297377
+0.315956
+0.191311
+0.457377
+0.262022
+0.351311
+0.155956
+0.422022
+0.297377
+0.363333
+0.176667
+0.463333
+0.276667
+0.342623
+0.155956
+0.484044
+0.297377
+0.342623
+0.191311
+0.484044
+0.262022
+0.377978
+0.155956
+0.448689
+0.297377
+0.390000
+0.176667
+0.490000
+0.276667
+0.369289
+0.155956
+0.510711
+0.297377
+0.369289
+0.191311
+0.510711
+0.262022
+0.404645
+0.155956
+0.475355
+0.297377
+0.416667
+0.176667
+0.516667
+0.276667
+0.395956
+0.155956
+0.537377
+0.297377
+0.395956
+0.191311
+0.537377
+0.262022
+0.431311
+0.155956
+0.502022
+0.297377
+0.443333
+0.176667
+0.543333
+0.276667
+0.422623
+0.155956
+0.564044
+0.297377
+0.422623
+0.191311
+0.564044
+0.262022
+0.457978
+0.155956
+0.528689
+0.297377
+0.470000
+0.176667
+0.570000
+0.276667
+0.449289
+0.155956
+0.590711
+0.297377
+0.449289
+0.191311
+0.590711
+0.262022
+0.484645
+0.155956
+0.555355
+0.297377
+0.496667
+0.176667
+0.596667
+0.276667
+0.475956
+0.155956
+0.617377
+0.297377
+0.475956
+0.191311
+0.617377
+0.262022
+0.511311
+0.155956
+0.582022
+0.297377
+0.523333
+0.176667
+0.623333
+0.276667
+0.502623
+0.155956
+0.644044
+0.297377
+0.502623
+0.191311
+0.644044
+0.262022
+0.537978
+0.155956
+0.608689
+0.297377
+0.550000
+0.176667
+0.650000
+0.276667
+0.529289
+0.155956
+0.670711
+0.297377
+0.529289
+0.191311
+0.670711
+0.262022
+0.564645
+0.155956
+0.635355
+0.297377
+0.576667
+0.176667
+0.676667
+0.276667
+0.555956
+0.155956
+0.697377
+0.297377
+0.555956
+0.191311
+0.697377
+0.262022
+0.591311
+0.155956
+0.662022
+0.297377
+0.603333
+0.176667
+0.703333
+0.276667
+0.582623
+0.155956
+0.724044
+0.297377
+0.582623
+0.191311
+0.724044
+0.262022
+0.617978
+0.155956
+0.688689
+0.297377
+0.630000
+0.176667
+0.730000
+0.276667
+0.609289
+0.155956
+0.750711
+0.297377
+0.609289
+0.191311
+0.750711
+0.262022
+0.644645
+0.155956
+0.715355
+0.297377
+0.656667
+0.176667
+0.756667
+0.276667
+0.635956
+0.155956
+0.777377
+0.297377
+0.635956
+0.191311
+0.777377
+0.262022
+0.671311
+0.155956
+0.742022
+0.297377
+0.683333
+0.176667
+0.783333
+0.276667
+0.662623
+0.155956
+0.804044
+0.297377
+0.662623
+0.191311
+0.804044
+0.262022
+0.697978
+0.155956
+0.768689
+0.297377
+0.710000
+0.176667
+0.810000
+0.276667
+0.689289
+0.155956
+0.830711
+0.297377
+0.689289
+0.191311
+0.830711
+0.262022
+0.724645
+0.155956
+0.795355
+0.297377
+0.736667
+0.176667
+0.836667
+0.276667
+0.715956
+0.155956
+0.857377
+0.297377
+0.715956
+0.191311
+0.857377
+0.262022
+0.751311
+0.155956
+0.822022
+0.297377
+0.763333
+0.176667
+0.863333
+0.276667
+0.742623
+0.155956
+0.884044
+0.297377
+0.742623
+0.191311
+0.884044
+0.262022
+0.777978
+0.155956
+0.848689
+0.297377
+0.790000
+0.176667
+0.890000
+0.276667
+0.769289
+0.155956
+0.910711
+0.297377
+0.769289
+0.191311
+0.910711
+0.262022
+0.804645
+0.155956
+0.875355
+0.297377
+0.816667
+0.176667
+0.916667
+0.276667
+0.795956
+0.155956
+0.937377
+0.297377
+0.795956
+0.191311
+0.937377
+0.262022
+0.831311
+0.155956
+0.902022
+0.297377
+0.843333
+0.176667
+0.943333
+0.276667
+0.822623
+0.155956
+0.964044
+0.297377
+0.822623
+0.191311
+0.964044
+0.262022
+0.857978
+0.155956
+0.928689
+0.297377
+0.870000
+0.176667
+0.970000
+0.276667
+0.849289
+0.155956
+0.990711
+0.297377
+0.849289
+0.191311
+0.990711
+0.262022
+0.884645
+0.155956
+0.955355
+0.297377
+0.896667
+0.176667
+0.996667
+0.276667
+0.875956
+0.155956
+1.017377
+0.297377
+0.875956
+0.191311
+1.017377
+0.262022
+0.911311
+0.155956
+0.982022
+0.297377
+0.923333
+0.176667
+1.023333
+0.276667
+0.902623
+0.155956
+1.044044
+0.297377
+0.902623
+0.191311
+1.044044
+0.262022
+0.937978
+0.155956
+1.008689
+0.297377
+0.950000
+0.176667
+1.050000
+0.276667
+0.929289
+0.155956
+1.070711
+0.297377
+0.929289
+0.191311
+1.070711
+0.262022
+0.964645
+0.155956
+1.035355
+0.297377
+-0.036667
+0.203333
+0.063333
+0.303333
+-0.057377
+0.182623
+0.084044
+0.324044
+-0.057377
+0.217978
+0.084044
+0.288689
+-0.022022
+0.182623
+0.048689
+0.324044
+-0.010000
+0.203333
+0.090000
+0.303333
+-0.030711
+0.182623
+0.110711
+0.324044
+-0.030711
+0.217978
+0.110711
+0.288689
+0.004645
+0.182623
+0.075355
+0.324044
+0.016667
+0.203333
+0.116667
+0.303333
+-0.004044
+0.182623
+0.137377
+0.324044
+-0.004044
+0.217978
+0.137377
+0.288689
+0.031311
+0.182623
+0.102022
+0.324044
+0.043333
+0.203333
+0.143333
+0.303333
+0.022623
+0.182623
+0.164044
+0.324044
+0.022623
+0.217978
+0.164044
+0.288689
+0.057978
+0.182623
+0.128689
+0.324044
+0.070000
+0.203333
+0.170000
+0.303333
+0.049289
+0.182623
+0.190711
+0.324044
+0.049289
+0.217978
+0.190711
+0.288689
+0.084645
+0.182623
+0.155355
+0.324044
+0.096667
+0.203333
+0.196667
+0.303333
+0.075956
+0.182623
+0.217377
+0.324044
+0.075956
+0.217978
+0.217377
+0.288689
+0.111311
+0.182623
+0.182022
+0.324044
+0.123333
+0.203333
+0.223333
+0.303333
+0.102623
+0.182623
+0.244044
+0.324044
+0.102623
+0.217978
+0.244044
+0.288689
+0.137978
+0.182623
+0.208689
+0.324044
+0.150000
+0.203333
+0.250000
+0.303333
+0.129289
+0.182623
+0.270711
+0.324044
+0.129289
+0.217978
+0.270711
+0.288689
+0.164645
+0.182623
+0.235355
+0.324044
+0.176667
+0.203333
+0.276667
+0.303333
+0.155956
+0.182623
+0.297377
+0.324044
+0.155956
+0.217978
+0.297377
+0.288689
+0.191311
+0.182623
+0.262022
+0.324044
+0.203333
+0.203333
+0.303333
+0.303333
+0.182623
+0.182623
+0.324044
+0.324044
+0.182623
+0.217978
+0.324044
+0.288689
+0.217978
+0.182623
+0.288689
+0.324044
+0.230000
+0.203333
+0.330000
+0.303333
+0.209289
+0.182623
+0.350711
+0.324044
+0.209289
+0.217978
+0.350711
+0.288689
+0.244645
+0.182623
+0.315355
+0.324044
+0.256667
+0.203333
+0.356667
+0.303333
+0.235956
+0.182623
+0.377377
+0.324044
+0.235956
+0.217978
+0.377377
+0.288689
+0.271311
+0.182623
+0.342022
+0.324044
+0.283333
+0.203333
+0.383333
+0.303333
+0.262623
+0.182623
+0.404044
+0.324044
+0.262623
+0.217978
+0.404044
+0.288689
+0.297978
+0.182623
+0.368689
+0.324044
+0.310000
+0.203333
+0.410000
+0.303333
+0.289289
+0.182623
+0.430711
+0.324044
+0.289289
+0.217978
+0.430711
+0.288689
+0.324645
+0.182623
+0.395355
+0.324044
+0.336667
+0.203333
+0.436667
+0.303333
+0.315956
+0.182623
+0.457377
+0.324044
+0.315956
+0.217978
+0.457377
+0.288689
+0.351311
+0.182623
+0.422022
+0.324044
+0.363333
+0.203333
+0.463333
+0.303333
+0.342623
+0.182623
+0.484044
+0.324044
+0.342623
+0.217978
+0.484044
+0.288689
+0.377978
+0.182623
+0.448689
+0.324044
+0.390000
+0.203333
+0.490000
+0.303333
+0.369289
+0.182623
+0.510711
+0.324044
+0.369289
+0.217978
+0.510711
+0.288689
+0.404645
+0.182623
+0.475355
+0.324044
+0.416667
+0.203333
+0.516667
+0.303333
+0.395956
+0.182623
+0.537377
+0.324044
+0.395956
+0.217978
+0.537377
+0.288689
+0.431311
+0.182623
+0.502022
+0.324044
+0.443333
+0.203333
+0.543333
+0.303333
+0.422623
+0.182623
+0.564044
+0.324044
+0.422623
+0.217978
+0.564044
+0.288689
+0.457978
+0.182623
+0.528689
+0.324044
+0.470000
+0.203333
+0.570000
+0.303333
+0.449289
+0.182623
+0.590711
+0.324044
+0.449289
+0.217978
+0.590711
+0.288689
+0.484645
+0.182623
+0.555355
+0.324044
+0.496667
+0.203333
+0.596667
+0.303333
+0.475956
+0.182623
+0.617377
+0.324044
+0.475956
+0.217978
+0.617377
+0.288689
+0.511311
+0.182623
+0.582022
+0.324044
+0.523333
+0.203333
+0.623333
+0.303333
+0.502623
+0.182623
+0.644044
+0.324044
+0.502623
+0.217978
+0.644044
+0.288689
+0.537978
+0.182623
+0.608689
+0.324044
+0.550000
+0.203333
+0.650000
+0.303333
+0.529289
+0.182623
+0.670711
+0.324044
+0.529289
+0.217978
+0.670711
+0.288689
+0.564645
+0.182623
+0.635355
+0.324044
+0.576667
+0.203333
+0.676667
+0.303333
+0.555956
+0.182623
+0.697377
+0.324044
+0.555956
+0.217978
+0.697377
+0.288689
+0.591311
+0.182623
+0.662022
+0.324044
+0.603333
+0.203333
+0.703333
+0.303333
+0.582623
+0.182623
+0.724044
+0.324044
+0.582623
+0.217978
+0.724044
+0.288689
+0.617978
+0.182623
+0.688689
+0.324044
+0.630000
+0.203333
+0.730000
+0.303333
+0.609289
+0.182623
+0.750711
+0.324044
+0.609289
+0.217978
+0.750711
+0.288689
+0.644645
+0.182623
+0.715355
+0.324044
+0.656667
+0.203333
+0.756667
+0.303333
+0.635956
+0.182623
+0.777377
+0.324044
+0.635956
+0.217978
+0.777377
+0.288689
+0.671311
+0.182623
+0.742022
+0.324044
+0.683333
+0.203333
+0.783333
+0.303333
+0.662623
+0.182623
+0.804044
+0.324044
+0.662623
+0.217978
+0.804044
+0.288689
+0.697978
+0.182623
+0.768689
+0.324044
+0.710000
+0.203333
+0.810000
+0.303333
+0.689289
+0.182623
+0.830711
+0.324044
+0.689289
+0.217978
+0.830711
+0.288689
+0.724645
+0.182623
+0.795355
+0.324044
+0.736667
+0.203333
+0.836667
+0.303333
+0.715956
+0.182623
+0.857377
+0.324044
+0.715956
+0.217978
+0.857377
+0.288689
+0.751311
+0.182623
+0.822022
+0.324044
+0.763333
+0.203333
+0.863333
+0.303333
+0.742623
+0.182623
+0.884044
+0.324044
+0.742623
+0.217978
+0.884044
+0.288689
+0.777978
+0.182623
+0.848689
+0.324044
+0.790000
+0.203333
+0.890000
+0.303333
+0.769289
+0.182623
+0.910711
+0.324044
+0.769289
+0.217978
+0.910711
+0.288689
+0.804645
+0.182623
+0.875355
+0.324044
+0.816667
+0.203333
+0.916667
+0.303333
+0.795956
+0.182623
+0.937377
+0.324044
+0.795956
+0.217978
+0.937377
+0.288689
+0.831311
+0.182623
+0.902022
+0.324044
+0.843333
+0.203333
+0.943333
+0.303333
+0.822623
+0.182623
+0.964044
+0.324044
+0.822623
+0.217978
+0.964044
+0.288689
+0.857978
+0.182623
+0.928689
+0.324044
+0.870000
+0.203333
+0.970000
+0.303333
+0.849289
+0.182623
+0.990711
+0.324044
+0.849289
+0.217978
+0.990711
+0.288689
+0.884645
+0.182623
+0.955355
+0.324044
+0.896667
+0.203333
+0.996667
+0.303333
+0.875956
+0.182623
+1.017377
+0.324044
+0.875956
+0.217978
+1.017377
+0.288689
+0.911311
+0.182623
+0.982022
+0.324044
+0.923333
+0.203333
+1.023333
+0.303333
+0.902623
+0.182623
+1.044044
+0.324044
+0.902623
+0.217978
+1.044044
+0.288689
+0.937978
+0.182623
+1.008689
+0.324044
+0.950000
+0.203333
+1.050000
+0.303333
+0.929289
+0.182623
+1.070711
+0.324044
+0.929289
+0.217978
+1.070711
+0.288689
+0.964645
+0.182623
+1.035355
+0.324044
+-0.036667
+0.230000
+0.063333
+0.330000
+-0.057377
+0.209289
+0.084044
+0.350711
+-0.057377
+0.244645
+0.084044
+0.315355
+-0.022022
+0.209289
+0.048689
+0.350711
+-0.010000
+0.230000
+0.090000
+0.330000
+-0.030711
+0.209289
+0.110711
+0.350711
+-0.030711
+0.244645
+0.110711
+0.315355
+0.004645
+0.209289
+0.075355
+0.350711
+0.016667
+0.230000
+0.116667
+0.330000
+-0.004044
+0.209289
+0.137377
+0.350711
+-0.004044
+0.244645
+0.137377
+0.315355
+0.031311
+0.209289
+0.102022
+0.350711
+0.043333
+0.230000
+0.143333
+0.330000
+0.022623
+0.209289
+0.164044
+0.350711
+0.022623
+0.244645
+0.164044
+0.315355
+0.057978
+0.209289
+0.128689
+0.350711
+0.070000
+0.230000
+0.170000
+0.330000
+0.049289
+0.209289
+0.190711
+0.350711
+0.049289
+0.244645
+0.190711
+0.315355
+0.084645
+0.209289
+0.155355
+0.350711
+0.096667
+0.230000
+0.196667
+0.330000
+0.075956
+0.209289
+0.217377
+0.350711
+0.075956
+0.244645
+0.217377
+0.315355
+0.111311
+0.209289
+0.182022
+0.350711
+0.123333
+0.230000
+0.223333
+0.330000
+0.102623
+0.209289
+0.244044
+0.350711
+0.102623
+0.244645
+0.244044
+0.315355
+0.137978
+0.209289
+0.208689
+0.350711
+0.150000
+0.230000
+0.250000
+0.330000
+0.129289
+0.209289
+0.270711
+0.350711
+0.129289
+0.244645
+0.270711
+0.315355
+0.164645
+0.209289
+0.235355
+0.350711
+0.176667
+0.230000
+0.276667
+0.330000
+0.155956
+0.209289
+0.297377
+0.350711
+0.155956
+0.244645
+0.297377
+0.315355
+0.191311
+0.209289
+0.262022
+0.350711
+0.203333
+0.230000
+0.303333
+0.330000
+0.182623
+0.209289
+0.324044
+0.350711
+0.182623
+0.244645
+0.324044
+0.315355
+0.217978
+0.209289
+0.288689
+0.350711
+0.230000
+0.230000
+0.330000
+0.330000
+0.209289
+0.209289
+0.350711
+0.350711
+0.209289
+0.244645
+0.350711
+0.315355
+0.244645
+0.209289
+0.315355
+0.350711
+0.256667
+0.230000
+0.356667
+0.330000
+0.235956
+0.209289
+0.377377
+0.350711
+0.235956
+0.244645
+0.377377
+0.315355
+0.271311
+0.209289
+0.342022
+0.350711
+0.283333
+0.230000
+0.383333
+0.330000
+0.262623
+0.209289
+0.404044
+0.350711
+0.262623
+0.244645
+0.404044
+0.315355
+0.297978
+0.209289
+0.368689
+0.350711
+0.310000
+0.230000
+0.410000
+0.330000
+0.289289
+0.209289
+0.430711
+0.350711
+0.289289
+0.244645
+0.430711
+0.315355
+0.324645
+0.209289
+0.395355
+0.350711
+0.336667
+0.230000
+0.436667
+0.330000
+0.315956
+0.209289
+0.457377
+0.350711
+0.315956
+0.244645
+0.457377
+0.315355
+0.351311
+0.209289
+0.422022
+0.350711
+0.363333
+0.230000
+0.463333
+0.330000
+0.342623
+0.209289
+0.484044
+0.350711
+0.342623
+0.244645
+0.484044
+0.315355
+0.377978
+0.209289
+0.448689
+0.350711
+0.390000
+0.230000
+0.490000
+0.330000
+0.369289
+0.209289
+0.510711
+0.350711
+0.369289
+0.244645
+0.510711
+0.315355
+0.404645
+0.209289
+0.475355
+0.350711
+0.416667
+0.230000
+0.516667
+0.330000
+0.395956
+0.209289
+0.537377
+0.350711
+0.395956
+0.244645
+0.537377
+0.315355
+0.431311
+0.209289
+0.502022
+0.350711
+0.443333
+0.230000
+0.543333
+0.330000
+0.422623
+0.209289
+0.564044
+0.350711
+0.422623
+0.244645
+0.564044
+0.315355
+0.457978
+0.209289
+0.528689
+0.350711
+0.470000
+0.230000
+0.570000
+0.330000
+0.449289
+0.209289
+0.590711
+0.350711
+0.449289
+0.244645
+0.590711
+0.315355
+0.484645
+0.209289
+0.555355
+0.350711
+0.496667
+0.230000
+0.596667
+0.330000
+0.475956
+0.209289
+0.617377
+0.350711
+0.475956
+0.244645
+0.617377
+0.315355
+0.511311
+0.209289
+0.582022
+0.350711
+0.523333
+0.230000
+0.623333
+0.330000
+0.502623
+0.209289
+0.644044
+0.350711
+0.502623
+0.244645
+0.644044
+0.315355
+0.537978
+0.209289
+0.608689
+0.350711
+0.550000
+0.230000
+0.650000
+0.330000
+0.529289
+0.209289
+0.670711
+0.350711
+0.529289
+0.244645
+0.670711
+0.315355
+0.564645
+0.209289
+0.635355
+0.350711
+0.576667
+0.230000
+0.676667
+0.330000
+0.555956
+0.209289
+0.697377
+0.350711
+0.555956
+0.244645
+0.697377
+0.315355
+0.591311
+0.209289
+0.662022
+0.350711
+0.603333
+0.230000
+0.703333
+0.330000
+0.582623
+0.209289
+0.724044
+0.350711
+0.582623
+0.244645
+0.724044
+0.315355
+0.617978
+0.209289
+0.688689
+0.350711
+0.630000
+0.230000
+0.730000
+0.330000
+0.609289
+0.209289
+0.750711
+0.350711
+0.609289
+0.244645
+0.750711
+0.315355
+0.644645
+0.209289
+0.715355
+0.350711
+0.656667
+0.230000
+0.756667
+0.330000
+0.635956
+0.209289
+0.777377
+0.350711
+0.635956
+0.244645
+0.777377
+0.315355
+0.671311
+0.209289
+0.742022
+0.350711
+0.683333
+0.230000
+0.783333
+0.330000
+0.662623
+0.209289
+0.804044
+0.350711
+0.662623
+0.244645
+0.804044
+0.315355
+0.697978
+0.209289
+0.768689
+0.350711
+0.710000
+0.230000
+0.810000
+0.330000
+0.689289
+0.209289
+0.830711
+0.350711
+0.689289
+0.244645
+0.830711
+0.315355
+0.724645
+0.209289
+0.795355
+0.350711
+0.736667
+0.230000
+0.836667
+0.330000
+0.715956
+0.209289
+0.857377
+0.350711
+0.715956
+0.244645
+0.857377
+0.315355
+0.751311
+0.209289
+0.822022
+0.350711
+0.763333
+0.230000
+0.863333
+0.330000
+0.742623
+0.209289
+0.884044
+0.350711
+0.742623
+0.244645
+0.884044
+0.315355
+0.777978
+0.209289
+0.848689
+0.350711
+0.790000
+0.230000
+0.890000
+0.330000
+0.769289
+0.209289
+0.910711
+0.350711
+0.769289
+0.244645
+0.910711
+0.315355
+0.804645
+0.209289
+0.875355
+0.350711
+0.816667
+0.230000
+0.916667
+0.330000
+0.795956
+0.209289
+0.937377
+0.350711
+0.795956
+0.244645
+0.937377
+0.315355
+0.831311
+0.209289
+0.902022
+0.350711
+0.843333
+0.230000
+0.943333
+0.330000
+0.822623
+0.209289
+0.964044
+0.350711
+0.822623
+0.244645
+0.964044
+0.315355
+0.857978
+0.209289
+0.928689
+0.350711
+0.870000
+0.230000
+0.970000
+0.330000
+0.849289
+0.209289
+0.990711
+0.350711
+0.849289
+0.244645
+0.990711
+0.315355
+0.884645
+0.209289
+0.955355
+0.350711
+0.896667
+0.230000
+0.996667
+0.330000
+0.875956
+0.209289
+1.017377
+0.350711
+0.875956
+0.244645
+1.017377
+0.315355
+0.911311
+0.209289
+0.982022
+0.350711
+0.923333
+0.230000
+1.023333
+0.330000
+0.902623
+0.209289
+1.044044
+0.350711
+0.902623
+0.244645
+1.044044
+0.315355
+0.937978
+0.209289
+1.008689
+0.350711
+0.950000
+0.230000
+1.050000
+0.330000
+0.929289
+0.209289
+1.070711
+0.350711
+0.929289
+0.244645
+1.070711
+0.315355
+0.964645
+0.209289
+1.035355
+0.350711
+-0.036667
+0.256667
+0.063333
+0.356667
+-0.057377
+0.235956
+0.084044
+0.377377
+-0.057377
+0.271311
+0.084044
+0.342022
+-0.022022
+0.235956
+0.048689
+0.377377
+-0.010000
+0.256667
+0.090000
+0.356667
+-0.030711
+0.235956
+0.110711
+0.377377
+-0.030711
+0.271311
+0.110711
+0.342022
+0.004645
+0.235956
+0.075355
+0.377377
+0.016667
+0.256667
+0.116667
+0.356667
+-0.004044
+0.235956
+0.137377
+0.377377
+-0.004044
+0.271311
+0.137377
+0.342022
+0.031311
+0.235956
+0.102022
+0.377377
+0.043333
+0.256667
+0.143333
+0.356667
+0.022623
+0.235956
+0.164044
+0.377377
+0.022623
+0.271311
+0.164044
+0.342022
+0.057978
+0.235956
+0.128689
+0.377377
+0.070000
+0.256667
+0.170000
+0.356667
+0.049289
+0.235956
+0.190711
+0.377377
+0.049289
+0.271311
+0.190711
+0.342022
+0.084645
+0.235956
+0.155355
+0.377377
+0.096667
+0.256667
+0.196667
+0.356667
+0.075956
+0.235956
+0.217377
+0.377377
+0.075956
+0.271311
+0.217377
+0.342022
+0.111311
+0.235956
+0.182022
+0.377377
+0.123333
+0.256667
+0.223333
+0.356667
+0.102623
+0.235956
+0.244044
+0.377377
+0.102623
+0.271311
+0.244044
+0.342022
+0.137978
+0.235956
+0.208689
+0.377377
+0.150000
+0.256667
+0.250000
+0.356667
+0.129289
+0.235956
+0.270711
+0.377377
+0.129289
+0.271311
+0.270711
+0.342022
+0.164645
+0.235956
+0.235355
+0.377377
+0.176667
+0.256667
+0.276667
+0.356667
+0.155956
+0.235956
+0.297377
+0.377377
+0.155956
+0.271311
+0.297377
+0.342022
+0.191311
+0.235956
+0.262022
+0.377377
+0.203333
+0.256667
+0.303333
+0.356667
+0.182623
+0.235956
+0.324044
+0.377377
+0.182623
+0.271311
+0.324044
+0.342022
+0.217978
+0.235956
+0.288689
+0.377377
+0.230000
+0.256667
+0.330000
+0.356667
+0.209289
+0.235956
+0.350711
+0.377377
+0.209289
+0.271311
+0.350711
+0.342022
+0.244645
+0.235956
+0.315355
+0.377377
+0.256667
+0.256667
+0.356667
+0.356667
+0.235956
+0.235956
+0.377377
+0.377377
+0.235956
+0.271311
+0.377377
+0.342022
+0.271311
+0.235956
+0.342022
+0.377377
+0.283333
+0.256667
+0.383333
+0.356667
+0.262623
+0.235956
+0.404044
+0.377377
+0.262623
+0.271311
+0.404044
+0.342022
+0.297978
+0.235956
+0.368689
+0.377377
+0.310000
+0.256667
+0.410000
+0.356667
+0.289289
+0.235956
+0.430711
+0.377377
+0.289289
+0.271311
+0.430711
+0.342022
+0.324645
+0.235956
+0.395355
+0.377377
+0.336667
+0.256667
+0.436667
+0.356667
+0.315956
+0.235956
+0.457377
+0.377377
+0.315956
+0.271311
+0.457377
+0.342022
+0.351311
+0.235956
+0.422022
+0.377377
+0.363333
+0.256667
+0.463333
+0.356667
+0.342623
+0.235956
+0.484044
+0.377377
+0.342623
+0.271311
+0.484044
+0.342022
+0.377978
+0.235956
+0.448689
+0.377377
+0.390000
+0.256667
+0.490000
+0.356667
+0.369289
+0.235956
+0.510711
+0.377377
+0.369289
+0.271311
+0.510711
+0.342022
+0.404645
+0.235956
+0.475355
+0.377377
+0.416667
+0.256667
+0.516667
+0.356667
+0.395956
+0.235956
+0.537377
+0.377377
+0.395956
+0.271311
+0.537377
+0.342022
+0.431311
+0.235956
+0.502022
+0.377377
+0.443333
+0.256667
+0.543333
+0.356667
+0.422623
+0.235956
+0.564044
+0.377377
+0.422623
+0.271311
+0.564044
+0.342022
+0.457978
+0.235956
+0.528689
+0.377377
+0.470000
+0.256667
+0.570000
+0.356667
+0.449289
+0.235956
+0.590711
+0.377377
+0.449289
+0.271311
+0.590711
+0.342022
+0.484645
+0.235956
+0.555355
+0.377377
+0.496667
+0.256667
+0.596667
+0.356667
+0.475956
+0.235956
+0.617377
+0.377377
+0.475956
+0.271311
+0.617377
+0.342022
+0.511311
+0.235956
+0.582022
+0.377377
+0.523333
+0.256667
+0.623333
+0.356667
+0.502623
+0.235956
+0.644044
+0.377377
+0.502623
+0.271311
+0.644044
+0.342022
+0.537978
+0.235956
+0.608689
+0.377377
+0.550000
+0.256667
+0.650000
+0.356667
+0.529289
+0.235956
+0.670711
+0.377377
+0.529289
+0.271311
+0.670711
+0.342022
+0.564645
+0.235956
+0.635355
+0.377377
+0.576667
+0.256667
+0.676667
+0.356667
+0.555956
+0.235956
+0.697377
+0.377377
+0.555956
+0.271311
+0.697377
+0.342022
+0.591311
+0.235956
+0.662022
+0.377377
+0.603333
+0.256667
+0.703333
+0.356667
+0.582623
+0.235956
+0.724044
+0.377377
+0.582623
+0.271311
+0.724044
+0.342022
+0.617978
+0.235956
+0.688689
+0.377377
+0.630000
+0.256667
+0.730000
+0.356667
+0.609289
+0.235956
+0.750711
+0.377377
+0.609289
+0.271311
+0.750711
+0.342022
+0.644645
+0.235956
+0.715355
+0.377377
+0.656667
+0.256667
+0.756667
+0.356667
+0.635956
+0.235956
+0.777377
+0.377377
+0.635956
+0.271311
+0.777377
+0.342022
+0.671311
+0.235956
+0.742022
+0.377377
+0.683333
+0.256667
+0.783333
+0.356667
+0.662623
+0.235956
+0.804044
+0.377377
+0.662623
+0.271311
+0.804044
+0.342022
+0.697978
+0.235956
+0.768689
+0.377377
+0.710000
+0.256667
+0.810000
+0.356667
+0.689289
+0.235956
+0.830711
+0.377377
+0.689289
+0.271311
+0.830711
+0.342022
+0.724645
+0.235956
+0.795355
+0.377377
+0.736667
+0.256667
+0.836667
+0.356667
+0.715956
+0.235956
+0.857377
+0.377377
+0.715956
+0.271311
+0.857377
+0.342022
+0.751311
+0.235956
+0.822022
+0.377377
+0.763333
+0.256667
+0.863333
+0.356667
+0.742623
+0.235956
+0.884044
+0.377377
+0.742623
+0.271311
+0.884044
+0.342022
+0.777978
+0.235956
+0.848689
+0.377377
+0.790000
+0.256667
+0.890000
+0.356667
+0.769289
+0.235956
+0.910711
+0.377377
+0.769289
+0.271311
+0.910711
+0.342022
+0.804645
+0.235956
+0.875355
+0.377377
+0.816667
+0.256667
+0.916667
+0.356667
+0.795956
+0.235956
+0.937377
+0.377377
+0.795956
+0.271311
+0.937377
+0.342022
+0.831311
+0.235956
+0.902022
+0.377377
+0.843333
+0.256667
+0.943333
+0.356667
+0.822623
+0.235956
+0.964044
+0.377377
+0.822623
+0.271311
+0.964044
+0.342022
+0.857978
+0.235956
+0.928689
+0.377377
+0.870000
+0.256667
+0.970000
+0.356667
+0.849289
+0.235956
+0.990711
+0.377377
+0.849289
+0.271311
+0.990711
+0.342022
+0.884645
+0.235956
+0.955355
+0.377377
+0.896667
+0.256667
+0.996667
+0.356667
+0.875956
+0.235956
+1.017377
+0.377377
+0.875956
+0.271311
+1.017377
+0.342022
+0.911311
+0.235956
+0.982022
+0.377377
+0.923333
+0.256667
+1.023333
+0.356667
+0.902623
+0.235956
+1.044044
+0.377377
+0.902623
+0.271311
+1.044044
+0.342022
+0.937978
+0.235956
+1.008689
+0.377377
+0.950000
+0.256667
+1.050000
+0.356667
+0.929289
+0.235956
+1.070711
+0.377377
+0.929289
+0.271311
+1.070711
+0.342022
+0.964645
+0.235956
+1.035355
+0.377377
+-0.036667
+0.283333
+0.063333
+0.383333
+-0.057377
+0.262623
+0.084044
+0.404044
+-0.057377
+0.297978
+0.084044
+0.368689
+-0.022022
+0.262623
+0.048689
+0.404044
+-0.010000
+0.283333
+0.090000
+0.383333
+-0.030711
+0.262623
+0.110711
+0.404044
+-0.030711
+0.297978
+0.110711
+0.368689
+0.004645
+0.262623
+0.075355
+0.404044
+0.016667
+0.283333
+0.116667
+0.383333
+-0.004044
+0.262623
+0.137377
+0.404044
+-0.004044
+0.297978
+0.137377
+0.368689
+0.031311
+0.262623
+0.102022
+0.404044
+0.043333
+0.283333
+0.143333
+0.383333
+0.022623
+0.262623
+0.164044
+0.404044
+0.022623
+0.297978
+0.164044
+0.368689
+0.057978
+0.262623
+0.128689
+0.404044
+0.070000
+0.283333
+0.170000
+0.383333
+0.049289
+0.262623
+0.190711
+0.404044
+0.049289
+0.297978
+0.190711
+0.368689
+0.084645
+0.262623
+0.155355
+0.404044
+0.096667
+0.283333
+0.196667
+0.383333
+0.075956
+0.262623
+0.217377
+0.404044
+0.075956
+0.297978
+0.217377
+0.368689
+0.111311
+0.262623
+0.182022
+0.404044
+0.123333
+0.283333
+0.223333
+0.383333
+0.102623
+0.262623
+0.244044
+0.404044
+0.102623
+0.297978
+0.244044
+0.368689
+0.137978
+0.262623
+0.208689
+0.404044
+0.150000
+0.283333
+0.250000
+0.383333
+0.129289
+0.262623
+0.270711
+0.404044
+0.129289
+0.297978
+0.270711
+0.368689
+0.164645
+0.262623
+0.235355
+0.404044
+0.176667
+0.283333
+0.276667
+0.383333
+0.155956
+0.262623
+0.297377
+0.404044
+0.155956
+0.297978
+0.297377
+0.368689
+0.191311
+0.262623
+0.262022
+0.404044
+0.203333
+0.283333
+0.303333
+0.383333
+0.182623
+0.262623
+0.324044
+0.404044
+0.182623
+0.297978
+0.324044
+0.368689
+0.217978
+0.262623
+0.288689
+0.404044
+0.230000
+0.283333
+0.330000
+0.383333
+0.209289
+0.262623
+0.350711
+0.404044
+0.209289
+0.297978
+0.350711
+0.368689
+0.244645
+0.262623
+0.315355
+0.404044
+0.256667
+0.283333
+0.356667
+0.383333
+0.235956
+0.262623
+0.377377
+0.404044
+0.235956
+0.297978
+0.377377
+0.368689
+0.271311
+0.262623
+0.342022
+0.404044
+0.283333
+0.283333
+0.383333
+0.383333
+0.262623
+0.262623
+0.404044
+0.404044
+0.262623
+0.297978
+0.404044
+0.368689
+0.297978
+0.262623
+0.368689
+0.404044
+0.310000
+0.283333
+0.410000
+0.383333
+0.289289
+0.262623
+0.430711
+0.404044
+0.289289
+0.297978
+0.430711
+0.368689
+0.324645
+0.262623
+0.395355
+0.404044
+0.336667
+0.283333
+0.436667
+0.383333
+0.315956
+0.262623
+0.457377
+0.404044
+0.315956
+0.297978
+0.457377
+0.368689
+0.351311
+0.262623
+0.422022
+0.404044
+0.363333
+0.283333
+0.463333
+0.383333
+0.342623
+0.262623
+0.484044
+0.404044
+0.342623
+0.297978
+0.484044
+0.368689
+0.377978
+0.262623
+0.448689
+0.404044
+0.390000
+0.283333
+0.490000
+0.383333
+0.369289
+0.262623
+0.510711
+0.404044
+0.369289
+0.297978
+0.510711
+0.368689
+0.404645
+0.262623
+0.475355
+0.404044
+0.416667
+0.283333
+0.516667
+0.383333
+0.395956
+0.262623
+0.537377
+0.404044
+0.395956
+0.297978
+0.537377
+0.368689
+0.431311
+0.262623
+0.502022
+0.404044
+0.443333
+0.283333
+0.543333
+0.383333
+0.422623
+0.262623
+0.564044
+0.404044
+0.422623
+0.297978
+0.564044
+0.368689
+0.457978
+0.262623
+0.528689
+0.404044
+0.470000
+0.283333
+0.570000
+0.383333
+0.449289
+0.262623
+0.590711
+0.404044
+0.449289
+0.297978
+0.590711
+0.368689
+0.484645
+0.262623
+0.555355
+0.404044
+0.496667
+0.283333
+0.596667
+0.383333
+0.475956
+0.262623
+0.617377
+0.404044
+0.475956
+0.297978
+0.617377
+0.368689
+0.511311
+0.262623
+0.582022
+0.404044
+0.523333
+0.283333
+0.623333
+0.383333
+0.502623
+0.262623
+0.644044
+0.404044
+0.502623
+0.297978
+0.644044
+0.368689
+0.537978
+0.262623
+0.608689
+0.404044
+0.550000
+0.283333
+0.650000
+0.383333
+0.529289
+0.262623
+0.670711
+0.404044
+0.529289
+0.297978
+0.670711
+0.368689
+0.564645
+0.262623
+0.635355
+0.404044
+0.576667
+0.283333
+0.676667
+0.383333
+0.555956
+0.262623
+0.697377
+0.404044
+0.555956
+0.297978
+0.697377
+0.368689
+0.591311
+0.262623
+0.662022
+0.404044
+0.603333
+0.283333
+0.703333
+0.383333
+0.582623
+0.262623
+0.724044
+0.404044
+0.582623
+0.297978
+0.724044
+0.368689
+0.617978
+0.262623
+0.688689
+0.404044
+0.630000
+0.283333
+0.730000
+0.383333
+0.609289
+0.262623
+0.750711
+0.404044
+0.609289
+0.297978
+0.750711
+0.368689
+0.644645
+0.262623
+0.715355
+0.404044
+0.656667
+0.283333
+0.756667
+0.383333
+0.635956
+0.262623
+0.777377
+0.404044
+0.635956
+0.297978
+0.777377
+0.368689
+0.671311
+0.262623
+0.742022
+0.404044
+0.683333
+0.283333
+0.783333
+0.383333
+0.662623
+0.262623
+0.804044
+0.404044
+0.662623
+0.297978
+0.804044
+0.368689
+0.697978
+0.262623
+0.768689
+0.404044
+0.710000
+0.283333
+0.810000
+0.383333
+0.689289
+0.262623
+0.830711
+0.404044
+0.689289
+0.297978
+0.830711
+0.368689
+0.724645
+0.262623
+0.795355
+0.404044
+0.736667
+0.283333
+0.836667
+0.383333
+0.715956
+0.262623
+0.857377
+0.404044
+0.715956
+0.297978
+0.857377
+0.368689
+0.751311
+0.262623
+0.822022
+0.404044
+0.763333
+0.283333
+0.863333
+0.383333
+0.742623
+0.262623
+0.884044
+0.404044
+0.742623
+0.297978
+0.884044
+0.368689
+0.777978
+0.262623
+0.848689
+0.404044
+0.790000
+0.283333
+0.890000
+0.383333
+0.769289
+0.262623
+0.910711
+0.404044
+0.769289
+0.297978
+0.910711
+0.368689
+0.804645
+0.262623
+0.875355
+0.404044
+0.816667
+0.283333
+0.916667
+0.383333
+0.795956
+0.262623
+0.937377
+0.404044
+0.795956
+0.297978
+0.937377
+0.368689
+0.831311
+0.262623
+0.902022
+0.404044
+0.843333
+0.283333
+0.943333
+0.383333
+0.822623
+0.262623
+0.964044
+0.404044
+0.822623
+0.297978
+0.964044
+0.368689
+0.857978
+0.262623
+0.928689
+0.404044
+0.870000
+0.283333
+0.970000
+0.383333
+0.849289
+0.262623
+0.990711
+0.404044
+0.849289
+0.297978
+0.990711
+0.368689
+0.884645
+0.262623
+0.955355
+0.404044
+0.896667
+0.283333
+0.996667
+0.383333
+0.875956
+0.262623
+1.017377
+0.404044
+0.875956
+0.297978
+1.017377
+0.368689
+0.911311
+0.262623
+0.982022
+0.404044
+0.923333
+0.283333
+1.023333
+0.383333
+0.902623
+0.262623
+1.044044
+0.404044
+0.902623
+0.297978
+1.044044
+0.368689
+0.937978
+0.262623
+1.008689
+0.404044
+0.950000
+0.283333
+1.050000
+0.383333
+0.929289
+0.262623
+1.070711
+0.404044
+0.929289
+0.297978
+1.070711
+0.368689
+0.964645
+0.262623
+1.035355
+0.404044
+-0.036667
+0.310000
+0.063333
+0.410000
+-0.057377
+0.289289
+0.084044
+0.430711
+-0.057377
+0.324645
+0.084044
+0.395355
+-0.022022
+0.289289
+0.048689
+0.430711
+-0.010000
+0.310000
+0.090000
+0.410000
+-0.030711
+0.289289
+0.110711
+0.430711
+-0.030711
+0.324645
+0.110711
+0.395355
+0.004645
+0.289289
+0.075355
+0.430711
+0.016667
+0.310000
+0.116667
+0.410000
+-0.004044
+0.289289
+0.137377
+0.430711
+-0.004044
+0.324645
+0.137377
+0.395355
+0.031311
+0.289289
+0.102022
+0.430711
+0.043333
+0.310000
+0.143333
+0.410000
+0.022623
+0.289289
+0.164044
+0.430711
+0.022623
+0.324645
+0.164044
+0.395355
+0.057978
+0.289289
+0.128689
+0.430711
+0.070000
+0.310000
+0.170000
+0.410000
+0.049289
+0.289289
+0.190711
+0.430711
+0.049289
+0.324645
+0.190711
+0.395355
+0.084645
+0.289289
+0.155355
+0.430711
+0.096667
+0.310000
+0.196667
+0.410000
+0.075956
+0.289289
+0.217377
+0.430711
+0.075956
+0.324645
+0.217377
+0.395355
+0.111311
+0.289289
+0.182022
+0.430711
+0.123333
+0.310000
+0.223333
+0.410000
+0.102623
+0.289289
+0.244044
+0.430711
+0.102623
+0.324645
+0.244044
+0.395355
+0.137978
+0.289289
+0.208689
+0.430711
+0.150000
+0.310000
+0.250000
+0.410000
+0.129289
+0.289289
+0.270711
+0.430711
+0.129289
+0.324645
+0.270711
+0.395355
+0.164645
+0.289289
+0.235355
+0.430711
+0.176667
+0.310000
+0.276667
+0.410000
+0.155956
+0.289289
+0.297377
+0.430711
+0.155956
+0.324645
+0.297377
+0.395355
+0.191311
+0.289289
+0.262022
+0.430711
+0.203333
+0.310000
+0.303333
+0.410000
+0.182623
+0.289289
+0.324044
+0.430711
+0.182623
+0.324645
+0.324044
+0.395355
+0.217978
+0.289289
+0.288689
+0.430711
+0.230000
+0.310000
+0.330000
+0.410000
+0.209289
+0.289289
+0.350711
+0.430711
+0.209289
+0.324645
+0.350711
+0.395355
+0.244645
+0.289289
+0.315355
+0.430711
+0.256667
+0.310000
+0.356667
+0.410000
+0.235956
+0.289289
+0.377377
+0.430711
+0.235956
+0.324645
+0.377377
+0.395355
+0.271311
+0.289289
+0.342022
+0.430711
+0.283333
+0.310000
+0.383333
+0.410000
+0.262623
+0.289289
+0.404044
+0.430711
+0.262623
+0.324645
+0.404044
+0.395355
+0.297978
+0.289289
+0.368689
+0.430711
+0.310000
+0.310000
+0.410000
+0.410000
+0.289289
+0.289289
+0.430711
+0.430711
+0.289289
+0.324645
+0.430711
+0.395355
+0.324645
+0.289289
+0.395355
+0.430711
+0.336667
+0.310000
+0.436667
+0.410000
+0.315956
+0.289289
+0.457377
+0.430711
+0.315956
+0.324645
+0.457377
+0.395355
+0.351311
+0.289289
+0.422022
+0.430711
+0.363333
+0.310000
+0.463333
+0.410000
+0.342623
+0.289289
+0.484044
+0.430711
+0.342623
+0.324645
+0.484044
+0.395355
+0.377978
+0.289289
+0.448689
+0.430711
+0.390000
+0.310000
+0.490000
+0.410000
+0.369289
+0.289289
+0.510711
+0.430711
+0.369289
+0.324645
+0.510711
+0.395355
+0.404645
+0.289289
+0.475355
+0.430711
+0.416667
+0.310000
+0.516667
+0.410000
+0.395956
+0.289289
+0.537377
+0.430711
+0.395956
+0.324645
+0.537377
+0.395355
+0.431311
+0.289289
+0.502022
+0.430711
+0.443333
+0.310000
+0.543333
+0.410000
+0.422623
+0.289289
+0.564044
+0.430711
+0.422623
+0.324645
+0.564044
+0.395355
+0.457978
+0.289289
+0.528689
+0.430711
+0.470000
+0.310000
+0.570000
+0.410000
+0.449289
+0.289289
+0.590711
+0.430711
+0.449289
+0.324645
+0.590711
+0.395355
+0.484645
+0.289289
+0.555355
+0.430711
+0.496667
+0.310000
+0.596667
+0.410000
+0.475956
+0.289289
+0.617377
+0.430711
+0.475956
+0.324645
+0.617377
+0.395355
+0.511311
+0.289289
+0.582022
+0.430711
+0.523333
+0.310000
+0.623333
+0.410000
+0.502623
+0.289289
+0.644044
+0.430711
+0.502623
+0.324645
+0.644044
+0.395355
+0.537978
+0.289289
+0.608689
+0.430711
+0.550000
+0.310000
+0.650000
+0.410000
+0.529289
+0.289289
+0.670711
+0.430711
+0.529289
+0.324645
+0.670711
+0.395355
+0.564645
+0.289289
+0.635355
+0.430711
+0.576667
+0.310000
+0.676667
+0.410000
+0.555956
+0.289289
+0.697377
+0.430711
+0.555956
+0.324645
+0.697377
+0.395355
+0.591311
+0.289289
+0.662022
+0.430711
+0.603333
+0.310000
+0.703333
+0.410000
+0.582623
+0.289289
+0.724044
+0.430711
+0.582623
+0.324645
+0.724044
+0.395355
+0.617978
+0.289289
+0.688689
+0.430711
+0.630000
+0.310000
+0.730000
+0.410000
+0.609289
+0.289289
+0.750711
+0.430711
+0.609289
+0.324645
+0.750711
+0.395355
+0.644645
+0.289289
+0.715355
+0.430711
+0.656667
+0.310000
+0.756667
+0.410000
+0.635956
+0.289289
+0.777377
+0.430711
+0.635956
+0.324645
+0.777377
+0.395355
+0.671311
+0.289289
+0.742022
+0.430711
+0.683333
+0.310000
+0.783333
+0.410000
+0.662623
+0.289289
+0.804044
+0.430711
+0.662623
+0.324645
+0.804044
+0.395355
+0.697978
+0.289289
+0.768689
+0.430711
+0.710000
+0.310000
+0.810000
+0.410000
+0.689289
+0.289289
+0.830711
+0.430711
+0.689289
+0.324645
+0.830711
+0.395355
+0.724645
+0.289289
+0.795355
+0.430711
+0.736667
+0.310000
+0.836667
+0.410000
+0.715956
+0.289289
+0.857377
+0.430711
+0.715956
+0.324645
+0.857377
+0.395355
+0.751311
+0.289289
+0.822022
+0.430711
+0.763333
+0.310000
+0.863333
+0.410000
+0.742623
+0.289289
+0.884044
+0.430711
+0.742623
+0.324645
+0.884044
+0.395355
+0.777978
+0.289289
+0.848689
+0.430711
+0.790000
+0.310000
+0.890000
+0.410000
+0.769289
+0.289289
+0.910711
+0.430711
+0.769289
+0.324645
+0.910711
+0.395355
+0.804645
+0.289289
+0.875355
+0.430711
+0.816667
+0.310000
+0.916667
+0.410000
+0.795956
+0.289289
+0.937377
+0.430711
+0.795956
+0.324645
+0.937377
+0.395355
+0.831311
+0.289289
+0.902022
+0.430711
+0.843333
+0.310000
+0.943333
+0.410000
+0.822623
+0.289289
+0.964044
+0.430711
+0.822623
+0.324645
+0.964044
+0.395355
+0.857978
+0.289289
+0.928689
+0.430711
+0.870000
+0.310000
+0.970000
+0.410000
+0.849289
+0.289289
+0.990711
+0.430711
+0.849289
+0.324645
+0.990711
+0.395355
+0.884645
+0.289289
+0.955355
+0.430711
+0.896667
+0.310000
+0.996667
+0.410000
+0.875956
+0.289289
+1.017377
+0.430711
+0.875956
+0.324645
+1.017377
+0.395355
+0.911311
+0.289289
+0.982022
+0.430711
+0.923333
+0.310000
+1.023333
+0.410000
+0.902623
+0.289289
+1.044044
+0.430711
+0.902623
+0.324645
+1.044044
+0.395355
+0.937978
+0.289289
+1.008689
+0.430711
+0.950000
+0.310000
+1.050000
+0.410000
+0.929289
+0.289289
+1.070711
+0.430711
+0.929289
+0.324645
+1.070711
+0.395355
+0.964645
+0.289289
+1.035355
+0.430711
+-0.036667
+0.336667
+0.063333
+0.436667
+-0.057377
+0.315956
+0.084044
+0.457377
+-0.057377
+0.351311
+0.084044
+0.422022
+-0.022022
+0.315956
+0.048689
+0.457377
+-0.010000
+0.336667
+0.090000
+0.436667
+-0.030711
+0.315956
+0.110711
+0.457377
+-0.030711
+0.351311
+0.110711
+0.422022
+0.004645
+0.315956
+0.075355
+0.457377
+0.016667
+0.336667
+0.116667
+0.436667
+-0.004044
+0.315956
+0.137377
+0.457377
+-0.004044
+0.351311
+0.137377
+0.422022
+0.031311
+0.315956
+0.102022
+0.457377
+0.043333
+0.336667
+0.143333
+0.436667
+0.022623
+0.315956
+0.164044
+0.457377
+0.022623
+0.351311
+0.164044
+0.422022
+0.057978
+0.315956
+0.128689
+0.457377
+0.070000
+0.336667
+0.170000
+0.436667
+0.049289
+0.315956
+0.190711
+0.457377
+0.049289
+0.351311
+0.190711
+0.422022
+0.084645
+0.315956
+0.155355
+0.457377
+0.096667
+0.336667
+0.196667
+0.436667
+0.075956
+0.315956
+0.217377
+0.457377
+0.075956
+0.351311
+0.217377
+0.422022
+0.111311
+0.315956
+0.182022
+0.457377
+0.123333
+0.336667
+0.223333
+0.436667
+0.102623
+0.315956
+0.244044
+0.457377
+0.102623
+0.351311
+0.244044
+0.422022
+0.137978
+0.315956
+0.208689
+0.457377
+0.150000
+0.336667
+0.250000
+0.436667
+0.129289
+0.315956
+0.270711
+0.457377
+0.129289
+0.351311
+0.270711
+0.422022
+0.164645
+0.315956
+0.235355
+0.457377
+0.176667
+0.336667
+0.276667
+0.436667
+0.155956
+0.315956
+0.297377
+0.457377
+0.155956
+0.351311
+0.297377
+0.422022
+0.191311
+0.315956
+0.262022
+0.457377
+0.203333
+0.336667
+0.303333
+0.436667
+0.182623
+0.315956
+0.324044
+0.457377
+0.182623
+0.351311
+0.324044
+0.422022
+0.217978
+0.315956
+0.288689
+0.457377
+0.230000
+0.336667
+0.330000
+0.436667
+0.209289
+0.315956
+0.350711
+0.457377
+0.209289
+0.351311
+0.350711
+0.422022
+0.244645
+0.315956
+0.315355
+0.457377
+0.256667
+0.336667
+0.356667
+0.436667
+0.235956
+0.315956
+0.377377
+0.457377
+0.235956
+0.351311
+0.377377
+0.422022
+0.271311
+0.315956
+0.342022
+0.457377
+0.283333
+0.336667
+0.383333
+0.436667
+0.262623
+0.315956
+0.404044
+0.457377
+0.262623
+0.351311
+0.404044
+0.422022
+0.297978
+0.315956
+0.368689
+0.457377
+0.310000
+0.336667
+0.410000
+0.436667
+0.289289
+0.315956
+0.430711
+0.457377
+0.289289
+0.351311
+0.430711
+0.422022
+0.324645
+0.315956
+0.395355
+0.457377
+0.336667
+0.336667
+0.436667
+0.436667
+0.315956
+0.315956
+0.457377
+0.457377
+0.315956
+0.351311
+0.457377
+0.422022
+0.351311
+0.315956
+0.422022
+0.457377
+0.363333
+0.336667
+0.463333
+0.436667
+0.342623
+0.315956
+0.484044
+0.457377
+0.342623
+0.351311
+0.484044
+0.422022
+0.377978
+0.315956
+0.448689
+0.457377
+0.390000
+0.336667
+0.490000
+0.436667
+0.369289
+0.315956
+0.510711
+0.457377
+0.369289
+0.351311
+0.510711
+0.422022
+0.404645
+0.315956
+0.475355
+0.457377
+0.416667
+0.336667
+0.516667
+0.436667
+0.395956
+0.315956
+0.537377
+0.457377
+0.395956
+0.351311
+0.537377
+0.422022
+0.431311
+0.315956
+0.502022
+0.457377
+0.443333
+0.336667
+0.543333
+0.436667
+0.422623
+0.315956
+0.564044
+0.457377
+0.422623
+0.351311
+0.564044
+0.422022
+0.457978
+0.315956
+0.528689
+0.457377
+0.470000
+0.336667
+0.570000
+0.436667
+0.449289
+0.315956
+0.590711
+0.457377
+0.449289
+0.351311
+0.590711
+0.422022
+0.484645
+0.315956
+0.555355
+0.457377
+0.496667
+0.336667
+0.596667
+0.436667
+0.475956
+0.315956
+0.617377
+0.457377
+0.475956
+0.351311
+0.617377
+0.422022
+0.511311
+0.315956
+0.582022
+0.457377
+0.523333
+0.336667
+0.623333
+0.436667
+0.502623
+0.315956
+0.644044
+0.457377
+0.502623
+0.351311
+0.644044
+0.422022
+0.537978
+0.315956
+0.608689
+0.457377
+0.550000
+0.336667
+0.650000
+0.436667
+0.529289
+0.315956
+0.670711
+0.457377
+0.529289
+0.351311
+0.670711
+0.422022
+0.564645
+0.315956
+0.635355
+0.457377
+0.576667
+0.336667
+0.676667
+0.436667
+0.555956
+0.315956
+0.697377
+0.457377
+0.555956
+0.351311
+0.697377
+0.422022
+0.591311
+0.315956
+0.662022
+0.457377
+0.603333
+0.336667
+0.703333
+0.436667
+0.582623
+0.315956
+0.724044
+0.457377
+0.582623
+0.351311
+0.724044
+0.422022
+0.617978
+0.315956
+0.688689
+0.457377
+0.630000
+0.336667
+0.730000
+0.436667
+0.609289
+0.315956
+0.750711
+0.457377
+0.609289
+0.351311
+0.750711
+0.422022
+0.644645
+0.315956
+0.715355
+0.457377
+0.656667
+0.336667
+0.756667
+0.436667
+0.635956
+0.315956
+0.777377
+0.457377
+0.635956
+0.351311
+0.777377
+0.422022
+0.671311
+0.315956
+0.742022
+0.457377
+0.683333
+0.336667
+0.783333
+0.436667
+0.662623
+0.315956
+0.804044
+0.457377
+0.662623
+0.351311
+0.804044
+0.422022
+0.697978
+0.315956
+0.768689
+0.457377
+0.710000
+0.336667
+0.810000
+0.436667
+0.689289
+0.315956
+0.830711
+0.457377
+0.689289
+0.351311
+0.830711
+0.422022
+0.724645
+0.315956
+0.795355
+0.457377
+0.736667
+0.336667
+0.836667
+0.436667
+0.715956
+0.315956
+0.857377
+0.457377
+0.715956
+0.351311
+0.857377
+0.422022
+0.751311
+0.315956
+0.822022
+0.457377
+0.763333
+0.336667
+0.863333
+0.436667
+0.742623
+0.315956
+0.884044
+0.457377
+0.742623
+0.351311
+0.884044
+0.422022
+0.777978
+0.315956
+0.848689
+0.457377
+0.790000
+0.336667
+0.890000
+0.436667
+0.769289
+0.315956
+0.910711
+0.457377
+0.769289
+0.351311
+0.910711
+0.422022
+0.804645
+0.315956
+0.875355
+0.457377
+0.816667
+0.336667
+0.916667
+0.436667
+0.795956
+0.315956
+0.937377
+0.457377
+0.795956
+0.351311
+0.937377
+0.422022
+0.831311
+0.315956
+0.902022
+0.457377
+0.843333
+0.336667
+0.943333
+0.436667
+0.822623
+0.315956
+0.964044
+0.457377
+0.822623
+0.351311
+0.964044
+0.422022
+0.857978
+0.315956
+0.928689
+0.457377
+0.870000
+0.336667
+0.970000
+0.436667
+0.849289
+0.315956
+0.990711
+0.457377
+0.849289
+0.351311
+0.990711
+0.422022
+0.884645
+0.315956
+0.955355
+0.457377
+0.896667
+0.336667
+0.996667
+0.436667
+0.875956
+0.315956
+1.017377
+0.457377
+0.875956
+0.351311
+1.017377
+0.422022
+0.911311
+0.315956
+0.982022
+0.457377
+0.923333
+0.336667
+1.023333
+0.436667
+0.902623
+0.315956
+1.044044
+0.457377
+0.902623
+0.351311
+1.044044
+0.422022
+0.937978
+0.315956
+1.008689
+0.457377
+0.950000
+0.336667
+1.050000
+0.436667
+0.929289
+0.315956
+1.070711
+0.457377
+0.929289
+0.351311
+1.070711
+0.422022
+0.964645
+0.315956
+1.035355
+0.457377
+-0.036667
+0.363333
+0.063333
+0.463333
+-0.057377
+0.342623
+0.084044
+0.484044
+-0.057377
+0.377978
+0.084044
+0.448689
+-0.022022
+0.342623
+0.048689
+0.484044
+-0.010000
+0.363333
+0.090000
+0.463333
+-0.030711
+0.342623
+0.110711
+0.484044
+-0.030711
+0.377978
+0.110711
+0.448689
+0.004645
+0.342623
+0.075355
+0.484044
+0.016667
+0.363333
+0.116667
+0.463333
+-0.004044
+0.342623
+0.137377
+0.484044
+-0.004044
+0.377978
+0.137377
+0.448689
+0.031311
+0.342623
+0.102022
+0.484044
+0.043333
+0.363333
+0.143333
+0.463333
+0.022623
+0.342623
+0.164044
+0.484044
+0.022623
+0.377978
+0.164044
+0.448689
+0.057978
+0.342623
+0.128689
+0.484044
+0.070000
+0.363333
+0.170000
+0.463333
+0.049289
+0.342623
+0.190711
+0.484044
+0.049289
+0.377978
+0.190711
+0.448689
+0.084645
+0.342623
+0.155355
+0.484044
+0.096667
+0.363333
+0.196667
+0.463333
+0.075956
+0.342623
+0.217377
+0.484044
+0.075956
+0.377978
+0.217377
+0.448689
+0.111311
+0.342623
+0.182022
+0.484044
+0.123333
+0.363333
+0.223333
+0.463333
+0.102623
+0.342623
+0.244044
+0.484044
+0.102623
+0.377978
+0.244044
+0.448689
+0.137978
+0.342623
+0.208689
+0.484044
+0.150000
+0.363333
+0.250000
+0.463333
+0.129289
+0.342623
+0.270711
+0.484044
+0.129289
+0.377978
+0.270711
+0.448689
+0.164645
+0.342623
+0.235355
+0.484044
+0.176667
+0.363333
+0.276667
+0.463333
+0.155956
+0.342623
+0.297377
+0.484044
+0.155956
+0.377978
+0.297377
+0.448689
+0.191311
+0.342623
+0.262022
+0.484044
+0.203333
+0.363333
+0.303333
+0.463333
+0.182623
+0.342623
+0.324044
+0.484044
+0.182623
+0.377978
+0.324044
+0.448689
+0.217978
+0.342623
+0.288689
+0.484044
+0.230000
+0.363333
+0.330000
+0.463333
+0.209289
+0.342623
+0.350711
+0.484044
+0.209289
+0.377978
+0.350711
+0.448689
+0.244645
+0.342623
+0.315355
+0.484044
+0.256667
+0.363333
+0.356667
+0.463333
+0.235956
+0.342623
+0.377377
+0.484044
+0.235956
+0.377978
+0.377377
+0.448689
+0.271311
+0.342623
+0.342022
+0.484044
+0.283333
+0.363333
+0.383333
+0.463333
+0.262623
+0.342623
+0.404044
+0.484044
+0.262623
+0.377978
+0.404044
+0.448689
+0.297978
+0.342623
+0.368689
+0.484044
+0.310000
+0.363333
+0.410000
+0.463333
+0.289289
+0.342623
+0.430711
+0.484044
+0.289289
+0.377978
+0.430711
+0.448689
+0.324645
+0.342623
+0.395355
+0.484044
+0.336667
+0.363333
+0.436667
+0.463333
+0.315956
+0.342623
+0.457377
+0.484044
+0.315956
+0.377978
+0.457377
+0.448689
+0.351311
+0.342623
+0.422022
+0.484044
+0.363333
+0.363333
+0.463333
+0.463333
+0.342623
+0.342623
+0.484044
+0.484044
+0.342623
+0.377978
+0.484044
+0.448689
+0.377978
+0.342623
+0.448689
+0.484044
+0.390000
+0.363333
+0.490000
+0.463333
+0.369289
+0.342623
+0.510711
+0.484044
+0.369289
+0.377978
+0.510711
+0.448689
+0.404645
+0.342623
+0.475355
+0.484044
+0.416667
+0.363333
+0.516667
+0.463333
+0.395956
+0.342623
+0.537377
+0.484044
+0.395956
+0.377978
+0.537377
+0.448689
+0.431311
+0.342623
+0.502022
+0.484044
+0.443333
+0.363333
+0.543333
+0.463333
+0.422623
+0.342623
+0.564044
+0.484044
+0.422623
+0.377978
+0.564044
+0.448689
+0.457978
+0.342623
+0.528689
+0.484044
+0.470000
+0.363333
+0.570000
+0.463333
+0.449289
+0.342623
+0.590711
+0.484044
+0.449289
+0.377978
+0.590711
+0.448689
+0.484645
+0.342623
+0.555355
+0.484044
+0.496667
+0.363333
+0.596667
+0.463333
+0.475956
+0.342623
+0.617377
+0.484044
+0.475956
+0.377978
+0.617377
+0.448689
+0.511311
+0.342623
+0.582022
+0.484044
+0.523333
+0.363333
+0.623333
+0.463333
+0.502623
+0.342623
+0.644044
+0.484044
+0.502623
+0.377978
+0.644044
+0.448689
+0.537978
+0.342623
+0.608689
+0.484044
+0.550000
+0.363333
+0.650000
+0.463333
+0.529289
+0.342623
+0.670711
+0.484044
+0.529289
+0.377978
+0.670711
+0.448689
+0.564645
+0.342623
+0.635355
+0.484044
+0.576667
+0.363333
+0.676667
+0.463333
+0.555956
+0.342623
+0.697377
+0.484044
+0.555956
+0.377978
+0.697377
+0.448689
+0.591311
+0.342623
+0.662022
+0.484044
+0.603333
+0.363333
+0.703333
+0.463333
+0.582623
+0.342623
+0.724044
+0.484044
+0.582623
+0.377978
+0.724044
+0.448689
+0.617978
+0.342623
+0.688689
+0.484044
+0.630000
+0.363333
+0.730000
+0.463333
+0.609289
+0.342623
+0.750711
+0.484044
+0.609289
+0.377978
+0.750711
+0.448689
+0.644645
+0.342623
+0.715355
+0.484044
+0.656667
+0.363333
+0.756667
+0.463333
+0.635956
+0.342623
+0.777377
+0.484044
+0.635956
+0.377978
+0.777377
+0.448689
+0.671311
+0.342623
+0.742022
+0.484044
+0.683333
+0.363333
+0.783333
+0.463333
+0.662623
+0.342623
+0.804044
+0.484044
+0.662623
+0.377978
+0.804044
+0.448689
+0.697978
+0.342623
+0.768689
+0.484044
+0.710000
+0.363333
+0.810000
+0.463333
+0.689289
+0.342623
+0.830711
+0.484044
+0.689289
+0.377978
+0.830711
+0.448689
+0.724645
+0.342623
+0.795355
+0.484044
+0.736667
+0.363333
+0.836667
+0.463333
+0.715956
+0.342623
+0.857377
+0.484044
+0.715956
+0.377978
+0.857377
+0.448689
+0.751311
+0.342623
+0.822022
+0.484044
+0.763333
+0.363333
+0.863333
+0.463333
+0.742623
+0.342623
+0.884044
+0.484044
+0.742623
+0.377978
+0.884044
+0.448689
+0.777978
+0.342623
+0.848689
+0.484044
+0.790000
+0.363333
+0.890000
+0.463333
+0.769289
+0.342623
+0.910711
+0.484044
+0.769289
+0.377978
+0.910711
+0.448689
+0.804645
+0.342623
+0.875355
+0.484044
+0.816667
+0.363333
+0.916667
+0.463333
+0.795956
+0.342623
+0.937377
+0.484044
+0.795956
+0.377978
+0.937377
+0.448689
+0.831311
+0.342623
+0.902022
+0.484044
+0.843333
+0.363333
+0.943333
+0.463333
+0.822623
+0.342623
+0.964044
+0.484044
+0.822623
+0.377978
+0.964044
+0.448689
+0.857978
+0.342623
+0.928689
+0.484044
+0.870000
+0.363333
+0.970000
+0.463333
+0.849289
+0.342623
+0.990711
+0.484044
+0.849289
+0.377978
+0.990711
+0.448689
+0.884645
+0.342623
+0.955355
+0.484044
+0.896667
+0.363333
+0.996667
+0.463333
+0.875956
+0.342623
+1.017377
+0.484044
+0.875956
+0.377978
+1.017377
+0.448689
+0.911311
+0.342623
+0.982022
+0.484044
+0.923333
+0.363333
+1.023333
+0.463333
+0.902623
+0.342623
+1.044044
+0.484044
+0.902623
+0.377978
+1.044044
+0.448689
+0.937978
+0.342623
+1.008689
+0.484044
+0.950000
+0.363333
+1.050000
+0.463333
+0.929289
+0.342623
+1.070711
+0.484044
+0.929289
+0.377978
+1.070711
+0.448689
+0.964645
+0.342623
+1.035355
+0.484044
+-0.036667
+0.390000
+0.063333
+0.490000
+-0.057377
+0.369289
+0.084044
+0.510711
+-0.057377
+0.404645
+0.084044
+0.475355
+-0.022022
+0.369289
+0.048689
+0.510711
+-0.010000
+0.390000
+0.090000
+0.490000
+-0.030711
+0.369289
+0.110711
+0.510711
+-0.030711
+0.404645
+0.110711
+0.475355
+0.004645
+0.369289
+0.075355
+0.510711
+0.016667
+0.390000
+0.116667
+0.490000
+-0.004044
+0.369289
+0.137377
+0.510711
+-0.004044
+0.404645
+0.137377
+0.475355
+0.031311
+0.369289
+0.102022
+0.510711
+0.043333
+0.390000
+0.143333
+0.490000
+0.022623
+0.369289
+0.164044
+0.510711
+0.022623
+0.404645
+0.164044
+0.475355
+0.057978
+0.369289
+0.128689
+0.510711
+0.070000
+0.390000
+0.170000
+0.490000
+0.049289
+0.369289
+0.190711
+0.510711
+0.049289
+0.404645
+0.190711
+0.475355
+0.084645
+0.369289
+0.155355
+0.510711
+0.096667
+0.390000
+0.196667
+0.490000
+0.075956
+0.369289
+0.217377
+0.510711
+0.075956
+0.404645
+0.217377
+0.475355
+0.111311
+0.369289
+0.182022
+0.510711
+0.123333
+0.390000
+0.223333
+0.490000
+0.102623
+0.369289
+0.244044
+0.510711
+0.102623
+0.404645
+0.244044
+0.475355
+0.137978
+0.369289
+0.208689
+0.510711
+0.150000
+0.390000
+0.250000
+0.490000
+0.129289
+0.369289
+0.270711
+0.510711
+0.129289
+0.404645
+0.270711
+0.475355
+0.164645
+0.369289
+0.235355
+0.510711
+0.176667
+0.390000
+0.276667
+0.490000
+0.155956
+0.369289
+0.297377
+0.510711
+0.155956
+0.404645
+0.297377
+0.475355
+0.191311
+0.369289
+0.262022
+0.510711
+0.203333
+0.390000
+0.303333
+0.490000
+0.182623
+0.369289
+0.324044
+0.510711
+0.182623
+0.404645
+0.324044
+0.475355
+0.217978
+0.369289
+0.288689
+0.510711
+0.230000
+0.390000
+0.330000
+0.490000
+0.209289
+0.369289
+0.350711
+0.510711
+0.209289
+0.404645
+0.350711
+0.475355
+0.244645
+0.369289
+0.315355
+0.510711
+0.256667
+0.390000
+0.356667
+0.490000
+0.235956
+0.369289
+0.377377
+0.510711
+0.235956
+0.404645
+0.377377
+0.475355
+0.271311
+0.369289
+0.342022
+0.510711
+0.283333
+0.390000
+0.383333
+0.490000
+0.262623
+0.369289
+0.404044
+0.510711
+0.262623
+0.404645
+0.404044
+0.475355
+0.297978
+0.369289
+0.368689
+0.510711
+0.310000
+0.390000
+0.410000
+0.490000
+0.289289
+0.369289
+0.430711
+0.510711
+0.289289
+0.404645
+0.430711
+0.475355
+0.324645
+0.369289
+0.395355
+0.510711
+0.336667
+0.390000
+0.436667
+0.490000
+0.315956
+0.369289
+0.457377
+0.510711
+0.315956
+0.404645
+0.457377
+0.475355
+0.351311
+0.369289
+0.422022
+0.510711
+0.363333
+0.390000
+0.463333
+0.490000
+0.342623
+0.369289
+0.484044
+0.510711
+0.342623
+0.404645
+0.484044
+0.475355
+0.377978
+0.369289
+0.448689
+0.510711
+0.390000
+0.390000
+0.490000
+0.490000
+0.369289
+0.369289
+0.510711
+0.510711
+0.369289
+0.404645
+0.510711
+0.475355
+0.404645
+0.369289
+0.475355
+0.510711
+0.416667
+0.390000
+0.516667
+0.490000
+0.395956
+0.369289
+0.537377
+0.510711
+0.395956
+0.404645
+0.537377
+0.475355
+0.431311
+0.369289
+0.502022
+0.510711
+0.443333
+0.390000
+0.543333
+0.490000
+0.422623
+0.369289
+0.564044
+0.510711
+0.422623
+0.404645
+0.564044
+0.475355
+0.457978
+0.369289
+0.528689
+0.510711
+0.470000
+0.390000
+0.570000
+0.490000
+0.449289
+0.369289
+0.590711
+0.510711
+0.449289
+0.404645
+0.590711
+0.475355
+0.484645
+0.369289
+0.555355
+0.510711
+0.496667
+0.390000
+0.596667
+0.490000
+0.475956
+0.369289
+0.617377
+0.510711
+0.475956
+0.404645
+0.617377
+0.475355
+0.511311
+0.369289
+0.582022
+0.510711
+0.523333
+0.390000
+0.623333
+0.490000
+0.502623
+0.369289
+0.644044
+0.510711
+0.502623
+0.404645
+0.644044
+0.475355
+0.537978
+0.369289
+0.608689
+0.510711
+0.550000
+0.390000
+0.650000
+0.490000
+0.529289
+0.369289
+0.670711
+0.510711
+0.529289
+0.404645
+0.670711
+0.475355
+0.564645
+0.369289
+0.635355
+0.510711
+0.576667
+0.390000
+0.676667
+0.490000
+0.555956
+0.369289
+0.697377
+0.510711
+0.555956
+0.404645
+0.697377
+0.475355
+0.591311
+0.369289
+0.662022
+0.510711
+0.603333
+0.390000
+0.703333
+0.490000
+0.582623
+0.369289
+0.724044
+0.510711
+0.582623
+0.404645
+0.724044
+0.475355
+0.617978
+0.369289
+0.688689
+0.510711
+0.630000
+0.390000
+0.730000
+0.490000
+0.609289
+0.369289
+0.750711
+0.510711
+0.609289
+0.404645
+0.750711
+0.475355
+0.644645
+0.369289
+0.715355
+0.510711
+0.656667
+0.390000
+0.756667
+0.490000
+0.635956
+0.369289
+0.777377
+0.510711
+0.635956
+0.404645
+0.777377
+0.475355
+0.671311
+0.369289
+0.742022
+0.510711
+0.683333
+0.390000
+0.783333
+0.490000
+0.662623
+0.369289
+0.804044
+0.510711
+0.662623
+0.404645
+0.804044
+0.475355
+0.697978
+0.369289
+0.768689
+0.510711
+0.710000
+0.390000
+0.810000
+0.490000
+0.689289
+0.369289
+0.830711
+0.510711
+0.689289
+0.404645
+0.830711
+0.475355
+0.724645
+0.369289
+0.795355
+0.510711
+0.736667
+0.390000
+0.836667
+0.490000
+0.715956
+0.369289
+0.857377
+0.510711
+0.715956
+0.404645
+0.857377
+0.475355
+0.751311
+0.369289
+0.822022
+0.510711
+0.763333
+0.390000
+0.863333
+0.490000
+0.742623
+0.369289
+0.884044
+0.510711
+0.742623
+0.404645
+0.884044
+0.475355
+0.777978
+0.369289
+0.848689
+0.510711
+0.790000
+0.390000
+0.890000
+0.490000
+0.769289
+0.369289
+0.910711
+0.510711
+0.769289
+0.404645
+0.910711
+0.475355
+0.804645
+0.369289
+0.875355
+0.510711
+0.816667
+0.390000
+0.916667
+0.490000
+0.795956
+0.369289
+0.937377
+0.510711
+0.795956
+0.404645
+0.937377
+0.475355
+0.831311
+0.369289
+0.902022
+0.510711
+0.843333
+0.390000
+0.943333
+0.490000
+0.822623
+0.369289
+0.964044
+0.510711
+0.822623
+0.404645
+0.964044
+0.475355
+0.857978
+0.369289
+0.928689
+0.510711
+0.870000
+0.390000
+0.970000
+0.490000
+0.849289
+0.369289
+0.990711
+0.510711
+0.849289
+0.404645
+0.990711
+0.475355
+0.884645
+0.369289
+0.955355
+0.510711
+0.896667
+0.390000
+0.996667
+0.490000
+0.875956
+0.369289
+1.017377
+0.510711
+0.875956
+0.404645
+1.017377
+0.475355
+0.911311
+0.369289
+0.982022
+0.510711
+0.923333
+0.390000
+1.023333
+0.490000
+0.902623
+0.369289
+1.044044
+0.510711
+0.902623
+0.404645
+1.044044
+0.475355
+0.937978
+0.369289
+1.008689
+0.510711
+0.950000
+0.390000
+1.050000
+0.490000
+0.929289
+0.369289
+1.070711
+0.510711
+0.929289
+0.404645
+1.070711
+0.475355
+0.964645
+0.369289
+1.035355
+0.510711
+-0.036667
+0.416667
+0.063333
+0.516667
+-0.057377
+0.395956
+0.084044
+0.537377
+-0.057377
+0.431311
+0.084044
+0.502022
+-0.022022
+0.395956
+0.048689
+0.537377
+-0.010000
+0.416667
+0.090000
+0.516667
+-0.030711
+0.395956
+0.110711
+0.537377
+-0.030711
+0.431311
+0.110711
+0.502022
+0.004645
+0.395956
+0.075355
+0.537377
+0.016667
+0.416667
+0.116667
+0.516667
+-0.004044
+0.395956
+0.137377
+0.537377
+-0.004044
+0.431311
+0.137377
+0.502022
+0.031311
+0.395956
+0.102022
+0.537377
+0.043333
+0.416667
+0.143333
+0.516667
+0.022623
+0.395956
+0.164044
+0.537377
+0.022623
+0.431311
+0.164044
+0.502022
+0.057978
+0.395956
+0.128689
+0.537377
+0.070000
+0.416667
+0.170000
+0.516667
+0.049289
+0.395956
+0.190711
+0.537377
+0.049289
+0.431311
+0.190711
+0.502022
+0.084645
+0.395956
+0.155355
+0.537377
+0.096667
+0.416667
+0.196667
+0.516667
+0.075956
+0.395956
+0.217377
+0.537377
+0.075956
+0.431311
+0.217377
+0.502022
+0.111311
+0.395956
+0.182022
+0.537377
+0.123333
+0.416667
+0.223333
+0.516667
+0.102623
+0.395956
+0.244044
+0.537377
+0.102623
+0.431311
+0.244044
+0.502022
+0.137978
+0.395956
+0.208689
+0.537377
+0.150000
+0.416667
+0.250000
+0.516667
+0.129289
+0.395956
+0.270711
+0.537377
+0.129289
+0.431311
+0.270711
+0.502022
+0.164645
+0.395956
+0.235355
+0.537377
+0.176667
+0.416667
+0.276667
+0.516667
+0.155956
+0.395956
+0.297377
+0.537377
+0.155956
+0.431311
+0.297377
+0.502022
+0.191311
+0.395956
+0.262022
+0.537377
+0.203333
+0.416667
+0.303333
+0.516667
+0.182623
+0.395956
+0.324044
+0.537377
+0.182623
+0.431311
+0.324044
+0.502022
+0.217978
+0.395956
+0.288689
+0.537377
+0.230000
+0.416667
+0.330000
+0.516667
+0.209289
+0.395956
+0.350711
+0.537377
+0.209289
+0.431311
+0.350711
+0.502022
+0.244645
+0.395956
+0.315355
+0.537377
+0.256667
+0.416667
+0.356667
+0.516667
+0.235956
+0.395956
+0.377377
+0.537377
+0.235956
+0.431311
+0.377377
+0.502022
+0.271311
+0.395956
+0.342022
+0.537377
+0.283333
+0.416667
+0.383333
+0.516667
+0.262623
+0.395956
+0.404044
+0.537377
+0.262623
+0.431311
+0.404044
+0.502022
+0.297978
+0.395956
+0.368689
+0.537377
+0.310000
+0.416667
+0.410000
+0.516667
+0.289289
+0.395956
+0.430711
+0.537377
+0.289289
+0.431311
+0.430711
+0.502022
+0.324645
+0.395956
+0.395355
+0.537377
+0.336667
+0.416667
+0.436667
+0.516667
+0.315956
+0.395956
+0.457377
+0.537377
+0.315956
+0.431311
+0.457377
+0.502022
+0.351311
+0.395956
+0.422022
+0.537377
+0.363333
+0.416667
+0.463333
+0.516667
+0.342623
+0.395956
+0.484044
+0.537377
+0.342623
+0.431311
+0.484044
+0.502022
+0.377978
+0.395956
+0.448689
+0.537377
+0.390000
+0.416667
+0.490000
+0.516667
+0.369289
+0.395956
+0.510711
+0.537377
+0.369289
+0.431311
+0.510711
+0.502022
+0.404645
+0.395956
+0.475355
+0.537377
+0.416667
+0.416667
+0.516667
+0.516667
+0.395956
+0.395956
+0.537377
+0.537377
+0.395956
+0.431311
+0.537377
+0.502022
+0.431311
+0.395956
+0.502022
+0.537377
+0.443333
+0.416667
+0.543333
+0.516667
+0.422623
+0.395956
+0.564044
+0.537377
+0.422623
+0.431311
+0.564044
+0.502022
+0.457978
+0.395956
+0.528689
+0.537377
+0.470000
+0.416667
+0.570000
+0.516667
+0.449289
+0.395956
+0.590711
+0.537377
+0.449289
+0.431311
+0.590711
+0.502022
+0.484645
+0.395956
+0.555355
+0.537377
+0.496667
+0.416667
+0.596667
+0.516667
+0.475956
+0.395956
+0.617377
+0.537377
+0.475956
+0.431311
+0.617377
+0.502022
+0.511311
+0.395956
+0.582022
+0.537377
+0.523333
+0.416667
+0.623333
+0.516667
+0.502623
+0.395956
+0.644044
+0.537377
+0.502623
+0.431311
+0.644044
+0.502022
+0.537978
+0.395956
+0.608689
+0.537377
+0.550000
+0.416667
+0.650000
+0.516667
+0.529289
+0.395956
+0.670711
+0.537377
+0.529289
+0.431311
+0.670711
+0.502022
+0.564645
+0.395956
+0.635355
+0.537377
+0.576667
+0.416667
+0.676667
+0.516667
+0.555956
+0.395956
+0.697377
+0.537377
+0.555956
+0.431311
+0.697377
+0.502022
+0.591311
+0.395956
+0.662022
+0.537377
+0.603333
+0.416667
+0.703333
+0.516667
+0.582623
+0.395956
+0.724044
+0.537377
+0.582623
+0.431311
+0.724044
+0.502022
+0.617978
+0.395956
+0.688689
+0.537377
+0.630000
+0.416667
+0.730000
+0.516667
+0.609289
+0.395956
+0.750711
+0.537377
+0.609289
+0.431311
+0.750711
+0.502022
+0.644645
+0.395956
+0.715355
+0.537377
+0.656667
+0.416667
+0.756667
+0.516667
+0.635956
+0.395956
+0.777377
+0.537377
+0.635956
+0.431311
+0.777377
+0.502022
+0.671311
+0.395956
+0.742022
+0.537377
+0.683333
+0.416667
+0.783333
+0.516667
+0.662623
+0.395956
+0.804044
+0.537377
+0.662623
+0.431311
+0.804044
+0.502022
+0.697978
+0.395956
+0.768689
+0.537377
+0.710000
+0.416667
+0.810000
+0.516667
+0.689289
+0.395956
+0.830711
+0.537377
+0.689289
+0.431311
+0.830711
+0.502022
+0.724645
+0.395956
+0.795355
+0.537377
+0.736667
+0.416667
+0.836667
+0.516667
+0.715956
+0.395956
+0.857377
+0.537377
+0.715956
+0.431311
+0.857377
+0.502022
+0.751311
+0.395956
+0.822022
+0.537377
+0.763333
+0.416667
+0.863333
+0.516667
+0.742623
+0.395956
+0.884044
+0.537377
+0.742623
+0.431311
+0.884044
+0.502022
+0.777978
+0.395956
+0.848689
+0.537377
+0.790000
+0.416667
+0.890000
+0.516667
+0.769289
+0.395956
+0.910711
+0.537377
+0.769289
+0.431311
+0.910711
+0.502022
+0.804645
+0.395956
+0.875355
+0.537377
+0.816667
+0.416667
+0.916667
+0.516667
+0.795956
+0.395956
+0.937377
+0.537377
+0.795956
+0.431311
+0.937377
+0.502022
+0.831311
+0.395956
+0.902022
+0.537377
+0.843333
+0.416667
+0.943333
+0.516667
+0.822623
+0.395956
+0.964044
+0.537377
+0.822623
+0.431311
+0.964044
+0.502022
+0.857978
+0.395956
+0.928689
+0.537377
+0.870000
+0.416667
+0.970000
+0.516667
+0.849289
+0.395956
+0.990711
+0.537377
+0.849289
+0.431311
+0.990711
+0.502022
+0.884645
+0.395956
+0.955355
+0.537377
+0.896667
+0.416667
+0.996667
+0.516667
+0.875956
+0.395956
+1.017377
+0.537377
+0.875956
+0.431311
+1.017377
+0.502022
+0.911311
+0.395956
+0.982022
+0.537377
+0.923333
+0.416667
+1.023333
+0.516667
+0.902623
+0.395956
+1.044044
+0.537377
+0.902623
+0.431311
+1.044044
+0.502022
+0.937978
+0.395956
+1.008689
+0.537377
+0.950000
+0.416667
+1.050000
+0.516667
+0.929289
+0.395956
+1.070711
+0.537377
+0.929289
+0.431311
+1.070711
+0.502022
+0.964645
+0.395956
+1.035355
+0.537377
+-0.036667
+0.443333
+0.063333
+0.543333
+-0.057377
+0.422623
+0.084044
+0.564044
+-0.057377
+0.457978
+0.084044
+0.528689
+-0.022022
+0.422623
+0.048689
+0.564044
+-0.010000
+0.443333
+0.090000
+0.543333
+-0.030711
+0.422623
+0.110711
+0.564044
+-0.030711
+0.457978
+0.110711
+0.528689
+0.004645
+0.422623
+0.075355
+0.564044
+0.016667
+0.443333
+0.116667
+0.543333
+-0.004044
+0.422623
+0.137377
+0.564044
+-0.004044
+0.457978
+0.137377
+0.528689
+0.031311
+0.422623
+0.102022
+0.564044
+0.043333
+0.443333
+0.143333
+0.543333
+0.022623
+0.422623
+0.164044
+0.564044
+0.022623
+0.457978
+0.164044
+0.528689
+0.057978
+0.422623
+0.128689
+0.564044
+0.070000
+0.443333
+0.170000
+0.543333
+0.049289
+0.422623
+0.190711
+0.564044
+0.049289
+0.457978
+0.190711
+0.528689
+0.084645
+0.422623
+0.155355
+0.564044
+0.096667
+0.443333
+0.196667
+0.543333
+0.075956
+0.422623
+0.217377
+0.564044
+0.075956
+0.457978
+0.217377
+0.528689
+0.111311
+0.422623
+0.182022
+0.564044
+0.123333
+0.443333
+0.223333
+0.543333
+0.102623
+0.422623
+0.244044
+0.564044
+0.102623
+0.457978
+0.244044
+0.528689
+0.137978
+0.422623
+0.208689
+0.564044
+0.150000
+0.443333
+0.250000
+0.543333
+0.129289
+0.422623
+0.270711
+0.564044
+0.129289
+0.457978
+0.270711
+0.528689
+0.164645
+0.422623
+0.235355
+0.564044
+0.176667
+0.443333
+0.276667
+0.543333
+0.155956
+0.422623
+0.297377
+0.564044
+0.155956
+0.457978
+0.297377
+0.528689
+0.191311
+0.422623
+0.262022
+0.564044
+0.203333
+0.443333
+0.303333
+0.543333
+0.182623
+0.422623
+0.324044
+0.564044
+0.182623
+0.457978
+0.324044
+0.528689
+0.217978
+0.422623
+0.288689
+0.564044
+0.230000
+0.443333
+0.330000
+0.543333
+0.209289
+0.422623
+0.350711
+0.564044
+0.209289
+0.457978
+0.350711
+0.528689
+0.244645
+0.422623
+0.315355
+0.564044
+0.256667
+0.443333
+0.356667
+0.543333
+0.235956
+0.422623
+0.377377
+0.564044
+0.235956
+0.457978
+0.377377
+0.528689
+0.271311
+0.422623
+0.342022
+0.564044
+0.283333
+0.443333
+0.383333
+0.543333
+0.262623
+0.422623
+0.404044
+0.564044
+0.262623
+0.457978
+0.404044
+0.528689
+0.297978
+0.422623
+0.368689
+0.564044
+0.310000
+0.443333
+0.410000
+0.543333
+0.289289
+0.422623
+0.430711
+0.564044
+0.289289
+0.457978
+0.430711
+0.528689
+0.324645
+0.422623
+0.395355
+0.564044
+0.336667
+0.443333
+0.436667
+0.543333
+0.315956
+0.422623
+0.457377
+0.564044
+0.315956
+0.457978
+0.457377
+0.528689
+0.351311
+0.422623
+0.422022
+0.564044
+0.363333
+0.443333
+0.463333
+0.543333
+0.342623
+0.422623
+0.484044
+0.564044
+0.342623
+0.457978
+0.484044
+0.528689
+0.377978
+0.422623
+0.448689
+0.564044
+0.390000
+0.443333
+0.490000
+0.543333
+0.369289
+0.422623
+0.510711
+0.564044
+0.369289
+0.457978
+0.510711
+0.528689
+0.404645
+0.422623
+0.475355
+0.564044
+0.416667
+0.443333
+0.516667
+0.543333
+0.395956
+0.422623
+0.537377
+0.564044
+0.395956
+0.457978
+0.537377
+0.528689
+0.431311
+0.422623
+0.502022
+0.564044
+0.443333
+0.443333
+0.543333
+0.543333
+0.422623
+0.422623
+0.564044
+0.564044
+0.422623
+0.457978
+0.564044
+0.528689
+0.457978
+0.422623
+0.528689
+0.564044
+0.470000
+0.443333
+0.570000
+0.543333
+0.449289
+0.422623
+0.590711
+0.564044
+0.449289
+0.457978
+0.590711
+0.528689
+0.484645
+0.422623
+0.555355
+0.564044
+0.496667
+0.443333
+0.596667
+0.543333
+0.475956
+0.422623
+0.617377
+0.564044
+0.475956
+0.457978
+0.617377
+0.528689
+0.511311
+0.422623
+0.582022
+0.564044
+0.523333
+0.443333
+0.623333
+0.543333
+0.502623
+0.422623
+0.644044
+0.564044
+0.502623
+0.457978
+0.644044
+0.528689
+0.537978
+0.422623
+0.608689
+0.564044
+0.550000
+0.443333
+0.650000
+0.543333
+0.529289
+0.422623
+0.670711
+0.564044
+0.529289
+0.457978
+0.670711
+0.528689
+0.564645
+0.422623
+0.635355
+0.564044
+0.576667
+0.443333
+0.676667
+0.543333
+0.555956
+0.422623
+0.697377
+0.564044
+0.555956
+0.457978
+0.697377
+0.528689
+0.591311
+0.422623
+0.662022
+0.564044
+0.603333
+0.443333
+0.703333
+0.543333
+0.582623
+0.422623
+0.724044
+0.564044
+0.582623
+0.457978
+0.724044
+0.528689
+0.617978
+0.422623
+0.688689
+0.564044
+0.630000
+0.443333
+0.730000
+0.543333
+0.609289
+0.422623
+0.750711
+0.564044
+0.609289
+0.457978
+0.750711
+0.528689
+0.644645
+0.422623
+0.715355
+0.564044
+0.656667
+0.443333
+0.756667
+0.543333
+0.635956
+0.422623
+0.777377
+0.564044
+0.635956
+0.457978
+0.777377
+0.528689
+0.671311
+0.422623
+0.742022
+0.564044
+0.683333
+0.443333
+0.783333
+0.543333
+0.662623
+0.422623
+0.804044
+0.564044
+0.662623
+0.457978
+0.804044
+0.528689
+0.697978
+0.422623
+0.768689
+0.564044
+0.710000
+0.443333
+0.810000
+0.543333
+0.689289
+0.422623
+0.830711
+0.564044
+0.689289
+0.457978
+0.830711
+0.528689
+0.724645
+0.422623
+0.795355
+0.564044
+0.736667
+0.443333
+0.836667
+0.543333
+0.715956
+0.422623
+0.857377
+0.564044
+0.715956
+0.457978
+0.857377
+0.528689
+0.751311
+0.422623
+0.822022
+0.564044
+0.763333
+0.443333
+0.863333
+0.543333
+0.742623
+0.422623
+0.884044
+0.564044
+0.742623
+0.457978
+0.884044
+0.528689
+0.777978
+0.422623
+0.848689
+0.564044
+0.790000
+0.443333
+0.890000
+0.543333
+0.769289
+0.422623
+0.910711
+0.564044
+0.769289
+0.457978
+0.910711
+0.528689
+0.804645
+0.422623
+0.875355
+0.564044
+0.816667
+0.443333
+0.916667
+0.543333
+0.795956
+0.422623
+0.937377
+0.564044
+0.795956
+0.457978
+0.937377
+0.528689
+0.831311
+0.422623
+0.902022
+0.564044
+0.843333
+0.443333
+0.943333
+0.543333
+0.822623
+0.422623
+0.964044
+0.564044
+0.822623
+0.457978
+0.964044
+0.528689
+0.857978
+0.422623
+0.928689
+0.564044
+0.870000
+0.443333
+0.970000
+0.543333
+0.849289
+0.422623
+0.990711
+0.564044
+0.849289
+0.457978
+0.990711
+0.528689
+0.884645
+0.422623
+0.955355
+0.564044
+0.896667
+0.443333
+0.996667
+0.543333
+0.875956
+0.422623
+1.017377
+0.564044
+0.875956
+0.457978
+1.017377
+0.528689
+0.911311
+0.422623
+0.982022
+0.564044
+0.923333
+0.443333
+1.023333
+0.543333
+0.902623
+0.422623
+1.044044
+0.564044
+0.902623
+0.457978
+1.044044
+0.528689
+0.937978
+0.422623
+1.008689
+0.564044
+0.950000
+0.443333
+1.050000
+0.543333
+0.929289
+0.422623
+1.070711
+0.564044
+0.929289
+0.457978
+1.070711
+0.528689
+0.964645
+0.422623
+1.035355
+0.564044
+-0.036667
+0.470000
+0.063333
+0.570000
+-0.057377
+0.449289
+0.084044
+0.590711
+-0.057377
+0.484645
+0.084044
+0.555355
+-0.022022
+0.449289
+0.048689
+0.590711
+-0.010000
+0.470000
+0.090000
+0.570000
+-0.030711
+0.449289
+0.110711
+0.590711
+-0.030711
+0.484645
+0.110711
+0.555355
+0.004645
+0.449289
+0.075355
+0.590711
+0.016667
+0.470000
+0.116667
+0.570000
+-0.004044
+0.449289
+0.137377
+0.590711
+-0.004044
+0.484645
+0.137377
+0.555355
+0.031311
+0.449289
+0.102022
+0.590711
+0.043333
+0.470000
+0.143333
+0.570000
+0.022623
+0.449289
+0.164044
+0.590711
+0.022623
+0.484645
+0.164044
+0.555355
+0.057978
+0.449289
+0.128689
+0.590711
+0.070000
+0.470000
+0.170000
+0.570000
+0.049289
+0.449289
+0.190711
+0.590711
+0.049289
+0.484645
+0.190711
+0.555355
+0.084645
+0.449289
+0.155355
+0.590711
+0.096667
+0.470000
+0.196667
+0.570000
+0.075956
+0.449289
+0.217377
+0.590711
+0.075956
+0.484645
+0.217377
+0.555355
+0.111311
+0.449289
+0.182022
+0.590711
+0.123333
+0.470000
+0.223333
+0.570000
+0.102623
+0.449289
+0.244044
+0.590711
+0.102623
+0.484645
+0.244044
+0.555355
+0.137978
+0.449289
+0.208689
+0.590711
+0.150000
+0.470000
+0.250000
+0.570000
+0.129289
+0.449289
+0.270711
+0.590711
+0.129289
+0.484645
+0.270711
+0.555355
+0.164645
+0.449289
+0.235355
+0.590711
+0.176667
+0.470000
+0.276667
+0.570000
+0.155956
+0.449289
+0.297377
+0.590711
+0.155956
+0.484645
+0.297377
+0.555355
+0.191311
+0.449289
+0.262022
+0.590711
+0.203333
+0.470000
+0.303333
+0.570000
+0.182623
+0.449289
+0.324044
+0.590711
+0.182623
+0.484645
+0.324044
+0.555355
+0.217978
+0.449289
+0.288689
+0.590711
+0.230000
+0.470000
+0.330000
+0.570000
+0.209289
+0.449289
+0.350711
+0.590711
+0.209289
+0.484645
+0.350711
+0.555355
+0.244645
+0.449289
+0.315355
+0.590711
+0.256667
+0.470000
+0.356667
+0.570000
+0.235956
+0.449289
+0.377377
+0.590711
+0.235956
+0.484645
+0.377377
+0.555355
+0.271311
+0.449289
+0.342022
+0.590711
+0.283333
+0.470000
+0.383333
+0.570000
+0.262623
+0.449289
+0.404044
+0.590711
+0.262623
+0.484645
+0.404044
+0.555355
+0.297978
+0.449289
+0.368689
+0.590711
+0.310000
+0.470000
+0.410000
+0.570000
+0.289289
+0.449289
+0.430711
+0.590711
+0.289289
+0.484645
+0.430711
+0.555355
+0.324645
+0.449289
+0.395355
+0.590711
+0.336667
+0.470000
+0.436667
+0.570000
+0.315956
+0.449289
+0.457377
+0.590711
+0.315956
+0.484645
+0.457377
+0.555355
+0.351311
+0.449289
+0.422022
+0.590711
+0.363333
+0.470000
+0.463333
+0.570000
+0.342623
+0.449289
+0.484044
+0.590711
+0.342623
+0.484645
+0.484044
+0.555355
+0.377978
+0.449289
+0.448689
+0.590711
+0.390000
+0.470000
+0.490000
+0.570000
+0.369289
+0.449289
+0.510711
+0.590711
+0.369289
+0.484645
+0.510711
+0.555355
+0.404645
+0.449289
+0.475355
+0.590711
+0.416667
+0.470000
+0.516667
+0.570000
+0.395956
+0.449289
+0.537377
+0.590711
+0.395956
+0.484645
+0.537377
+0.555355
+0.431311
+0.449289
+0.502022
+0.590711
+0.443333
+0.470000
+0.543333
+0.570000
+0.422623
+0.449289
+0.564044
+0.590711
+0.422623
+0.484645
+0.564044
+0.555355
+0.457978
+0.449289
+0.528689
+0.590711
+0.470000
+0.470000
+0.570000
+0.570000
+0.449289
+0.449289
+0.590711
+0.590711
+0.449289
+0.484645
+0.590711
+0.555355
+0.484645
+0.449289
+0.555355
+0.590711
+0.496667
+0.470000
+0.596667
+0.570000
+0.475956
+0.449289
+0.617377
+0.590711
+0.475956
+0.484645
+0.617377
+0.555355
+0.511311
+0.449289
+0.582022
+0.590711
+0.523333
+0.470000
+0.623333
+0.570000
+0.502623
+0.449289
+0.644044
+0.590711
+0.502623
+0.484645
+0.644044
+0.555355
+0.537978
+0.449289
+0.608689
+0.590711
+0.550000
+0.470000
+0.650000
+0.570000
+0.529289
+0.449289
+0.670711
+0.590711
+0.529289
+0.484645
+0.670711
+0.555355
+0.564645
+0.449289
+0.635355
+0.590711
+0.576667
+0.470000
+0.676667
+0.570000
+0.555956
+0.449289
+0.697377
+0.590711
+0.555956
+0.484645
+0.697377
+0.555355
+0.591311
+0.449289
+0.662022
+0.590711
+0.603333
+0.470000
+0.703333
+0.570000
+0.582623
+0.449289
+0.724044
+0.590711
+0.582623
+0.484645
+0.724044
+0.555355
+0.617978
+0.449289
+0.688689
+0.590711
+0.630000
+0.470000
+0.730000
+0.570000
+0.609289
+0.449289
+0.750711
+0.590711
+0.609289
+0.484645
+0.750711
+0.555355
+0.644645
+0.449289
+0.715355
+0.590711
+0.656667
+0.470000
+0.756667
+0.570000
+0.635956
+0.449289
+0.777377
+0.590711
+0.635956
+0.484645
+0.777377
+0.555355
+0.671311
+0.449289
+0.742022
+0.590711
+0.683333
+0.470000
+0.783333
+0.570000
+0.662623
+0.449289
+0.804044
+0.590711
+0.662623
+0.484645
+0.804044
+0.555355
+0.697978
+0.449289
+0.768689
+0.590711
+0.710000
+0.470000
+0.810000
+0.570000
+0.689289
+0.449289
+0.830711
+0.590711
+0.689289
+0.484645
+0.830711
+0.555355
+0.724645
+0.449289
+0.795355
+0.590711
+0.736667
+0.470000
+0.836667
+0.570000
+0.715956
+0.449289
+0.857377
+0.590711
+0.715956
+0.484645
+0.857377
+0.555355
+0.751311
+0.449289
+0.822022
+0.590711
+0.763333
+0.470000
+0.863333
+0.570000
+0.742623
+0.449289
+0.884044
+0.590711
+0.742623
+0.484645
+0.884044
+0.555355
+0.777978
+0.449289
+0.848689
+0.590711
+0.790000
+0.470000
+0.890000
+0.570000
+0.769289
+0.449289
+0.910711
+0.590711
+0.769289
+0.484645
+0.910711
+0.555355
+0.804645
+0.449289
+0.875355
+0.590711
+0.816667
+0.470000
+0.916667
+0.570000
+0.795956
+0.449289
+0.937377
+0.590711
+0.795956
+0.484645
+0.937377
+0.555355
+0.831311
+0.449289
+0.902022
+0.590711
+0.843333
+0.470000
+0.943333
+0.570000
+0.822623
+0.449289
+0.964044
+0.590711
+0.822623
+0.484645
+0.964044
+0.555355
+0.857978
+0.449289
+0.928689
+0.590711
+0.870000
+0.470000
+0.970000
+0.570000
+0.849289
+0.449289
+0.990711
+0.590711
+0.849289
+0.484645
+0.990711
+0.555355
+0.884645
+0.449289
+0.955355
+0.590711
+0.896667
+0.470000
+0.996667
+0.570000
+0.875956
+0.449289
+1.017377
+0.590711
+0.875956
+0.484645
+1.017377
+0.555355
+0.911311
+0.449289
+0.982022
+0.590711
+0.923333
+0.470000
+1.023333
+0.570000
+0.902623
+0.449289
+1.044044
+0.590711
+0.902623
+0.484645
+1.044044
+0.555355
+0.937978
+0.449289
+1.008689
+0.590711
+0.950000
+0.470000
+1.050000
+0.570000
+0.929289
+0.449289
+1.070711
+0.590711
+0.929289
+0.484645
+1.070711
+0.555355
+0.964645
+0.449289
+1.035355
+0.590711
+-0.036667
+0.496667
+0.063333
+0.596667
+-0.057377
+0.475956
+0.084044
+0.617377
+-0.057377
+0.511311
+0.084044
+0.582022
+-0.022022
+0.475956
+0.048689
+0.617377
+-0.010000
+0.496667
+0.090000
+0.596667
+-0.030711
+0.475956
+0.110711
+0.617377
+-0.030711
+0.511311
+0.110711
+0.582022
+0.004645
+0.475956
+0.075355
+0.617377
+0.016667
+0.496667
+0.116667
+0.596667
+-0.004044
+0.475956
+0.137377
+0.617377
+-0.004044
+0.511311
+0.137377
+0.582022
+0.031311
+0.475956
+0.102022
+0.617377
+0.043333
+0.496667
+0.143333
+0.596667
+0.022623
+0.475956
+0.164044
+0.617377
+0.022623
+0.511311
+0.164044
+0.582022
+0.057978
+0.475956
+0.128689
+0.617377
+0.070000
+0.496667
+0.170000
+0.596667
+0.049289
+0.475956
+0.190711
+0.617377
+0.049289
+0.511311
+0.190711
+0.582022
+0.084645
+0.475956
+0.155355
+0.617377
+0.096667
+0.496667
+0.196667
+0.596667
+0.075956
+0.475956
+0.217377
+0.617377
+0.075956
+0.511311
+0.217377
+0.582022
+0.111311
+0.475956
+0.182022
+0.617377
+0.123333
+0.496667
+0.223333
+0.596667
+0.102623
+0.475956
+0.244044
+0.617377
+0.102623
+0.511311
+0.244044
+0.582022
+0.137978
+0.475956
+0.208689
+0.617377
+0.150000
+0.496667
+0.250000
+0.596667
+0.129289
+0.475956
+0.270711
+0.617377
+0.129289
+0.511311
+0.270711
+0.582022
+0.164645
+0.475956
+0.235355
+0.617377
+0.176667
+0.496667
+0.276667
+0.596667
+0.155956
+0.475956
+0.297377
+0.617377
+0.155956
+0.511311
+0.297377
+0.582022
+0.191311
+0.475956
+0.262022
+0.617377
+0.203333
+0.496667
+0.303333
+0.596667
+0.182623
+0.475956
+0.324044
+0.617377
+0.182623
+0.511311
+0.324044
+0.582022
+0.217978
+0.475956
+0.288689
+0.617377
+0.230000
+0.496667
+0.330000
+0.596667
+0.209289
+0.475956
+0.350711
+0.617377
+0.209289
+0.511311
+0.350711
+0.582022
+0.244645
+0.475956
+0.315355
+0.617377
+0.256667
+0.496667
+0.356667
+0.596667
+0.235956
+0.475956
+0.377377
+0.617377
+0.235956
+0.511311
+0.377377
+0.582022
+0.271311
+0.475956
+0.342022
+0.617377
+0.283333
+0.496667
+0.383333
+0.596667
+0.262623
+0.475956
+0.404044
+0.617377
+0.262623
+0.511311
+0.404044
+0.582022
+0.297978
+0.475956
+0.368689
+0.617377
+0.310000
+0.496667
+0.410000
+0.596667
+0.289289
+0.475956
+0.430711
+0.617377
+0.289289
+0.511311
+0.430711
+0.582022
+0.324645
+0.475956
+0.395355
+0.617377
+0.336667
+0.496667
+0.436667
+0.596667
+0.315956
+0.475956
+0.457377
+0.617377
+0.315956
+0.511311
+0.457377
+0.582022
+0.351311
+0.475956
+0.422022
+0.617377
+0.363333
+0.496667
+0.463333
+0.596667
+0.342623
+0.475956
+0.484044
+0.617377
+0.342623
+0.511311
+0.484044
+0.582022
+0.377978
+0.475956
+0.448689
+0.617377
+0.390000
+0.496667
+0.490000
+0.596667
+0.369289
+0.475956
+0.510711
+0.617377
+0.369289
+0.511311
+0.510711
+0.582022
+0.404645
+0.475956
+0.475355
+0.617377
+0.416667
+0.496667
+0.516667
+0.596667
+0.395956
+0.475956
+0.537377
+0.617377
+0.395956
+0.511311
+0.537377
+0.582022
+0.431311
+0.475956
+0.502022
+0.617377
+0.443333
+0.496667
+0.543333
+0.596667
+0.422623
+0.475956
+0.564044
+0.617377
+0.422623
+0.511311
+0.564044
+0.582022
+0.457978
+0.475956
+0.528689
+0.617377
+0.470000
+0.496667
+0.570000
+0.596667
+0.449289
+0.475956
+0.590711
+0.617377
+0.449289
+0.511311
+0.590711
+0.582022
+0.484645
+0.475956
+0.555355
+0.617377
+0.496667
+0.496667
+0.596667
+0.596667
+0.475956
+0.475956
+0.617377
+0.617377
+0.475956
+0.511311
+0.617377
+0.582022
+0.511311
+0.475956
+0.582022
+0.617377
+0.523333
+0.496667
+0.623333
+0.596667
+0.502623
+0.475956
+0.644044
+0.617377
+0.502623
+0.511311
+0.644044
+0.582022
+0.537978
+0.475956
+0.608689
+0.617377
+0.550000
+0.496667
+0.650000
+0.596667
+0.529289
+0.475956
+0.670711
+0.617377
+0.529289
+0.511311
+0.670711
+0.582022
+0.564645
+0.475956
+0.635355
+0.617377
+0.576667
+0.496667
+0.676667
+0.596667
+0.555956
+0.475956
+0.697377
+0.617377
+0.555956
+0.511311
+0.697377
+0.582022
+0.591311
+0.475956
+0.662022
+0.617377
+0.603333
+0.496667
+0.703333
+0.596667
+0.582623
+0.475956
+0.724044
+0.617377
+0.582623
+0.511311
+0.724044
+0.582022
+0.617978
+0.475956
+0.688689
+0.617377
+0.630000
+0.496667
+0.730000
+0.596667
+0.609289
+0.475956
+0.750711
+0.617377
+0.609289
+0.511311
+0.750711
+0.582022
+0.644645
+0.475956
+0.715355
+0.617377
+0.656667
+0.496667
+0.756667
+0.596667
+0.635956
+0.475956
+0.777377
+0.617377
+0.635956
+0.511311
+0.777377
+0.582022
+0.671311
+0.475956
+0.742022
+0.617377
+0.683333
+0.496667
+0.783333
+0.596667
+0.662623
+0.475956
+0.804044
+0.617377
+0.662623
+0.511311
+0.804044
+0.582022
+0.697978
+0.475956
+0.768689
+0.617377
+0.710000
+0.496667
+0.810000
+0.596667
+0.689289
+0.475956
+0.830711
+0.617377
+0.689289
+0.511311
+0.830711
+0.582022
+0.724645
+0.475956
+0.795355
+0.617377
+0.736667
+0.496667
+0.836667
+0.596667
+0.715956
+0.475956
+0.857377
+0.617377
+0.715956
+0.511311
+0.857377
+0.582022
+0.751311
+0.475956
+0.822022
+0.617377
+0.763333
+0.496667
+0.863333
+0.596667
+0.742623
+0.475956
+0.884044
+0.617377
+0.742623
+0.511311
+0.884044
+0.582022
+0.777978
+0.475956
+0.848689
+0.617377
+0.790000
+0.496667
+0.890000
+0.596667
+0.769289
+0.475956
+0.910711
+0.617377
+0.769289
+0.511311
+0.910711
+0.582022
+0.804645
+0.475956
+0.875355
+0.617377
+0.816667
+0.496667
+0.916667
+0.596667
+0.795956
+0.475956
+0.937377
+0.617377
+0.795956
+0.511311
+0.937377
+0.582022
+0.831311
+0.475956
+0.902022
+0.617377
+0.843333
+0.496667
+0.943333
+0.596667
+0.822623
+0.475956
+0.964044
+0.617377
+0.822623
+0.511311
+0.964044
+0.582022
+0.857978
+0.475956
+0.928689
+0.617377
+0.870000
+0.496667
+0.970000
+0.596667
+0.849289
+0.475956
+0.990711
+0.617377
+0.849289
+0.511311
+0.990711
+0.582022
+0.884645
+0.475956
+0.955355
+0.617377
+0.896667
+0.496667
+0.996667
+0.596667
+0.875956
+0.475956
+1.017377
+0.617377
+0.875956
+0.511311
+1.017377
+0.582022
+0.911311
+0.475956
+0.982022
+0.617377
+0.923333
+0.496667
+1.023333
+0.596667
+0.902623
+0.475956
+1.044044
+0.617377
+0.902623
+0.511311
+1.044044
+0.582022
+0.937978
+0.475956
+1.008689
+0.617377
+0.950000
+0.496667
+1.050000
+0.596667
+0.929289
+0.475956
+1.070711
+0.617377
+0.929289
+0.511311
+1.070711
+0.582022
+0.964645
+0.475956
+1.035355
+0.617377
+-0.036667
+0.523333
+0.063333
+0.623333
+-0.057377
+0.502623
+0.084044
+0.644044
+-0.057377
+0.537978
+0.084044
+0.608689
+-0.022022
+0.502623
+0.048689
+0.644044
+-0.010000
+0.523333
+0.090000
+0.623333
+-0.030711
+0.502623
+0.110711
+0.644044
+-0.030711
+0.537978
+0.110711
+0.608689
+0.004645
+0.502623
+0.075355
+0.644044
+0.016667
+0.523333
+0.116667
+0.623333
+-0.004044
+0.502623
+0.137377
+0.644044
+-0.004044
+0.537978
+0.137377
+0.608689
+0.031311
+0.502623
+0.102022
+0.644044
+0.043333
+0.523333
+0.143333
+0.623333
+0.022623
+0.502623
+0.164044
+0.644044
+0.022623
+0.537978
+0.164044
+0.608689
+0.057978
+0.502623
+0.128689
+0.644044
+0.070000
+0.523333
+0.170000
+0.623333
+0.049289
+0.502623
+0.190711
+0.644044
+0.049289
+0.537978
+0.190711
+0.608689
+0.084645
+0.502623
+0.155355
+0.644044
+0.096667
+0.523333
+0.196667
+0.623333
+0.075956
+0.502623
+0.217377
+0.644044
+0.075956
+0.537978
+0.217377
+0.608689
+0.111311
+0.502623
+0.182022
+0.644044
+0.123333
+0.523333
+0.223333
+0.623333
+0.102623
+0.502623
+0.244044
+0.644044
+0.102623
+0.537978
+0.244044
+0.608689
+0.137978
+0.502623
+0.208689
+0.644044
+0.150000
+0.523333
+0.250000
+0.623333
+0.129289
+0.502623
+0.270711
+0.644044
+0.129289
+0.537978
+0.270711
+0.608689
+0.164645
+0.502623
+0.235355
+0.644044
+0.176667
+0.523333
+0.276667
+0.623333
+0.155956
+0.502623
+0.297377
+0.644044
+0.155956
+0.537978
+0.297377
+0.608689
+0.191311
+0.502623
+0.262022
+0.644044
+0.203333
+0.523333
+0.303333
+0.623333
+0.182623
+0.502623
+0.324044
+0.644044
+0.182623
+0.537978
+0.324044
+0.608689
+0.217978
+0.502623
+0.288689
+0.644044
+0.230000
+0.523333
+0.330000
+0.623333
+0.209289
+0.502623
+0.350711
+0.644044
+0.209289
+0.537978
+0.350711
+0.608689
+0.244645
+0.502623
+0.315355
+0.644044
+0.256667
+0.523333
+0.356667
+0.623333
+0.235956
+0.502623
+0.377377
+0.644044
+0.235956
+0.537978
+0.377377
+0.608689
+0.271311
+0.502623
+0.342022
+0.644044
+0.283333
+0.523333
+0.383333
+0.623333
+0.262623
+0.502623
+0.404044
+0.644044
+0.262623
+0.537978
+0.404044
+0.608689
+0.297978
+0.502623
+0.368689
+0.644044
+0.310000
+0.523333
+0.410000
+0.623333
+0.289289
+0.502623
+0.430711
+0.644044
+0.289289
+0.537978
+0.430711
+0.608689
+0.324645
+0.502623
+0.395355
+0.644044
+0.336667
+0.523333
+0.436667
+0.623333
+0.315956
+0.502623
+0.457377
+0.644044
+0.315956
+0.537978
+0.457377
+0.608689
+0.351311
+0.502623
+0.422022
+0.644044
+0.363333
+0.523333
+0.463333
+0.623333
+0.342623
+0.502623
+0.484044
+0.644044
+0.342623
+0.537978
+0.484044
+0.608689
+0.377978
+0.502623
+0.448689
+0.644044
+0.390000
+0.523333
+0.490000
+0.623333
+0.369289
+0.502623
+0.510711
+0.644044
+0.369289
+0.537978
+0.510711
+0.608689
+0.404645
+0.502623
+0.475355
+0.644044
+0.416667
+0.523333
+0.516667
+0.623333
+0.395956
+0.502623
+0.537377
+0.644044
+0.395956
+0.537978
+0.537377
+0.608689
+0.431311
+0.502623
+0.502022
+0.644044
+0.443333
+0.523333
+0.543333
+0.623333
+0.422623
+0.502623
+0.564044
+0.644044
+0.422623
+0.537978
+0.564044
+0.608689
+0.457978
+0.502623
+0.528689
+0.644044
+0.470000
+0.523333
+0.570000
+0.623333
+0.449289
+0.502623
+0.590711
+0.644044
+0.449289
+0.537978
+0.590711
+0.608689
+0.484645
+0.502623
+0.555355
+0.644044
+0.496667
+0.523333
+0.596667
+0.623333
+0.475956
+0.502623
+0.617377
+0.644044
+0.475956
+0.537978
+0.617377
+0.608689
+0.511311
+0.502623
+0.582022
+0.644044
+0.523333
+0.523333
+0.623333
+0.623333
+0.502623
+0.502623
+0.644044
+0.644044
+0.502623
+0.537978
+0.644044
+0.608689
+0.537978
+0.502623
+0.608689
+0.644044
+0.550000
+0.523333
+0.650000
+0.623333
+0.529289
+0.502623
+0.670711
+0.644044
+0.529289
+0.537978
+0.670711
+0.608689
+0.564645
+0.502623
+0.635355
+0.644044
+0.576667
+0.523333
+0.676667
+0.623333
+0.555956
+0.502623
+0.697377
+0.644044
+0.555956
+0.537978
+0.697377
+0.608689
+0.591311
+0.502623
+0.662022
+0.644044
+0.603333
+0.523333
+0.703333
+0.623333
+0.582623
+0.502623
+0.724044
+0.644044
+0.582623
+0.537978
+0.724044
+0.608689
+0.617978
+0.502623
+0.688689
+0.644044
+0.630000
+0.523333
+0.730000
+0.623333
+0.609289
+0.502623
+0.750711
+0.644044
+0.609289
+0.537978
+0.750711
+0.608689
+0.644645
+0.502623
+0.715355
+0.644044
+0.656667
+0.523333
+0.756667
+0.623333
+0.635956
+0.502623
+0.777377
+0.644044
+0.635956
+0.537978
+0.777377
+0.608689
+0.671311
+0.502623
+0.742022
+0.644044
+0.683333
+0.523333
+0.783333
+0.623333
+0.662623
+0.502623
+0.804044
+0.644044
+0.662623
+0.537978
+0.804044
+0.608689
+0.697978
+0.502623
+0.768689
+0.644044
+0.710000
+0.523333
+0.810000
+0.623333
+0.689289
+0.502623
+0.830711
+0.644044
+0.689289
+0.537978
+0.830711
+0.608689
+0.724645
+0.502623
+0.795355
+0.644044
+0.736667
+0.523333
+0.836667
+0.623333
+0.715956
+0.502623
+0.857377
+0.644044
+0.715956
+0.537978
+0.857377
+0.608689
+0.751311
+0.502623
+0.822022
+0.644044
+0.763333
+0.523333
+0.863333
+0.623333
+0.742623
+0.502623
+0.884044
+0.644044
+0.742623
+0.537978
+0.884044
+0.608689
+0.777978
+0.502623
+0.848689
+0.644044
+0.790000
+0.523333
+0.890000
+0.623333
+0.769289
+0.502623
+0.910711
+0.644044
+0.769289
+0.537978
+0.910711
+0.608689
+0.804645
+0.502623
+0.875355
+0.644044
+0.816667
+0.523333
+0.916667
+0.623333
+0.795956
+0.502623
+0.937377
+0.644044
+0.795956
+0.537978
+0.937377
+0.608689
+0.831311
+0.502623
+0.902022
+0.644044
+0.843333
+0.523333
+0.943333
+0.623333
+0.822623
+0.502623
+0.964044
+0.644044
+0.822623
+0.537978
+0.964044
+0.608689
+0.857978
+0.502623
+0.928689
+0.644044
+0.870000
+0.523333
+0.970000
+0.623333
+0.849289
+0.502623
+0.990711
+0.644044
+0.849289
+0.537978
+0.990711
+0.608689
+0.884645
+0.502623
+0.955355
+0.644044
+0.896667
+0.523333
+0.996667
+0.623333
+0.875956
+0.502623
+1.017377
+0.644044
+0.875956
+0.537978
+1.017377
+0.608689
+0.911311
+0.502623
+0.982022
+0.644044
+0.923333
+0.523333
+1.023333
+0.623333
+0.902623
+0.502623
+1.044044
+0.644044
+0.902623
+0.537978
+1.044044
+0.608689
+0.937978
+0.502623
+1.008689
+0.644044
+0.950000
+0.523333
+1.050000
+0.623333
+0.929289
+0.502623
+1.070711
+0.644044
+0.929289
+0.537978
+1.070711
+0.608689
+0.964645
+0.502623
+1.035355
+0.644044
+-0.036667
+0.550000
+0.063333
+0.650000
+-0.057377
+0.529289
+0.084044
+0.670711
+-0.057377
+0.564645
+0.084044
+0.635355
+-0.022022
+0.529289
+0.048689
+0.670711
+-0.010000
+0.550000
+0.090000
+0.650000
+-0.030711
+0.529289
+0.110711
+0.670711
+-0.030711
+0.564645
+0.110711
+0.635355
+0.004645
+0.529289
+0.075355
+0.670711
+0.016667
+0.550000
+0.116667
+0.650000
+-0.004044
+0.529289
+0.137377
+0.670711
+-0.004044
+0.564645
+0.137377
+0.635355
+0.031311
+0.529289
+0.102022
+0.670711
+0.043333
+0.550000
+0.143333
+0.650000
+0.022623
+0.529289
+0.164044
+0.670711
+0.022623
+0.564645
+0.164044
+0.635355
+0.057978
+0.529289
+0.128689
+0.670711
+0.070000
+0.550000
+0.170000
+0.650000
+0.049289
+0.529289
+0.190711
+0.670711
+0.049289
+0.564645
+0.190711
+0.635355
+0.084645
+0.529289
+0.155355
+0.670711
+0.096667
+0.550000
+0.196667
+0.650000
+0.075956
+0.529289
+0.217377
+0.670711
+0.075956
+0.564645
+0.217377
+0.635355
+0.111311
+0.529289
+0.182022
+0.670711
+0.123333
+0.550000
+0.223333
+0.650000
+0.102623
+0.529289
+0.244044
+0.670711
+0.102623
+0.564645
+0.244044
+0.635355
+0.137978
+0.529289
+0.208689
+0.670711
+0.150000
+0.550000
+0.250000
+0.650000
+0.129289
+0.529289
+0.270711
+0.670711
+0.129289
+0.564645
+0.270711
+0.635355
+0.164645
+0.529289
+0.235355
+0.670711
+0.176667
+0.550000
+0.276667
+0.650000
+0.155956
+0.529289
+0.297377
+0.670711
+0.155956
+0.564645
+0.297377
+0.635355
+0.191311
+0.529289
+0.262022
+0.670711
+0.203333
+0.550000
+0.303333
+0.650000
+0.182623
+0.529289
+0.324044
+0.670711
+0.182623
+0.564645
+0.324044
+0.635355
+0.217978
+0.529289
+0.288689
+0.670711
+0.230000
+0.550000
+0.330000
+0.650000
+0.209289
+0.529289
+0.350711
+0.670711
+0.209289
+0.564645
+0.350711
+0.635355
+0.244645
+0.529289
+0.315355
+0.670711
+0.256667
+0.550000
+0.356667
+0.650000
+0.235956
+0.529289
+0.377377
+0.670711
+0.235956
+0.564645
+0.377377
+0.635355
+0.271311
+0.529289
+0.342022
+0.670711
+0.283333
+0.550000
+0.383333
+0.650000
+0.262623
+0.529289
+0.404044
+0.670711
+0.262623
+0.564645
+0.404044
+0.635355
+0.297978
+0.529289
+0.368689
+0.670711
+0.310000
+0.550000
+0.410000
+0.650000
+0.289289
+0.529289
+0.430711
+0.670711
+0.289289
+0.564645
+0.430711
+0.635355
+0.324645
+0.529289
+0.395355
+0.670711
+0.336667
+0.550000
+0.436667
+0.650000
+0.315956
+0.529289
+0.457377
+0.670711
+0.315956
+0.564645
+0.457377
+0.635355
+0.351311
+0.529289
+0.422022
+0.670711
+0.363333
+0.550000
+0.463333
+0.650000
+0.342623
+0.529289
+0.484044
+0.670711
+0.342623
+0.564645
+0.484044
+0.635355
+0.377978
+0.529289
+0.448689
+0.670711
+0.390000
+0.550000
+0.490000
+0.650000
+0.369289
+0.529289
+0.510711
+0.670711
+0.369289
+0.564645
+0.510711
+0.635355
+0.404645
+0.529289
+0.475355
+0.670711
+0.416667
+0.550000
+0.516667
+0.650000
+0.395956
+0.529289
+0.537377
+0.670711
+0.395956
+0.564645
+0.537377
+0.635355
+0.431311
+0.529289
+0.502022
+0.670711
+0.443333
+0.550000
+0.543333
+0.650000
+0.422623
+0.529289
+0.564044
+0.670711
+0.422623
+0.564645
+0.564044
+0.635355
+0.457978
+0.529289
+0.528689
+0.670711
+0.470000
+0.550000
+0.570000
+0.650000
+0.449289
+0.529289
+0.590711
+0.670711
+0.449289
+0.564645
+0.590711
+0.635355
+0.484645
+0.529289
+0.555355
+0.670711
+0.496667
+0.550000
+0.596667
+0.650000
+0.475956
+0.529289
+0.617377
+0.670711
+0.475956
+0.564645
+0.617377
+0.635355
+0.511311
+0.529289
+0.582022
+0.670711
+0.523333
+0.550000
+0.623333
+0.650000
+0.502623
+0.529289
+0.644044
+0.670711
+0.502623
+0.564645
+0.644044
+0.635355
+0.537978
+0.529289
+0.608689
+0.670711
+0.550000
+0.550000
+0.650000
+0.650000
+0.529289
+0.529289
+0.670711
+0.670711
+0.529289
+0.564645
+0.670711
+0.635355
+0.564645
+0.529289
+0.635355
+0.670711
+0.576667
+0.550000
+0.676667
+0.650000
+0.555956
+0.529289
+0.697377
+0.670711
+0.555956
+0.564645
+0.697377
+0.635355
+0.591311
+0.529289
+0.662022
+0.670711
+0.603333
+0.550000
+0.703333
+0.650000
+0.582623
+0.529289
+0.724044
+0.670711
+0.582623
+0.564645
+0.724044
+0.635355
+0.617978
+0.529289
+0.688689
+0.670711
+0.630000
+0.550000
+0.730000
+0.650000
+0.609289
+0.529289
+0.750711
+0.670711
+0.609289
+0.564645
+0.750711
+0.635355
+0.644645
+0.529289
+0.715355
+0.670711
+0.656667
+0.550000
+0.756667
+0.650000
+0.635956
+0.529289
+0.777377
+0.670711
+0.635956
+0.564645
+0.777377
+0.635355
+0.671311
+0.529289
+0.742022
+0.670711
+0.683333
+0.550000
+0.783333
+0.650000
+0.662623
+0.529289
+0.804044
+0.670711
+0.662623
+0.564645
+0.804044
+0.635355
+0.697978
+0.529289
+0.768689
+0.670711
+0.710000
+0.550000
+0.810000
+0.650000
+0.689289
+0.529289
+0.830711
+0.670711
+0.689289
+0.564645
+0.830711
+0.635355
+0.724645
+0.529289
+0.795355
+0.670711
+0.736667
+0.550000
+0.836667
+0.650000
+0.715956
+0.529289
+0.857377
+0.670711
+0.715956
+0.564645
+0.857377
+0.635355
+0.751311
+0.529289
+0.822022
+0.670711
+0.763333
+0.550000
+0.863333
+0.650000
+0.742623
+0.529289
+0.884044
+0.670711
+0.742623
+0.564645
+0.884044
+0.635355
+0.777978
+0.529289
+0.848689
+0.670711
+0.790000
+0.550000
+0.890000
+0.650000
+0.769289
+0.529289
+0.910711
+0.670711
+0.769289
+0.564645
+0.910711
+0.635355
+0.804645
+0.529289
+0.875355
+0.670711
+0.816667
+0.550000
+0.916667
+0.650000
+0.795956
+0.529289
+0.937377
+0.670711
+0.795956
+0.564645
+0.937377
+0.635355
+0.831311
+0.529289
+0.902022
+0.670711
+0.843333
+0.550000
+0.943333
+0.650000
+0.822623
+0.529289
+0.964044
+0.670711
+0.822623
+0.564645
+0.964044
+0.635355
+0.857978
+0.529289
+0.928689
+0.670711
+0.870000
+0.550000
+0.970000
+0.650000
+0.849289
+0.529289
+0.990711
+0.670711
+0.849289
+0.564645
+0.990711
+0.635355
+0.884645
+0.529289
+0.955355
+0.670711
+0.896667
+0.550000
+0.996667
+0.650000
+0.875956
+0.529289
+1.017377
+0.670711
+0.875956
+0.564645
+1.017377
+0.635355
+0.911311
+0.529289
+0.982022
+0.670711
+0.923333
+0.550000
+1.023333
+0.650000
+0.902623
+0.529289
+1.044044
+0.670711
+0.902623
+0.564645
+1.044044
+0.635355
+0.937978
+0.529289
+1.008689
+0.670711
+0.950000
+0.550000
+1.050000
+0.650000
+0.929289
+0.529289
+1.070711
+0.670711
+0.929289
+0.564645
+1.070711
+0.635355
+0.964645
+0.529289
+1.035355
+0.670711
+-0.036667
+0.576667
+0.063333
+0.676667
+-0.057377
+0.555956
+0.084044
+0.697377
+-0.057377
+0.591311
+0.084044
+0.662022
+-0.022022
+0.555956
+0.048689
+0.697377
+-0.010000
+0.576667
+0.090000
+0.676667
+-0.030711
+0.555956
+0.110711
+0.697377
+-0.030711
+0.591311
+0.110711
+0.662022
+0.004645
+0.555956
+0.075355
+0.697377
+0.016667
+0.576667
+0.116667
+0.676667
+-0.004044
+0.555956
+0.137377
+0.697377
+-0.004044
+0.591311
+0.137377
+0.662022
+0.031311
+0.555956
+0.102022
+0.697377
+0.043333
+0.576667
+0.143333
+0.676667
+0.022623
+0.555956
+0.164044
+0.697377
+0.022623
+0.591311
+0.164044
+0.662022
+0.057978
+0.555956
+0.128689
+0.697377
+0.070000
+0.576667
+0.170000
+0.676667
+0.049289
+0.555956
+0.190711
+0.697377
+0.049289
+0.591311
+0.190711
+0.662022
+0.084645
+0.555956
+0.155355
+0.697377
+0.096667
+0.576667
+0.196667
+0.676667
+0.075956
+0.555956
+0.217377
+0.697377
+0.075956
+0.591311
+0.217377
+0.662022
+0.111311
+0.555956
+0.182022
+0.697377
+0.123333
+0.576667
+0.223333
+0.676667
+0.102623
+0.555956
+0.244044
+0.697377
+0.102623
+0.591311
+0.244044
+0.662022
+0.137978
+0.555956
+0.208689
+0.697377
+0.150000
+0.576667
+0.250000
+0.676667
+0.129289
+0.555956
+0.270711
+0.697377
+0.129289
+0.591311
+0.270711
+0.662022
+0.164645
+0.555956
+0.235355
+0.697377
+0.176667
+0.576667
+0.276667
+0.676667
+0.155956
+0.555956
+0.297377
+0.697377
+0.155956
+0.591311
+0.297377
+0.662022
+0.191311
+0.555956
+0.262022
+0.697377
+0.203333
+0.576667
+0.303333
+0.676667
+0.182623
+0.555956
+0.324044
+0.697377
+0.182623
+0.591311
+0.324044
+0.662022
+0.217978
+0.555956
+0.288689
+0.697377
+0.230000
+0.576667
+0.330000
+0.676667
+0.209289
+0.555956
+0.350711
+0.697377
+0.209289
+0.591311
+0.350711
+0.662022
+0.244645
+0.555956
+0.315355
+0.697377
+0.256667
+0.576667
+0.356667
+0.676667
+0.235956
+0.555956
+0.377377
+0.697377
+0.235956
+0.591311
+0.377377
+0.662022
+0.271311
+0.555956
+0.342022
+0.697377
+0.283333
+0.576667
+0.383333
+0.676667
+0.262623
+0.555956
+0.404044
+0.697377
+0.262623
+0.591311
+0.404044
+0.662022
+0.297978
+0.555956
+0.368689
+0.697377
+0.310000
+0.576667
+0.410000
+0.676667
+0.289289
+0.555956
+0.430711
+0.697377
+0.289289
+0.591311
+0.430711
+0.662022
+0.324645
+0.555956
+0.395355
+0.697377
+0.336667
+0.576667
+0.436667
+0.676667
+0.315956
+0.555956
+0.457377
+0.697377
+0.315956
+0.591311
+0.457377
+0.662022
+0.351311
+0.555956
+0.422022
+0.697377
+0.363333
+0.576667
+0.463333
+0.676667
+0.342623
+0.555956
+0.484044
+0.697377
+0.342623
+0.591311
+0.484044
+0.662022
+0.377978
+0.555956
+0.448689
+0.697377
+0.390000
+0.576667
+0.490000
+0.676667
+0.369289
+0.555956
+0.510711
+0.697377
+0.369289
+0.591311
+0.510711
+0.662022
+0.404645
+0.555956
+0.475355
+0.697377
+0.416667
+0.576667
+0.516667
+0.676667
+0.395956
+0.555956
+0.537377
+0.697377
+0.395956
+0.591311
+0.537377
+0.662022
+0.431311
+0.555956
+0.502022
+0.697377
+0.443333
+0.576667
+0.543333
+0.676667
+0.422623
+0.555956
+0.564044
+0.697377
+0.422623
+0.591311
+0.564044
+0.662022
+0.457978
+0.555956
+0.528689
+0.697377
+0.470000
+0.576667
+0.570000
+0.676667
+0.449289
+0.555956
+0.590711
+0.697377
+0.449289
+0.591311
+0.590711
+0.662022
+0.484645
+0.555956
+0.555355
+0.697377
+0.496667
+0.576667
+0.596667
+0.676667
+0.475956
+0.555956
+0.617377
+0.697377
+0.475956
+0.591311
+0.617377
+0.662022
+0.511311
+0.555956
+0.582022
+0.697377
+0.523333
+0.576667
+0.623333
+0.676667
+0.502623
+0.555956
+0.644044
+0.697377
+0.502623
+0.591311
+0.644044
+0.662022
+0.537978
+0.555956
+0.608689
+0.697377
+0.550000
+0.576667
+0.650000
+0.676667
+0.529289
+0.555956
+0.670711
+0.697377
+0.529289
+0.591311
+0.670711
+0.662022
+0.564645
+0.555956
+0.635355
+0.697377
+0.576667
+0.576667
+0.676667
+0.676667
+0.555956
+0.555956
+0.697377
+0.697377
+0.555956
+0.591311
+0.697377
+0.662022
+0.591311
+0.555956
+0.662022
+0.697377
+0.603333
+0.576667
+0.703333
+0.676667
+0.582623
+0.555956
+0.724044
+0.697377
+0.582623
+0.591311
+0.724044
+0.662022
+0.617978
+0.555956
+0.688689
+0.697377
+0.630000
+0.576667
+0.730000
+0.676667
+0.609289
+0.555956
+0.750711
+0.697377
+0.609289
+0.591311
+0.750711
+0.662022
+0.644645
+0.555956
+0.715355
+0.697377
+0.656667
+0.576667
+0.756667
+0.676667
+0.635956
+0.555956
+0.777377
+0.697377
+0.635956
+0.591311
+0.777377
+0.662022
+0.671311
+0.555956
+0.742022
+0.697377
+0.683333
+0.576667
+0.783333
+0.676667
+0.662623
+0.555956
+0.804044
+0.697377
+0.662623
+0.591311
+0.804044
+0.662022
+0.697978
+0.555956
+0.768689
+0.697377
+0.710000
+0.576667
+0.810000
+0.676667
+0.689289
+0.555956
+0.830711
+0.697377
+0.689289
+0.591311
+0.830711
+0.662022
+0.724645
+0.555956
+0.795355
+0.697377
+0.736667
+0.576667
+0.836667
+0.676667
+0.715956
+0.555956
+0.857377
+0.697377
+0.715956
+0.591311
+0.857377
+0.662022
+0.751311
+0.555956
+0.822022
+0.697377
+0.763333
+0.576667
+0.863333
+0.676667
+0.742623
+0.555956
+0.884044
+0.697377
+0.742623
+0.591311
+0.884044
+0.662022
+0.777978
+0.555956
+0.848689
+0.697377
+0.790000
+0.576667
+0.890000
+0.676667
+0.769289
+0.555956
+0.910711
+0.697377
+0.769289
+0.591311
+0.910711
+0.662022
+0.804645
+0.555956
+0.875355
+0.697377
+0.816667
+0.576667
+0.916667
+0.676667
+0.795956
+0.555956
+0.937377
+0.697377
+0.795956
+0.591311
+0.937377
+0.662022
+0.831311
+0.555956
+0.902022
+0.697377
+0.843333
+0.576667
+0.943333
+0.676667
+0.822623
+0.555956
+0.964044
+0.697377
+0.822623
+0.591311
+0.964044
+0.662022
+0.857978
+0.555956
+0.928689
+0.697377
+0.870000
+0.576667
+0.970000
+0.676667
+0.849289
+0.555956
+0.990711
+0.697377
+0.849289
+0.591311
+0.990711
+0.662022
+0.884645
+0.555956
+0.955355
+0.697377
+0.896667
+0.576667
+0.996667
+0.676667
+0.875956
+0.555956
+1.017377
+0.697377
+0.875956
+0.591311
+1.017377
+0.662022
+0.911311
+0.555956
+0.982022
+0.697377
+0.923333
+0.576667
+1.023333
+0.676667
+0.902623
+0.555956
+1.044044
+0.697377
+0.902623
+0.591311
+1.044044
+0.662022
+0.937978
+0.555956
+1.008689
+0.697377
+0.950000
+0.576667
+1.050000
+0.676667
+0.929289
+0.555956
+1.070711
+0.697377
+0.929289
+0.591311
+1.070711
+0.662022
+0.964645
+0.555956
+1.035355
+0.697377
+-0.036667
+0.603333
+0.063333
+0.703333
+-0.057377
+0.582623
+0.084044
+0.724044
+-0.057377
+0.617978
+0.084044
+0.688689
+-0.022022
+0.582623
+0.048689
+0.724044
+-0.010000
+0.603333
+0.090000
+0.703333
+-0.030711
+0.582623
+0.110711
+0.724044
+-0.030711
+0.617978
+0.110711
+0.688689
+0.004645
+0.582623
+0.075355
+0.724044
+0.016667
+0.603333
+0.116667
+0.703333
+-0.004044
+0.582623
+0.137377
+0.724044
+-0.004044
+0.617978
+0.137377
+0.688689
+0.031311
+0.582623
+0.102022
+0.724044
+0.043333
+0.603333
+0.143333
+0.703333
+0.022623
+0.582623
+0.164044
+0.724044
+0.022623
+0.617978
+0.164044
+0.688689
+0.057978
+0.582623
+0.128689
+0.724044
+0.070000
+0.603333
+0.170000
+0.703333
+0.049289
+0.582623
+0.190711
+0.724044
+0.049289
+0.617978
+0.190711
+0.688689
+0.084645
+0.582623
+0.155355
+0.724044
+0.096667
+0.603333
+0.196667
+0.703333
+0.075956
+0.582623
+0.217377
+0.724044
+0.075956
+0.617978
+0.217377
+0.688689
+0.111311
+0.582623
+0.182022
+0.724044
+0.123333
+0.603333
+0.223333
+0.703333
+0.102623
+0.582623
+0.244044
+0.724044
+0.102623
+0.617978
+0.244044
+0.688689
+0.137978
+0.582623
+0.208689
+0.724044
+0.150000
+0.603333
+0.250000
+0.703333
+0.129289
+0.582623
+0.270711
+0.724044
+0.129289
+0.617978
+0.270711
+0.688689
+0.164645
+0.582623
+0.235355
+0.724044
+0.176667
+0.603333
+0.276667
+0.703333
+0.155956
+0.582623
+0.297377
+0.724044
+0.155956
+0.617978
+0.297377
+0.688689
+0.191311
+0.582623
+0.262022
+0.724044
+0.203333
+0.603333
+0.303333
+0.703333
+0.182623
+0.582623
+0.324044
+0.724044
+0.182623
+0.617978
+0.324044
+0.688689
+0.217978
+0.582623
+0.288689
+0.724044
+0.230000
+0.603333
+0.330000
+0.703333
+0.209289
+0.582623
+0.350711
+0.724044
+0.209289
+0.617978
+0.350711
+0.688689
+0.244645
+0.582623
+0.315355
+0.724044
+0.256667
+0.603333
+0.356667
+0.703333
+0.235956
+0.582623
+0.377377
+0.724044
+0.235956
+0.617978
+0.377377
+0.688689
+0.271311
+0.582623
+0.342022
+0.724044
+0.283333
+0.603333
+0.383333
+0.703333
+0.262623
+0.582623
+0.404044
+0.724044
+0.262623
+0.617978
+0.404044
+0.688689
+0.297978
+0.582623
+0.368689
+0.724044
+0.310000
+0.603333
+0.410000
+0.703333
+0.289289
+0.582623
+0.430711
+0.724044
+0.289289
+0.617978
+0.430711
+0.688689
+0.324645
+0.582623
+0.395355
+0.724044
+0.336667
+0.603333
+0.436667
+0.703333
+0.315956
+0.582623
+0.457377
+0.724044
+0.315956
+0.617978
+0.457377
+0.688689
+0.351311
+0.582623
+0.422022
+0.724044
+0.363333
+0.603333
+0.463333
+0.703333
+0.342623
+0.582623
+0.484044
+0.724044
+0.342623
+0.617978
+0.484044
+0.688689
+0.377978
+0.582623
+0.448689
+0.724044
+0.390000
+0.603333
+0.490000
+0.703333
+0.369289
+0.582623
+0.510711
+0.724044
+0.369289
+0.617978
+0.510711
+0.688689
+0.404645
+0.582623
+0.475355
+0.724044
+0.416667
+0.603333
+0.516667
+0.703333
+0.395956
+0.582623
+0.537377
+0.724044
+0.395956
+0.617978
+0.537377
+0.688689
+0.431311
+0.582623
+0.502022
+0.724044
+0.443333
+0.603333
+0.543333
+0.703333
+0.422623
+0.582623
+0.564044
+0.724044
+0.422623
+0.617978
+0.564044
+0.688689
+0.457978
+0.582623
+0.528689
+0.724044
+0.470000
+0.603333
+0.570000
+0.703333
+0.449289
+0.582623
+0.590711
+0.724044
+0.449289
+0.617978
+0.590711
+0.688689
+0.484645
+0.582623
+0.555355
+0.724044
+0.496667
+0.603333
+0.596667
+0.703333
+0.475956
+0.582623
+0.617377
+0.724044
+0.475956
+0.617978
+0.617377
+0.688689
+0.511311
+0.582623
+0.582022
+0.724044
+0.523333
+0.603333
+0.623333
+0.703333
+0.502623
+0.582623
+0.644044
+0.724044
+0.502623
+0.617978
+0.644044
+0.688689
+0.537978
+0.582623
+0.608689
+0.724044
+0.550000
+0.603333
+0.650000
+0.703333
+0.529289
+0.582623
+0.670711
+0.724044
+0.529289
+0.617978
+0.670711
+0.688689
+0.564645
+0.582623
+0.635355
+0.724044
+0.576667
+0.603333
+0.676667
+0.703333
+0.555956
+0.582623
+0.697377
+0.724044
+0.555956
+0.617978
+0.697377
+0.688689
+0.591311
+0.582623
+0.662022
+0.724044
+0.603333
+0.603333
+0.703333
+0.703333
+0.582623
+0.582623
+0.724044
+0.724044
+0.582623
+0.617978
+0.724044
+0.688689
+0.617978
+0.582623
+0.688689
+0.724044
+0.630000
+0.603333
+0.730000
+0.703333
+0.609289
+0.582623
+0.750711
+0.724044
+0.609289
+0.617978
+0.750711
+0.688689
+0.644645
+0.582623
+0.715355
+0.724044
+0.656667
+0.603333
+0.756667
+0.703333
+0.635956
+0.582623
+0.777377
+0.724044
+0.635956
+0.617978
+0.777377
+0.688689
+0.671311
+0.582623
+0.742022
+0.724044
+0.683333
+0.603333
+0.783333
+0.703333
+0.662623
+0.582623
+0.804044
+0.724044
+0.662623
+0.617978
+0.804044
+0.688689
+0.697978
+0.582623
+0.768689
+0.724044
+0.710000
+0.603333
+0.810000
+0.703333
+0.689289
+0.582623
+0.830711
+0.724044
+0.689289
+0.617978
+0.830711
+0.688689
+0.724645
+0.582623
+0.795355
+0.724044
+0.736667
+0.603333
+0.836667
+0.703333
+0.715956
+0.582623
+0.857377
+0.724044
+0.715956
+0.617978
+0.857377
+0.688689
+0.751311
+0.582623
+0.822022
+0.724044
+0.763333
+0.603333
+0.863333
+0.703333
+0.742623
+0.582623
+0.884044
+0.724044
+0.742623
+0.617978
+0.884044
+0.688689
+0.777978
+0.582623
+0.848689
+0.724044
+0.790000
+0.603333
+0.890000
+0.703333
+0.769289
+0.582623
+0.910711
+0.724044
+0.769289
+0.617978
+0.910711
+0.688689
+0.804645
+0.582623
+0.875355
+0.724044
+0.816667
+0.603333
+0.916667
+0.703333
+0.795956
+0.582623
+0.937377
+0.724044
+0.795956
+0.617978
+0.937377
+0.688689
+0.831311
+0.582623
+0.902022
+0.724044
+0.843333
+0.603333
+0.943333
+0.703333
+0.822623
+0.582623
+0.964044
+0.724044
+0.822623
+0.617978
+0.964044
+0.688689
+0.857978
+0.582623
+0.928689
+0.724044
+0.870000
+0.603333
+0.970000
+0.703333
+0.849289
+0.582623
+0.990711
+0.724044
+0.849289
+0.617978
+0.990711
+0.688689
+0.884645
+0.582623
+0.955355
+0.724044
+0.896667
+0.603333
+0.996667
+0.703333
+0.875956
+0.582623
+1.017377
+0.724044
+0.875956
+0.617978
+1.017377
+0.688689
+0.911311
+0.582623
+0.982022
+0.724044
+0.923333
+0.603333
+1.023333
+0.703333
+0.902623
+0.582623
+1.044044
+0.724044
+0.902623
+0.617978
+1.044044
+0.688689
+0.937978
+0.582623
+1.008689
+0.724044
+0.950000
+0.603333
+1.050000
+0.703333
+0.929289
+0.582623
+1.070711
+0.724044
+0.929289
+0.617978
+1.070711
+0.688689
+0.964645
+0.582623
+1.035355
+0.724044
+-0.036667
+0.630000
+0.063333
+0.730000
+-0.057377
+0.609289
+0.084044
+0.750711
+-0.057377
+0.644645
+0.084044
+0.715355
+-0.022022
+0.609289
+0.048689
+0.750711
+-0.010000
+0.630000
+0.090000
+0.730000
+-0.030711
+0.609289
+0.110711
+0.750711
+-0.030711
+0.644645
+0.110711
+0.715355
+0.004645
+0.609289
+0.075355
+0.750711
+0.016667
+0.630000
+0.116667
+0.730000
+-0.004044
+0.609289
+0.137377
+0.750711
+-0.004044
+0.644645
+0.137377
+0.715355
+0.031311
+0.609289
+0.102022
+0.750711
+0.043333
+0.630000
+0.143333
+0.730000
+0.022623
+0.609289
+0.164044
+0.750711
+0.022623
+0.644645
+0.164044
+0.715355
+0.057978
+0.609289
+0.128689
+0.750711
+0.070000
+0.630000
+0.170000
+0.730000
+0.049289
+0.609289
+0.190711
+0.750711
+0.049289
+0.644645
+0.190711
+0.715355
+0.084645
+0.609289
+0.155355
+0.750711
+0.096667
+0.630000
+0.196667
+0.730000
+0.075956
+0.609289
+0.217377
+0.750711
+0.075956
+0.644645
+0.217377
+0.715355
+0.111311
+0.609289
+0.182022
+0.750711
+0.123333
+0.630000
+0.223333
+0.730000
+0.102623
+0.609289
+0.244044
+0.750711
+0.102623
+0.644645
+0.244044
+0.715355
+0.137978
+0.609289
+0.208689
+0.750711
+0.150000
+0.630000
+0.250000
+0.730000
+0.129289
+0.609289
+0.270711
+0.750711
+0.129289
+0.644645
+0.270711
+0.715355
+0.164645
+0.609289
+0.235355
+0.750711
+0.176667
+0.630000
+0.276667
+0.730000
+0.155956
+0.609289
+0.297377
+0.750711
+0.155956
+0.644645
+0.297377
+0.715355
+0.191311
+0.609289
+0.262022
+0.750711
+0.203333
+0.630000
+0.303333
+0.730000
+0.182623
+0.609289
+0.324044
+0.750711
+0.182623
+0.644645
+0.324044
+0.715355
+0.217978
+0.609289
+0.288689
+0.750711
+0.230000
+0.630000
+0.330000
+0.730000
+0.209289
+0.609289
+0.350711
+0.750711
+0.209289
+0.644645
+0.350711
+0.715355
+0.244645
+0.609289
+0.315355
+0.750711
+0.256667
+0.630000
+0.356667
+0.730000
+0.235956
+0.609289
+0.377377
+0.750711
+0.235956
+0.644645
+0.377377
+0.715355
+0.271311
+0.609289
+0.342022
+0.750711
+0.283333
+0.630000
+0.383333
+0.730000
+0.262623
+0.609289
+0.404044
+0.750711
+0.262623
+0.644645
+0.404044
+0.715355
+0.297978
+0.609289
+0.368689
+0.750711
+0.310000
+0.630000
+0.410000
+0.730000
+0.289289
+0.609289
+0.430711
+0.750711
+0.289289
+0.644645
+0.430711
+0.715355
+0.324645
+0.609289
+0.395355
+0.750711
+0.336667
+0.630000
+0.436667
+0.730000
+0.315956
+0.609289
+0.457377
+0.750711
+0.315956
+0.644645
+0.457377
+0.715355
+0.351311
+0.609289
+0.422022
+0.750711
+0.363333
+0.630000
+0.463333
+0.730000
+0.342623
+0.609289
+0.484044
+0.750711
+0.342623
+0.644645
+0.484044
+0.715355
+0.377978
+0.609289
+0.448689
+0.750711
+0.390000
+0.630000
+0.490000
+0.730000
+0.369289
+0.609289
+0.510711
+0.750711
+0.369289
+0.644645
+0.510711
+0.715355
+0.404645
+0.609289
+0.475355
+0.750711
+0.416667
+0.630000
+0.516667
+0.730000
+0.395956
+0.609289
+0.537377
+0.750711
+0.395956
+0.644645
+0.537377
+0.715355
+0.431311
+0.609289
+0.502022
+0.750711
+0.443333
+0.630000
+0.543333
+0.730000
+0.422623
+0.609289
+0.564044
+0.750711
+0.422623
+0.644645
+0.564044
+0.715355
+0.457978
+0.609289
+0.528689
+0.750711
+0.470000
+0.630000
+0.570000
+0.730000
+0.449289
+0.609289
+0.590711
+0.750711
+0.449289
+0.644645
+0.590711
+0.715355
+0.484645
+0.609289
+0.555355
+0.750711
+0.496667
+0.630000
+0.596667
+0.730000
+0.475956
+0.609289
+0.617377
+0.750711
+0.475956
+0.644645
+0.617377
+0.715355
+0.511311
+0.609289
+0.582022
+0.750711
+0.523333
+0.630000
+0.623333
+0.730000
+0.502623
+0.609289
+0.644044
+0.750711
+0.502623
+0.644645
+0.644044
+0.715355
+0.537978
+0.609289
+0.608689
+0.750711
+0.550000
+0.630000
+0.650000
+0.730000
+0.529289
+0.609289
+0.670711
+0.750711
+0.529289
+0.644645
+0.670711
+0.715355
+0.564645
+0.609289
+0.635355
+0.750711
+0.576667
+0.630000
+0.676667
+0.730000
+0.555956
+0.609289
+0.697377
+0.750711
+0.555956
+0.644645
+0.697377
+0.715355
+0.591311
+0.609289
+0.662022
+0.750711
+0.603333
+0.630000
+0.703333
+0.730000
+0.582623
+0.609289
+0.724044
+0.750711
+0.582623
+0.644645
+0.724044
+0.715355
+0.617978
+0.609289
+0.688689
+0.750711
+0.630000
+0.630000
+0.730000
+0.730000
+0.609289
+0.609289
+0.750711
+0.750711
+0.609289
+0.644645
+0.750711
+0.715355
+0.644645
+0.609289
+0.715355
+0.750711
+0.656667
+0.630000
+0.756667
+0.730000
+0.635956
+0.609289
+0.777377
+0.750711
+0.635956
+0.644645
+0.777377
+0.715355
+0.671311
+0.609289
+0.742022
+0.750711
+0.683333
+0.630000
+0.783333
+0.730000
+0.662623
+0.609289
+0.804044
+0.750711
+0.662623
+0.644645
+0.804044
+0.715355
+0.697978
+0.609289
+0.768689
+0.750711
+0.710000
+0.630000
+0.810000
+0.730000
+0.689289
+0.609289
+0.830711
+0.750711
+0.689289
+0.644645
+0.830711
+0.715355
+0.724645
+0.609289
+0.795355
+0.750711
+0.736667
+0.630000
+0.836667
+0.730000
+0.715956
+0.609289
+0.857377
+0.750711
+0.715956
+0.644645
+0.857377
+0.715355
+0.751311
+0.609289
+0.822022
+0.750711
+0.763333
+0.630000
+0.863333
+0.730000
+0.742623
+0.609289
+0.884044
+0.750711
+0.742623
+0.644645
+0.884044
+0.715355
+0.777978
+0.609289
+0.848689
+0.750711
+0.790000
+0.630000
+0.890000
+0.730000
+0.769289
+0.609289
+0.910711
+0.750711
+0.769289
+0.644645
+0.910711
+0.715355
+0.804645
+0.609289
+0.875355
+0.750711
+0.816667
+0.630000
+0.916667
+0.730000
+0.795956
+0.609289
+0.937377
+0.750711
+0.795956
+0.644645
+0.937377
+0.715355
+0.831311
+0.609289
+0.902022
+0.750711
+0.843333
+0.630000
+0.943333
+0.730000
+0.822623
+0.609289
+0.964044
+0.750711
+0.822623
+0.644645
+0.964044
+0.715355
+0.857978
+0.609289
+0.928689
+0.750711
+0.870000
+0.630000
+0.970000
+0.730000
+0.849289
+0.609289
+0.990711
+0.750711
+0.849289
+0.644645
+0.990711
+0.715355
+0.884645
+0.609289
+0.955355
+0.750711
+0.896667
+0.630000
+0.996667
+0.730000
+0.875956
+0.609289
+1.017377
+0.750711
+0.875956
+0.644645
+1.017377
+0.715355
+0.911311
+0.609289
+0.982022
+0.750711
+0.923333
+0.630000
+1.023333
+0.730000
+0.902623
+0.609289
+1.044044
+0.750711
+0.902623
+0.644645
+1.044044
+0.715355
+0.937978
+0.609289
+1.008689
+0.750711
+0.950000
+0.630000
+1.050000
+0.730000
+0.929289
+0.609289
+1.070711
+0.750711
+0.929289
+0.644645
+1.070711
+0.715355
+0.964645
+0.609289
+1.035355
+0.750711
+-0.036667
+0.656667
+0.063333
+0.756667
+-0.057377
+0.635956
+0.084044
+0.777377
+-0.057377
+0.671311
+0.084044
+0.742022
+-0.022022
+0.635956
+0.048689
+0.777377
+-0.010000
+0.656667
+0.090000
+0.756667
+-0.030711
+0.635956
+0.110711
+0.777377
+-0.030711
+0.671311
+0.110711
+0.742022
+0.004645
+0.635956
+0.075355
+0.777377
+0.016667
+0.656667
+0.116667
+0.756667
+-0.004044
+0.635956
+0.137377
+0.777377
+-0.004044
+0.671311
+0.137377
+0.742022
+0.031311
+0.635956
+0.102022
+0.777377
+0.043333
+0.656667
+0.143333
+0.756667
+0.022623
+0.635956
+0.164044
+0.777377
+0.022623
+0.671311
+0.164044
+0.742022
+0.057978
+0.635956
+0.128689
+0.777377
+0.070000
+0.656667
+0.170000
+0.756667
+0.049289
+0.635956
+0.190711
+0.777377
+0.049289
+0.671311
+0.190711
+0.742022
+0.084645
+0.635956
+0.155355
+0.777377
+0.096667
+0.656667
+0.196667
+0.756667
+0.075956
+0.635956
+0.217377
+0.777377
+0.075956
+0.671311
+0.217377
+0.742022
+0.111311
+0.635956
+0.182022
+0.777377
+0.123333
+0.656667
+0.223333
+0.756667
+0.102623
+0.635956
+0.244044
+0.777377
+0.102623
+0.671311
+0.244044
+0.742022
+0.137978
+0.635956
+0.208689
+0.777377
+0.150000
+0.656667
+0.250000
+0.756667
+0.129289
+0.635956
+0.270711
+0.777377
+0.129289
+0.671311
+0.270711
+0.742022
+0.164645
+0.635956
+0.235355
+0.777377
+0.176667
+0.656667
+0.276667
+0.756667
+0.155956
+0.635956
+0.297377
+0.777377
+0.155956
+0.671311
+0.297377
+0.742022
+0.191311
+0.635956
+0.262022
+0.777377
+0.203333
+0.656667
+0.303333
+0.756667
+0.182623
+0.635956
+0.324044
+0.777377
+0.182623
+0.671311
+0.324044
+0.742022
+0.217978
+0.635956
+0.288689
+0.777377
+0.230000
+0.656667
+0.330000
+0.756667
+0.209289
+0.635956
+0.350711
+0.777377
+0.209289
+0.671311
+0.350711
+0.742022
+0.244645
+0.635956
+0.315355
+0.777377
+0.256667
+0.656667
+0.356667
+0.756667
+0.235956
+0.635956
+0.377377
+0.777377
+0.235956
+0.671311
+0.377377
+0.742022
+0.271311
+0.635956
+0.342022
+0.777377
+0.283333
+0.656667
+0.383333
+0.756667
+0.262623
+0.635956
+0.404044
+0.777377
+0.262623
+0.671311
+0.404044
+0.742022
+0.297978
+0.635956
+0.368689
+0.777377
+0.310000
+0.656667
+0.410000
+0.756667
+0.289289
+0.635956
+0.430711
+0.777377
+0.289289
+0.671311
+0.430711
+0.742022
+0.324645
+0.635956
+0.395355
+0.777377
+0.336667
+0.656667
+0.436667
+0.756667
+0.315956
+0.635956
+0.457377
+0.777377
+0.315956
+0.671311
+0.457377
+0.742022
+0.351311
+0.635956
+0.422022
+0.777377
+0.363333
+0.656667
+0.463333
+0.756667
+0.342623
+0.635956
+0.484044
+0.777377
+0.342623
+0.671311
+0.484044
+0.742022
+0.377978
+0.635956
+0.448689
+0.777377
+0.390000
+0.656667
+0.490000
+0.756667
+0.369289
+0.635956
+0.510711
+0.777377
+0.369289
+0.671311
+0.510711
+0.742022
+0.404645
+0.635956
+0.475355
+0.777377
+0.416667
+0.656667
+0.516667
+0.756667
+0.395956
+0.635956
+0.537377
+0.777377
+0.395956
+0.671311
+0.537377
+0.742022
+0.431311
+0.635956
+0.502022
+0.777377
+0.443333
+0.656667
+0.543333
+0.756667
+0.422623
+0.635956
+0.564044
+0.777377
+0.422623
+0.671311
+0.564044
+0.742022
+0.457978
+0.635956
+0.528689
+0.777377
+0.470000
+0.656667
+0.570000
+0.756667
+0.449289
+0.635956
+0.590711
+0.777377
+0.449289
+0.671311
+0.590711
+0.742022
+0.484645
+0.635956
+0.555355
+0.777377
+0.496667
+0.656667
+0.596667
+0.756667
+0.475956
+0.635956
+0.617377
+0.777377
+0.475956
+0.671311
+0.617377
+0.742022
+0.511311
+0.635956
+0.582022
+0.777377
+0.523333
+0.656667
+0.623333
+0.756667
+0.502623
+0.635956
+0.644044
+0.777377
+0.502623
+0.671311
+0.644044
+0.742022
+0.537978
+0.635956
+0.608689
+0.777377
+0.550000
+0.656667
+0.650000
+0.756667
+0.529289
+0.635956
+0.670711
+0.777377
+0.529289
+0.671311
+0.670711
+0.742022
+0.564645
+0.635956
+0.635355
+0.777377
+0.576667
+0.656667
+0.676667
+0.756667
+0.555956
+0.635956
+0.697377
+0.777377
+0.555956
+0.671311
+0.697377
+0.742022
+0.591311
+0.635956
+0.662022
+0.777377
+0.603333
+0.656667
+0.703333
+0.756667
+0.582623
+0.635956
+0.724044
+0.777377
+0.582623
+0.671311
+0.724044
+0.742022
+0.617978
+0.635956
+0.688689
+0.777377
+0.630000
+0.656667
+0.730000
+0.756667
+0.609289
+0.635956
+0.750711
+0.777377
+0.609289
+0.671311
+0.750711
+0.742022
+0.644645
+0.635956
+0.715355
+0.777377
+0.656667
+0.656667
+0.756667
+0.756667
+0.635956
+0.635956
+0.777377
+0.777377
+0.635956
+0.671311
+0.777377
+0.742022
+0.671311
+0.635956
+0.742022
+0.777377
+0.683333
+0.656667
+0.783333
+0.756667
+0.662623
+0.635956
+0.804044
+0.777377
+0.662623
+0.671311
+0.804044
+0.742022
+0.697978
+0.635956
+0.768689
+0.777377
+0.710000
+0.656667
+0.810000
+0.756667
+0.689289
+0.635956
+0.830711
+0.777377
+0.689289
+0.671311
+0.830711
+0.742022
+0.724645
+0.635956
+0.795355
+0.777377
+0.736667
+0.656667
+0.836667
+0.756667
+0.715956
+0.635956
+0.857377
+0.777377
+0.715956
+0.671311
+0.857377
+0.742022
+0.751311
+0.635956
+0.822022
+0.777377
+0.763333
+0.656667
+0.863333
+0.756667
+0.742623
+0.635956
+0.884044
+0.777377
+0.742623
+0.671311
+0.884044
+0.742022
+0.777978
+0.635956
+0.848689
+0.777377
+0.790000
+0.656667
+0.890000
+0.756667
+0.769289
+0.635956
+0.910711
+0.777377
+0.769289
+0.671311
+0.910711
+0.742022
+0.804645
+0.635956
+0.875355
+0.777377
+0.816667
+0.656667
+0.916667
+0.756667
+0.795956
+0.635956
+0.937377
+0.777377
+0.795956
+0.671311
+0.937377
+0.742022
+0.831311
+0.635956
+0.902022
+0.777377
+0.843333
+0.656667
+0.943333
+0.756667
+0.822623
+0.635956
+0.964044
+0.777377
+0.822623
+0.671311
+0.964044
+0.742022
+0.857978
+0.635956
+0.928689
+0.777377
+0.870000
+0.656667
+0.970000
+0.756667
+0.849289
+0.635956
+0.990711
+0.777377
+0.849289
+0.671311
+0.990711
+0.742022
+0.884645
+0.635956
+0.955355
+0.777377
+0.896667
+0.656667
+0.996667
+0.756667
+0.875956
+0.635956
+1.017377
+0.777377
+0.875956
+0.671311
+1.017377
+0.742022
+0.911311
+0.635956
+0.982022
+0.777377
+0.923333
+0.656667
+1.023333
+0.756667
+0.902623
+0.635956
+1.044044
+0.777377
+0.902623
+0.671311
+1.044044
+0.742022
+0.937978
+0.635956
+1.008689
+0.777377
+0.950000
+0.656667
+1.050000
+0.756667
+0.929289
+0.635956
+1.070711
+0.777377
+0.929289
+0.671311
+1.070711
+0.742022
+0.964645
+0.635956
+1.035355
+0.777377
+-0.036667
+0.683333
+0.063333
+0.783333
+-0.057377
+0.662623
+0.084044
+0.804044
+-0.057377
+0.697978
+0.084044
+0.768689
+-0.022022
+0.662623
+0.048689
+0.804044
+-0.010000
+0.683333
+0.090000
+0.783333
+-0.030711
+0.662623
+0.110711
+0.804044
+-0.030711
+0.697978
+0.110711
+0.768689
+0.004645
+0.662623
+0.075355
+0.804044
+0.016667
+0.683333
+0.116667
+0.783333
+-0.004044
+0.662623
+0.137377
+0.804044
+-0.004044
+0.697978
+0.137377
+0.768689
+0.031311
+0.662623
+0.102022
+0.804044
+0.043333
+0.683333
+0.143333
+0.783333
+0.022623
+0.662623
+0.164044
+0.804044
+0.022623
+0.697978
+0.164044
+0.768689
+0.057978
+0.662623
+0.128689
+0.804044
+0.070000
+0.683333
+0.170000
+0.783333
+0.049289
+0.662623
+0.190711
+0.804044
+0.049289
+0.697978
+0.190711
+0.768689
+0.084645
+0.662623
+0.155355
+0.804044
+0.096667
+0.683333
+0.196667
+0.783333
+0.075956
+0.662623
+0.217377
+0.804044
+0.075956
+0.697978
+0.217377
+0.768689
+0.111311
+0.662623
+0.182022
+0.804044
+0.123333
+0.683333
+0.223333
+0.783333
+0.102623
+0.662623
+0.244044
+0.804044
+0.102623
+0.697978
+0.244044
+0.768689
+0.137978
+0.662623
+0.208689
+0.804044
+0.150000
+0.683333
+0.250000
+0.783333
+0.129289
+0.662623
+0.270711
+0.804044
+0.129289
+0.697978
+0.270711
+0.768689
+0.164645
+0.662623
+0.235355
+0.804044
+0.176667
+0.683333
+0.276667
+0.783333
+0.155956
+0.662623
+0.297377
+0.804044
+0.155956
+0.697978
+0.297377
+0.768689
+0.191311
+0.662623
+0.262022
+0.804044
+0.203333
+0.683333
+0.303333
+0.783333
+0.182623
+0.662623
+0.324044
+0.804044
+0.182623
+0.697978
+0.324044
+0.768689
+0.217978
+0.662623
+0.288689
+0.804044
+0.230000
+0.683333
+0.330000
+0.783333
+0.209289
+0.662623
+0.350711
+0.804044
+0.209289
+0.697978
+0.350711
+0.768689
+0.244645
+0.662623
+0.315355
+0.804044
+0.256667
+0.683333
+0.356667
+0.783333
+0.235956
+0.662623
+0.377377
+0.804044
+0.235956
+0.697978
+0.377377
+0.768689
+0.271311
+0.662623
+0.342022
+0.804044
+0.283333
+0.683333
+0.383333
+0.783333
+0.262623
+0.662623
+0.404044
+0.804044
+0.262623
+0.697978
+0.404044
+0.768689
+0.297978
+0.662623
+0.368689
+0.804044
+0.310000
+0.683333
+0.410000
+0.783333
+0.289289
+0.662623
+0.430711
+0.804044
+0.289289
+0.697978
+0.430711
+0.768689
+0.324645
+0.662623
+0.395355
+0.804044
+0.336667
+0.683333
+0.436667
+0.783333
+0.315956
+0.662623
+0.457377
+0.804044
+0.315956
+0.697978
+0.457377
+0.768689
+0.351311
+0.662623
+0.422022
+0.804044
+0.363333
+0.683333
+0.463333
+0.783333
+0.342623
+0.662623
+0.484044
+0.804044
+0.342623
+0.697978
+0.484044
+0.768689
+0.377978
+0.662623
+0.448689
+0.804044
+0.390000
+0.683333
+0.490000
+0.783333
+0.369289
+0.662623
+0.510711
+0.804044
+0.369289
+0.697978
+0.510711
+0.768689
+0.404645
+0.662623
+0.475355
+0.804044
+0.416667
+0.683333
+0.516667
+0.783333
+0.395956
+0.662623
+0.537377
+0.804044
+0.395956
+0.697978
+0.537377
+0.768689
+0.431311
+0.662623
+0.502022
+0.804044
+0.443333
+0.683333
+0.543333
+0.783333
+0.422623
+0.662623
+0.564044
+0.804044
+0.422623
+0.697978
+0.564044
+0.768689
+0.457978
+0.662623
+0.528689
+0.804044
+0.470000
+0.683333
+0.570000
+0.783333
+0.449289
+0.662623
+0.590711
+0.804044
+0.449289
+0.697978
+0.590711
+0.768689
+0.484645
+0.662623
+0.555355
+0.804044
+0.496667
+0.683333
+0.596667
+0.783333
+0.475956
+0.662623
+0.617377
+0.804044
+0.475956
+0.697978
+0.617377
+0.768689
+0.511311
+0.662623
+0.582022
+0.804044
+0.523333
+0.683333
+0.623333
+0.783333
+0.502623
+0.662623
+0.644044
+0.804044
+0.502623
+0.697978
+0.644044
+0.768689
+0.537978
+0.662623
+0.608689
+0.804044
+0.550000
+0.683333
+0.650000
+0.783333
+0.529289
+0.662623
+0.670711
+0.804044
+0.529289
+0.697978
+0.670711
+0.768689
+0.564645
+0.662623
+0.635355
+0.804044
+0.576667
+0.683333
+0.676667
+0.783333
+0.555956
+0.662623
+0.697377
+0.804044
+0.555956
+0.697978
+0.697377
+0.768689
+0.591311
+0.662623
+0.662022
+0.804044
+0.603333
+0.683333
+0.703333
+0.783333
+0.582623
+0.662623
+0.724044
+0.804044
+0.582623
+0.697978
+0.724044
+0.768689
+0.617978
+0.662623
+0.688689
+0.804044
+0.630000
+0.683333
+0.730000
+0.783333
+0.609289
+0.662623
+0.750711
+0.804044
+0.609289
+0.697978
+0.750711
+0.768689
+0.644645
+0.662623
+0.715355
+0.804044
+0.656667
+0.683333
+0.756667
+0.783333
+0.635956
+0.662623
+0.777377
+0.804044
+0.635956
+0.697978
+0.777377
+0.768689
+0.671311
+0.662623
+0.742022
+0.804044
+0.683333
+0.683333
+0.783333
+0.783333
+0.662623
+0.662623
+0.804044
+0.804044
+0.662623
+0.697978
+0.804044
+0.768689
+0.697978
+0.662623
+0.768689
+0.804044
+0.710000
+0.683333
+0.810000
+0.783333
+0.689289
+0.662623
+0.830711
+0.804044
+0.689289
+0.697978
+0.830711
+0.768689
+0.724645
+0.662623
+0.795355
+0.804044
+0.736667
+0.683333
+0.836667
+0.783333
+0.715956
+0.662623
+0.857377
+0.804044
+0.715956
+0.697978
+0.857377
+0.768689
+0.751311
+0.662623
+0.822022
+0.804044
+0.763333
+0.683333
+0.863333
+0.783333
+0.742623
+0.662623
+0.884044
+0.804044
+0.742623
+0.697978
+0.884044
+0.768689
+0.777978
+0.662623
+0.848689
+0.804044
+0.790000
+0.683333
+0.890000
+0.783333
+0.769289
+0.662623
+0.910711
+0.804044
+0.769289
+0.697978
+0.910711
+0.768689
+0.804645
+0.662623
+0.875355
+0.804044
+0.816667
+0.683333
+0.916667
+0.783333
+0.795956
+0.662623
+0.937377
+0.804044
+0.795956
+0.697978
+0.937377
+0.768689
+0.831311
+0.662623
+0.902022
+0.804044
+0.843333
+0.683333
+0.943333
+0.783333
+0.822623
+0.662623
+0.964044
+0.804044
+0.822623
+0.697978
+0.964044
+0.768689
+0.857978
+0.662623
+0.928689
+0.804044
+0.870000
+0.683333
+0.970000
+0.783333
+0.849289
+0.662623
+0.990711
+0.804044
+0.849289
+0.697978
+0.990711
+0.768689
+0.884645
+0.662623
+0.955355
+0.804044
+0.896667
+0.683333
+0.996667
+0.783333
+0.875956
+0.662623
+1.017377
+0.804044
+0.875956
+0.697978
+1.017377
+0.768689
+0.911311
+0.662623
+0.982022
+0.804044
+0.923333
+0.683333
+1.023333
+0.783333
+0.902623
+0.662623
+1.044044
+0.804044
+0.902623
+0.697978
+1.044044
+0.768689
+0.937978
+0.662623
+1.008689
+0.804044
+0.950000
+0.683333
+1.050000
+0.783333
+0.929289
+0.662623
+1.070711
+0.804044
+0.929289
+0.697978
+1.070711
+0.768689
+0.964645
+0.662623
+1.035355
+0.804044
+-0.036667
+0.710000
+0.063333
+0.810000
+-0.057377
+0.689289
+0.084044
+0.830711
+-0.057377
+0.724645
+0.084044
+0.795355
+-0.022022
+0.689289
+0.048689
+0.830711
+-0.010000
+0.710000
+0.090000
+0.810000
+-0.030711
+0.689289
+0.110711
+0.830711
+-0.030711
+0.724645
+0.110711
+0.795355
+0.004645
+0.689289
+0.075355
+0.830711
+0.016667
+0.710000
+0.116667
+0.810000
+-0.004044
+0.689289
+0.137377
+0.830711
+-0.004044
+0.724645
+0.137377
+0.795355
+0.031311
+0.689289
+0.102022
+0.830711
+0.043333
+0.710000
+0.143333
+0.810000
+0.022623
+0.689289
+0.164044
+0.830711
+0.022623
+0.724645
+0.164044
+0.795355
+0.057978
+0.689289
+0.128689
+0.830711
+0.070000
+0.710000
+0.170000
+0.810000
+0.049289
+0.689289
+0.190711
+0.830711
+0.049289
+0.724645
+0.190711
+0.795355
+0.084645
+0.689289
+0.155355
+0.830711
+0.096667
+0.710000
+0.196667
+0.810000
+0.075956
+0.689289
+0.217377
+0.830711
+0.075956
+0.724645
+0.217377
+0.795355
+0.111311
+0.689289
+0.182022
+0.830711
+0.123333
+0.710000
+0.223333
+0.810000
+0.102623
+0.689289
+0.244044
+0.830711
+0.102623
+0.724645
+0.244044
+0.795355
+0.137978
+0.689289
+0.208689
+0.830711
+0.150000
+0.710000
+0.250000
+0.810000
+0.129289
+0.689289
+0.270711
+0.830711
+0.129289
+0.724645
+0.270711
+0.795355
+0.164645
+0.689289
+0.235355
+0.830711
+0.176667
+0.710000
+0.276667
+0.810000
+0.155956
+0.689289
+0.297377
+0.830711
+0.155956
+0.724645
+0.297377
+0.795355
+0.191311
+0.689289
+0.262022
+0.830711
+0.203333
+0.710000
+0.303333
+0.810000
+0.182623
+0.689289
+0.324044
+0.830711
+0.182623
+0.724645
+0.324044
+0.795355
+0.217978
+0.689289
+0.288689
+0.830711
+0.230000
+0.710000
+0.330000
+0.810000
+0.209289
+0.689289
+0.350711
+0.830711
+0.209289
+0.724645
+0.350711
+0.795355
+0.244645
+0.689289
+0.315355
+0.830711
+0.256667
+0.710000
+0.356667
+0.810000
+0.235956
+0.689289
+0.377377
+0.830711
+0.235956
+0.724645
+0.377377
+0.795355
+0.271311
+0.689289
+0.342022
+0.830711
+0.283333
+0.710000
+0.383333
+0.810000
+0.262623
+0.689289
+0.404044
+0.830711
+0.262623
+0.724645
+0.404044
+0.795355
+0.297978
+0.689289
+0.368689
+0.830711
+0.310000
+0.710000
+0.410000
+0.810000
+0.289289
+0.689289
+0.430711
+0.830711
+0.289289
+0.724645
+0.430711
+0.795355
+0.324645
+0.689289
+0.395355
+0.830711
+0.336667
+0.710000
+0.436667
+0.810000
+0.315956
+0.689289
+0.457377
+0.830711
+0.315956
+0.724645
+0.457377
+0.795355
+0.351311
+0.689289
+0.422022
+0.830711
+0.363333
+0.710000
+0.463333
+0.810000
+0.342623
+0.689289
+0.484044
+0.830711
+0.342623
+0.724645
+0.484044
+0.795355
+0.377978
+0.689289
+0.448689
+0.830711
+0.390000
+0.710000
+0.490000
+0.810000
+0.369289
+0.689289
+0.510711
+0.830711
+0.369289
+0.724645
+0.510711
+0.795355
+0.404645
+0.689289
+0.475355
+0.830711
+0.416667
+0.710000
+0.516667
+0.810000
+0.395956
+0.689289
+0.537377
+0.830711
+0.395956
+0.724645
+0.537377
+0.795355
+0.431311
+0.689289
+0.502022
+0.830711
+0.443333
+0.710000
+0.543333
+0.810000
+0.422623
+0.689289
+0.564044
+0.830711
+0.422623
+0.724645
+0.564044
+0.795355
+0.457978
+0.689289
+0.528689
+0.830711
+0.470000
+0.710000
+0.570000
+0.810000
+0.449289
+0.689289
+0.590711
+0.830711
+0.449289
+0.724645
+0.590711
+0.795355
+0.484645
+0.689289
+0.555355
+0.830711
+0.496667
+0.710000
+0.596667
+0.810000
+0.475956
+0.689289
+0.617377
+0.830711
+0.475956
+0.724645
+0.617377
+0.795355
+0.511311
+0.689289
+0.582022
+0.830711
+0.523333
+0.710000
+0.623333
+0.810000
+0.502623
+0.689289
+0.644044
+0.830711
+0.502623
+0.724645
+0.644044
+0.795355
+0.537978
+0.689289
+0.608689
+0.830711
+0.550000
+0.710000
+0.650000
+0.810000
+0.529289
+0.689289
+0.670711
+0.830711
+0.529289
+0.724645
+0.670711
+0.795355
+0.564645
+0.689289
+0.635355
+0.830711
+0.576667
+0.710000
+0.676667
+0.810000
+0.555956
+0.689289
+0.697377
+0.830711
+0.555956
+0.724645
+0.697377
+0.795355
+0.591311
+0.689289
+0.662022
+0.830711
+0.603333
+0.710000
+0.703333
+0.810000
+0.582623
+0.689289
+0.724044
+0.830711
+0.582623
+0.724645
+0.724044
+0.795355
+0.617978
+0.689289
+0.688689
+0.830711
+0.630000
+0.710000
+0.730000
+0.810000
+0.609289
+0.689289
+0.750711
+0.830711
+0.609289
+0.724645
+0.750711
+0.795355
+0.644645
+0.689289
+0.715355
+0.830711
+0.656667
+0.710000
+0.756667
+0.810000
+0.635956
+0.689289
+0.777377
+0.830711
+0.635956
+0.724645
+0.777377
+0.795355
+0.671311
+0.689289
+0.742022
+0.830711
+0.683333
+0.710000
+0.783333
+0.810000
+0.662623
+0.689289
+0.804044
+0.830711
+0.662623
+0.724645
+0.804044
+0.795355
+0.697978
+0.689289
+0.768689
+0.830711
+0.710000
+0.710000
+0.810000
+0.810000
+0.689289
+0.689289
+0.830711
+0.830711
+0.689289
+0.724645
+0.830711
+0.795355
+0.724645
+0.689289
+0.795355
+0.830711
+0.736667
+0.710000
+0.836667
+0.810000
+0.715956
+0.689289
+0.857377
+0.830711
+0.715956
+0.724645
+0.857377
+0.795355
+0.751311
+0.689289
+0.822022
+0.830711
+0.763333
+0.710000
+0.863333
+0.810000
+0.742623
+0.689289
+0.884044
+0.830711
+0.742623
+0.724645
+0.884044
+0.795355
+0.777978
+0.689289
+0.848689
+0.830711
+0.790000
+0.710000
+0.890000
+0.810000
+0.769289
+0.689289
+0.910711
+0.830711
+0.769289
+0.724645
+0.910711
+0.795355
+0.804645
+0.689289
+0.875355
+0.830711
+0.816667
+0.710000
+0.916667
+0.810000
+0.795956
+0.689289
+0.937377
+0.830711
+0.795956
+0.724645
+0.937377
+0.795355
+0.831311
+0.689289
+0.902022
+0.830711
+0.843333
+0.710000
+0.943333
+0.810000
+0.822623
+0.689289
+0.964044
+0.830711
+0.822623
+0.724645
+0.964044
+0.795355
+0.857978
+0.689289
+0.928689
+0.830711
+0.870000
+0.710000
+0.970000
+0.810000
+0.849289
+0.689289
+0.990711
+0.830711
+0.849289
+0.724645
+0.990711
+0.795355
+0.884645
+0.689289
+0.955355
+0.830711
+0.896667
+0.710000
+0.996667
+0.810000
+0.875956
+0.689289
+1.017377
+0.830711
+0.875956
+0.724645
+1.017377
+0.795355
+0.911311
+0.689289
+0.982022
+0.830711
+0.923333
+0.710000
+1.023333
+0.810000
+0.902623
+0.689289
+1.044044
+0.830711
+0.902623
+0.724645
+1.044044
+0.795355
+0.937978
+0.689289
+1.008689
+0.830711
+0.950000
+0.710000
+1.050000
+0.810000
+0.929289
+0.689289
+1.070711
+0.830711
+0.929289
+0.724645
+1.070711
+0.795355
+0.964645
+0.689289
+1.035355
+0.830711
+-0.036667
+0.736667
+0.063333
+0.836667
+-0.057377
+0.715956
+0.084044
+0.857377
+-0.057377
+0.751311
+0.084044
+0.822022
+-0.022022
+0.715956
+0.048689
+0.857377
+-0.010000
+0.736667
+0.090000
+0.836667
+-0.030711
+0.715956
+0.110711
+0.857377
+-0.030711
+0.751311
+0.110711
+0.822022
+0.004645
+0.715956
+0.075355
+0.857377
+0.016667
+0.736667
+0.116667
+0.836667
+-0.004044
+0.715956
+0.137377
+0.857377
+-0.004044
+0.751311
+0.137377
+0.822022
+0.031311
+0.715956
+0.102022
+0.857377
+0.043333
+0.736667
+0.143333
+0.836667
+0.022623
+0.715956
+0.164044
+0.857377
+0.022623
+0.751311
+0.164044
+0.822022
+0.057978
+0.715956
+0.128689
+0.857377
+0.070000
+0.736667
+0.170000
+0.836667
+0.049289
+0.715956
+0.190711
+0.857377
+0.049289
+0.751311
+0.190711
+0.822022
+0.084645
+0.715956
+0.155355
+0.857377
+0.096667
+0.736667
+0.196667
+0.836667
+0.075956
+0.715956
+0.217377
+0.857377
+0.075956
+0.751311
+0.217377
+0.822022
+0.111311
+0.715956
+0.182022
+0.857377
+0.123333
+0.736667
+0.223333
+0.836667
+0.102623
+0.715956
+0.244044
+0.857377
+0.102623
+0.751311
+0.244044
+0.822022
+0.137978
+0.715956
+0.208689
+0.857377
+0.150000
+0.736667
+0.250000
+0.836667
+0.129289
+0.715956
+0.270711
+0.857377
+0.129289
+0.751311
+0.270711
+0.822022
+0.164645
+0.715956
+0.235355
+0.857377
+0.176667
+0.736667
+0.276667
+0.836667
+0.155956
+0.715956
+0.297377
+0.857377
+0.155956
+0.751311
+0.297377
+0.822022
+0.191311
+0.715956
+0.262022
+0.857377
+0.203333
+0.736667
+0.303333
+0.836667
+0.182623
+0.715956
+0.324044
+0.857377
+0.182623
+0.751311
+0.324044
+0.822022
+0.217978
+0.715956
+0.288689
+0.857377
+0.230000
+0.736667
+0.330000
+0.836667
+0.209289
+0.715956
+0.350711
+0.857377
+0.209289
+0.751311
+0.350711
+0.822022
+0.244645
+0.715956
+0.315355
+0.857377
+0.256667
+0.736667
+0.356667
+0.836667
+0.235956
+0.715956
+0.377377
+0.857377
+0.235956
+0.751311
+0.377377
+0.822022
+0.271311
+0.715956
+0.342022
+0.857377
+0.283333
+0.736667
+0.383333
+0.836667
+0.262623
+0.715956
+0.404044
+0.857377
+0.262623
+0.751311
+0.404044
+0.822022
+0.297978
+0.715956
+0.368689
+0.857377
+0.310000
+0.736667
+0.410000
+0.836667
+0.289289
+0.715956
+0.430711
+0.857377
+0.289289
+0.751311
+0.430711
+0.822022
+0.324645
+0.715956
+0.395355
+0.857377
+0.336667
+0.736667
+0.436667
+0.836667
+0.315956
+0.715956
+0.457377
+0.857377
+0.315956
+0.751311
+0.457377
+0.822022
+0.351311
+0.715956
+0.422022
+0.857377
+0.363333
+0.736667
+0.463333
+0.836667
+0.342623
+0.715956
+0.484044
+0.857377
+0.342623
+0.751311
+0.484044
+0.822022
+0.377978
+0.715956
+0.448689
+0.857377
+0.390000
+0.736667
+0.490000
+0.836667
+0.369289
+0.715956
+0.510711
+0.857377
+0.369289
+0.751311
+0.510711
+0.822022
+0.404645
+0.715956
+0.475355
+0.857377
+0.416667
+0.736667
+0.516667
+0.836667
+0.395956
+0.715956
+0.537377
+0.857377
+0.395956
+0.751311
+0.537377
+0.822022
+0.431311
+0.715956
+0.502022
+0.857377
+0.443333
+0.736667
+0.543333
+0.836667
+0.422623
+0.715956
+0.564044
+0.857377
+0.422623
+0.751311
+0.564044
+0.822022
+0.457978
+0.715956
+0.528689
+0.857377
+0.470000
+0.736667
+0.570000
+0.836667
+0.449289
+0.715956
+0.590711
+0.857377
+0.449289
+0.751311
+0.590711
+0.822022
+0.484645
+0.715956
+0.555355
+0.857377
+0.496667
+0.736667
+0.596667
+0.836667
+0.475956
+0.715956
+0.617377
+0.857377
+0.475956
+0.751311
+0.617377
+0.822022
+0.511311
+0.715956
+0.582022
+0.857377
+0.523333
+0.736667
+0.623333
+0.836667
+0.502623
+0.715956
+0.644044
+0.857377
+0.502623
+0.751311
+0.644044
+0.822022
+0.537978
+0.715956
+0.608689
+0.857377
+0.550000
+0.736667
+0.650000
+0.836667
+0.529289
+0.715956
+0.670711
+0.857377
+0.529289
+0.751311
+0.670711
+0.822022
+0.564645
+0.715956
+0.635355
+0.857377
+0.576667
+0.736667
+0.676667
+0.836667
+0.555956
+0.715956
+0.697377
+0.857377
+0.555956
+0.751311
+0.697377
+0.822022
+0.591311
+0.715956
+0.662022
+0.857377
+0.603333
+0.736667
+0.703333
+0.836667
+0.582623
+0.715956
+0.724044
+0.857377
+0.582623
+0.751311
+0.724044
+0.822022
+0.617978
+0.715956
+0.688689
+0.857377
+0.630000
+0.736667
+0.730000
+0.836667
+0.609289
+0.715956
+0.750711
+0.857377
+0.609289
+0.751311
+0.750711
+0.822022
+0.644645
+0.715956
+0.715355
+0.857377
+0.656667
+0.736667
+0.756667
+0.836667
+0.635956
+0.715956
+0.777377
+0.857377
+0.635956
+0.751311
+0.777377
+0.822022
+0.671311
+0.715956
+0.742022
+0.857377
+0.683333
+0.736667
+0.783333
+0.836667
+0.662623
+0.715956
+0.804044
+0.857377
+0.662623
+0.751311
+0.804044
+0.822022
+0.697978
+0.715956
+0.768689
+0.857377
+0.710000
+0.736667
+0.810000
+0.836667
+0.689289
+0.715956
+0.830711
+0.857377
+0.689289
+0.751311
+0.830711
+0.822022
+0.724645
+0.715956
+0.795355
+0.857377
+0.736667
+0.736667
+0.836667
+0.836667
+0.715956
+0.715956
+0.857377
+0.857377
+0.715956
+0.751311
+0.857377
+0.822022
+0.751311
+0.715956
+0.822022
+0.857377
+0.763333
+0.736667
+0.863333
+0.836667
+0.742623
+0.715956
+0.884044
+0.857377
+0.742623
+0.751311
+0.884044
+0.822022
+0.777978
+0.715956
+0.848689
+0.857377
+0.790000
+0.736667
+0.890000
+0.836667
+0.769289
+0.715956
+0.910711
+0.857377
+0.769289
+0.751311
+0.910711
+0.822022
+0.804645
+0.715956
+0.875355
+0.857377
+0.816667
+0.736667
+0.916667
+0.836667
+0.795956
+0.715956
+0.937377
+0.857377
+0.795956
+0.751311
+0.937377
+0.822022
+0.831311
+0.715956
+0.902022
+0.857377
+0.843333
+0.736667
+0.943333
+0.836667
+0.822623
+0.715956
+0.964044
+0.857377
+0.822623
+0.751311
+0.964044
+0.822022
+0.857978
+0.715956
+0.928689
+0.857377
+0.870000
+0.736667
+0.970000
+0.836667
+0.849289
+0.715956
+0.990711
+0.857377
+0.849289
+0.751311
+0.990711
+0.822022
+0.884645
+0.715956
+0.955355
+0.857377
+0.896667
+0.736667
+0.996667
+0.836667
+0.875956
+0.715956
+1.017377
+0.857377
+0.875956
+0.751311
+1.017377
+0.822022
+0.911311
+0.715956
+0.982022
+0.857377
+0.923333
+0.736667
+1.023333
+0.836667
+0.902623
+0.715956
+1.044044
+0.857377
+0.902623
+0.751311
+1.044044
+0.822022
+0.937978
+0.715956
+1.008689
+0.857377
+0.950000
+0.736667
+1.050000
+0.836667
+0.929289
+0.715956
+1.070711
+0.857377
+0.929289
+0.751311
+1.070711
+0.822022
+0.964645
+0.715956
+1.035355
+0.857377
+-0.036667
+0.763333
+0.063333
+0.863333
+-0.057377
+0.742623
+0.084044
+0.884044
+-0.057377
+0.777978
+0.084044
+0.848689
+-0.022022
+0.742623
+0.048689
+0.884044
+-0.010000
+0.763333
+0.090000
+0.863333
+-0.030711
+0.742623
+0.110711
+0.884044
+-0.030711
+0.777978
+0.110711
+0.848689
+0.004645
+0.742623
+0.075355
+0.884044
+0.016667
+0.763333
+0.116667
+0.863333
+-0.004044
+0.742623
+0.137377
+0.884044
+-0.004044
+0.777978
+0.137377
+0.848689
+0.031311
+0.742623
+0.102022
+0.884044
+0.043333
+0.763333
+0.143333
+0.863333
+0.022623
+0.742623
+0.164044
+0.884044
+0.022623
+0.777978
+0.164044
+0.848689
+0.057978
+0.742623
+0.128689
+0.884044
+0.070000
+0.763333
+0.170000
+0.863333
+0.049289
+0.742623
+0.190711
+0.884044
+0.049289
+0.777978
+0.190711
+0.848689
+0.084645
+0.742623
+0.155355
+0.884044
+0.096667
+0.763333
+0.196667
+0.863333
+0.075956
+0.742623
+0.217377
+0.884044
+0.075956
+0.777978
+0.217377
+0.848689
+0.111311
+0.742623
+0.182022
+0.884044
+0.123333
+0.763333
+0.223333
+0.863333
+0.102623
+0.742623
+0.244044
+0.884044
+0.102623
+0.777978
+0.244044
+0.848689
+0.137978
+0.742623
+0.208689
+0.884044
+0.150000
+0.763333
+0.250000
+0.863333
+0.129289
+0.742623
+0.270711
+0.884044
+0.129289
+0.777978
+0.270711
+0.848689
+0.164645
+0.742623
+0.235355
+0.884044
+0.176667
+0.763333
+0.276667
+0.863333
+0.155956
+0.742623
+0.297377
+0.884044
+0.155956
+0.777978
+0.297377
+0.848689
+0.191311
+0.742623
+0.262022
+0.884044
+0.203333
+0.763333
+0.303333
+0.863333
+0.182623
+0.742623
+0.324044
+0.884044
+0.182623
+0.777978
+0.324044
+0.848689
+0.217978
+0.742623
+0.288689
+0.884044
+0.230000
+0.763333
+0.330000
+0.863333
+0.209289
+0.742623
+0.350711
+0.884044
+0.209289
+0.777978
+0.350711
+0.848689
+0.244645
+0.742623
+0.315355
+0.884044
+0.256667
+0.763333
+0.356667
+0.863333
+0.235956
+0.742623
+0.377377
+0.884044
+0.235956
+0.777978
+0.377377
+0.848689
+0.271311
+0.742623
+0.342022
+0.884044
+0.283333
+0.763333
+0.383333
+0.863333
+0.262623
+0.742623
+0.404044
+0.884044
+0.262623
+0.777978
+0.404044
+0.848689
+0.297978
+0.742623
+0.368689
+0.884044
+0.310000
+0.763333
+0.410000
+0.863333
+0.289289
+0.742623
+0.430711
+0.884044
+0.289289
+0.777978
+0.430711
+0.848689
+0.324645
+0.742623
+0.395355
+0.884044
+0.336667
+0.763333
+0.436667
+0.863333
+0.315956
+0.742623
+0.457377
+0.884044
+0.315956
+0.777978
+0.457377
+0.848689
+0.351311
+0.742623
+0.422022
+0.884044
+0.363333
+0.763333
+0.463333
+0.863333
+0.342623
+0.742623
+0.484044
+0.884044
+0.342623
+0.777978
+0.484044
+0.848689
+0.377978
+0.742623
+0.448689
+0.884044
+0.390000
+0.763333
+0.490000
+0.863333
+0.369289
+0.742623
+0.510711
+0.884044
+0.369289
+0.777978
+0.510711
+0.848689
+0.404645
+0.742623
+0.475355
+0.884044
+0.416667
+0.763333
+0.516667
+0.863333
+0.395956
+0.742623
+0.537377
+0.884044
+0.395956
+0.777978
+0.537377
+0.848689
+0.431311
+0.742623
+0.502022
+0.884044
+0.443333
+0.763333
+0.543333
+0.863333
+0.422623
+0.742623
+0.564044
+0.884044
+0.422623
+0.777978
+0.564044
+0.848689
+0.457978
+0.742623
+0.528689
+0.884044
+0.470000
+0.763333
+0.570000
+0.863333
+0.449289
+0.742623
+0.590711
+0.884044
+0.449289
+0.777978
+0.590711
+0.848689
+0.484645
+0.742623
+0.555355
+0.884044
+0.496667
+0.763333
+0.596667
+0.863333
+0.475956
+0.742623
+0.617377
+0.884044
+0.475956
+0.777978
+0.617377
+0.848689
+0.511311
+0.742623
+0.582022
+0.884044
+0.523333
+0.763333
+0.623333
+0.863333
+0.502623
+0.742623
+0.644044
+0.884044
+0.502623
+0.777978
+0.644044
+0.848689
+0.537978
+0.742623
+0.608689
+0.884044
+0.550000
+0.763333
+0.650000
+0.863333
+0.529289
+0.742623
+0.670711
+0.884044
+0.529289
+0.777978
+0.670711
+0.848689
+0.564645
+0.742623
+0.635355
+0.884044
+0.576667
+0.763333
+0.676667
+0.863333
+0.555956
+0.742623
+0.697377
+0.884044
+0.555956
+0.777978
+0.697377
+0.848689
+0.591311
+0.742623
+0.662022
+0.884044
+0.603333
+0.763333
+0.703333
+0.863333
+0.582623
+0.742623
+0.724044
+0.884044
+0.582623
+0.777978
+0.724044
+0.848689
+0.617978
+0.742623
+0.688689
+0.884044
+0.630000
+0.763333
+0.730000
+0.863333
+0.609289
+0.742623
+0.750711
+0.884044
+0.609289
+0.777978
+0.750711
+0.848689
+0.644645
+0.742623
+0.715355
+0.884044
+0.656667
+0.763333
+0.756667
+0.863333
+0.635956
+0.742623
+0.777377
+0.884044
+0.635956
+0.777978
+0.777377
+0.848689
+0.671311
+0.742623
+0.742022
+0.884044
+0.683333
+0.763333
+0.783333
+0.863333
+0.662623
+0.742623
+0.804044
+0.884044
+0.662623
+0.777978
+0.804044
+0.848689
+0.697978
+0.742623
+0.768689
+0.884044
+0.710000
+0.763333
+0.810000
+0.863333
+0.689289
+0.742623
+0.830711
+0.884044
+0.689289
+0.777978
+0.830711
+0.848689
+0.724645
+0.742623
+0.795355
+0.884044
+0.736667
+0.763333
+0.836667
+0.863333
+0.715956
+0.742623
+0.857377
+0.884044
+0.715956
+0.777978
+0.857377
+0.848689
+0.751311
+0.742623
+0.822022
+0.884044
+0.763333
+0.763333
+0.863333
+0.863333
+0.742623
+0.742623
+0.884044
+0.884044
+0.742623
+0.777978
+0.884044
+0.848689
+0.777978
+0.742623
+0.848689
+0.884044
+0.790000
+0.763333
+0.890000
+0.863333
+0.769289
+0.742623
+0.910711
+0.884044
+0.769289
+0.777978
+0.910711
+0.848689
+0.804645
+0.742623
+0.875355
+0.884044
+0.816667
+0.763333
+0.916667
+0.863333
+0.795956
+0.742623
+0.937377
+0.884044
+0.795956
+0.777978
+0.937377
+0.848689
+0.831311
+0.742623
+0.902022
+0.884044
+0.843333
+0.763333
+0.943333
+0.863333
+0.822623
+0.742623
+0.964044
+0.884044
+0.822623
+0.777978
+0.964044
+0.848689
+0.857978
+0.742623
+0.928689
+0.884044
+0.870000
+0.763333
+0.970000
+0.863333
+0.849289
+0.742623
+0.990711
+0.884044
+0.849289
+0.777978
+0.990711
+0.848689
+0.884645
+0.742623
+0.955355
+0.884044
+0.896667
+0.763333
+0.996667
+0.863333
+0.875956
+0.742623
+1.017377
+0.884044
+0.875956
+0.777978
+1.017377
+0.848689
+0.911311
+0.742623
+0.982022
+0.884044
+0.923333
+0.763333
+1.023333
+0.863333
+0.902623
+0.742623
+1.044044
+0.884044
+0.902623
+0.777978
+1.044044
+0.848689
+0.937978
+0.742623
+1.008689
+0.884044
+0.950000
+0.763333
+1.050000
+0.863333
+0.929289
+0.742623
+1.070711
+0.884044
+0.929289
+0.777978
+1.070711
+0.848689
+0.964645
+0.742623
+1.035355
+0.884044
+-0.036667
+0.790000
+0.063333
+0.890000
+-0.057377
+0.769289
+0.084044
+0.910711
+-0.057377
+0.804645
+0.084044
+0.875355
+-0.022022
+0.769289
+0.048689
+0.910711
+-0.010000
+0.790000
+0.090000
+0.890000
+-0.030711
+0.769289
+0.110711
+0.910711
+-0.030711
+0.804645
+0.110711
+0.875355
+0.004645
+0.769289
+0.075355
+0.910711
+0.016667
+0.790000
+0.116667
+0.890000
+-0.004044
+0.769289
+0.137377
+0.910711
+-0.004044
+0.804645
+0.137377
+0.875355
+0.031311
+0.769289
+0.102022
+0.910711
+0.043333
+0.790000
+0.143333
+0.890000
+0.022623
+0.769289
+0.164044
+0.910711
+0.022623
+0.804645
+0.164044
+0.875355
+0.057978
+0.769289
+0.128689
+0.910711
+0.070000
+0.790000
+0.170000
+0.890000
+0.049289
+0.769289
+0.190711
+0.910711
+0.049289
+0.804645
+0.190711
+0.875355
+0.084645
+0.769289
+0.155355
+0.910711
+0.096667
+0.790000
+0.196667
+0.890000
+0.075956
+0.769289
+0.217377
+0.910711
+0.075956
+0.804645
+0.217377
+0.875355
+0.111311
+0.769289
+0.182022
+0.910711
+0.123333
+0.790000
+0.223333
+0.890000
+0.102623
+0.769289
+0.244044
+0.910711
+0.102623
+0.804645
+0.244044
+0.875355
+0.137978
+0.769289
+0.208689
+0.910711
+0.150000
+0.790000
+0.250000
+0.890000
+0.129289
+0.769289
+0.270711
+0.910711
+0.129289
+0.804645
+0.270711
+0.875355
+0.164645
+0.769289
+0.235355
+0.910711
+0.176667
+0.790000
+0.276667
+0.890000
+0.155956
+0.769289
+0.297377
+0.910711
+0.155956
+0.804645
+0.297377
+0.875355
+0.191311
+0.769289
+0.262022
+0.910711
+0.203333
+0.790000
+0.303333
+0.890000
+0.182623
+0.769289
+0.324044
+0.910711
+0.182623
+0.804645
+0.324044
+0.875355
+0.217978
+0.769289
+0.288689
+0.910711
+0.230000
+0.790000
+0.330000
+0.890000
+0.209289
+0.769289
+0.350711
+0.910711
+0.209289
+0.804645
+0.350711
+0.875355
+0.244645
+0.769289
+0.315355
+0.910711
+0.256667
+0.790000
+0.356667
+0.890000
+0.235956
+0.769289
+0.377377
+0.910711
+0.235956
+0.804645
+0.377377
+0.875355
+0.271311
+0.769289
+0.342022
+0.910711
+0.283333
+0.790000
+0.383333
+0.890000
+0.262623
+0.769289
+0.404044
+0.910711
+0.262623
+0.804645
+0.404044
+0.875355
+0.297978
+0.769289
+0.368689
+0.910711
+0.310000
+0.790000
+0.410000
+0.890000
+0.289289
+0.769289
+0.430711
+0.910711
+0.289289
+0.804645
+0.430711
+0.875355
+0.324645
+0.769289
+0.395355
+0.910711
+0.336667
+0.790000
+0.436667
+0.890000
+0.315956
+0.769289
+0.457377
+0.910711
+0.315956
+0.804645
+0.457377
+0.875355
+0.351311
+0.769289
+0.422022
+0.910711
+0.363333
+0.790000
+0.463333
+0.890000
+0.342623
+0.769289
+0.484044
+0.910711
+0.342623
+0.804645
+0.484044
+0.875355
+0.377978
+0.769289
+0.448689
+0.910711
+0.390000
+0.790000
+0.490000
+0.890000
+0.369289
+0.769289
+0.510711
+0.910711
+0.369289
+0.804645
+0.510711
+0.875355
+0.404645
+0.769289
+0.475355
+0.910711
+0.416667
+0.790000
+0.516667
+0.890000
+0.395956
+0.769289
+0.537377
+0.910711
+0.395956
+0.804645
+0.537377
+0.875355
+0.431311
+0.769289
+0.502022
+0.910711
+0.443333
+0.790000
+0.543333
+0.890000
+0.422623
+0.769289
+0.564044
+0.910711
+0.422623
+0.804645
+0.564044
+0.875355
+0.457978
+0.769289
+0.528689
+0.910711
+0.470000
+0.790000
+0.570000
+0.890000
+0.449289
+0.769289
+0.590711
+0.910711
+0.449289
+0.804645
+0.590711
+0.875355
+0.484645
+0.769289
+0.555355
+0.910711
+0.496667
+0.790000
+0.596667
+0.890000
+0.475956
+0.769289
+0.617377
+0.910711
+0.475956
+0.804645
+0.617377
+0.875355
+0.511311
+0.769289
+0.582022
+0.910711
+0.523333
+0.790000
+0.623333
+0.890000
+0.502623
+0.769289
+0.644044
+0.910711
+0.502623
+0.804645
+0.644044
+0.875355
+0.537978
+0.769289
+0.608689
+0.910711
+0.550000
+0.790000
+0.650000
+0.890000
+0.529289
+0.769289
+0.670711
+0.910711
+0.529289
+0.804645
+0.670711
+0.875355
+0.564645
+0.769289
+0.635355
+0.910711
+0.576667
+0.790000
+0.676667
+0.890000
+0.555956
+0.769289
+0.697377
+0.910711
+0.555956
+0.804645
+0.697377
+0.875355
+0.591311
+0.769289
+0.662022
+0.910711
+0.603333
+0.790000
+0.703333
+0.890000
+0.582623
+0.769289
+0.724044
+0.910711
+0.582623
+0.804645
+0.724044
+0.875355
+0.617978
+0.769289
+0.688689
+0.910711
+0.630000
+0.790000
+0.730000
+0.890000
+0.609289
+0.769289
+0.750711
+0.910711
+0.609289
+0.804645
+0.750711
+0.875355
+0.644645
+0.769289
+0.715355
+0.910711
+0.656667
+0.790000
+0.756667
+0.890000
+0.635956
+0.769289
+0.777377
+0.910711
+0.635956
+0.804645
+0.777377
+0.875355
+0.671311
+0.769289
+0.742022
+0.910711
+0.683333
+0.790000
+0.783333
+0.890000
+0.662623
+0.769289
+0.804044
+0.910711
+0.662623
+0.804645
+0.804044
+0.875355
+0.697978
+0.769289
+0.768689
+0.910711
+0.710000
+0.790000
+0.810000
+0.890000
+0.689289
+0.769289
+0.830711
+0.910711
+0.689289
+0.804645
+0.830711
+0.875355
+0.724645
+0.769289
+0.795355
+0.910711
+0.736667
+0.790000
+0.836667
+0.890000
+0.715956
+0.769289
+0.857377
+0.910711
+0.715956
+0.804645
+0.857377
+0.875355
+0.751311
+0.769289
+0.822022
+0.910711
+0.763333
+0.790000
+0.863333
+0.890000
+0.742623
+0.769289
+0.884044
+0.910711
+0.742623
+0.804645
+0.884044
+0.875355
+0.777978
+0.769289
+0.848689
+0.910711
+0.790000
+0.790000
+0.890000
+0.890000
+0.769289
+0.769289
+0.910711
+0.910711
+0.769289
+0.804645
+0.910711
+0.875355
+0.804645
+0.769289
+0.875355
+0.910711
+0.816667
+0.790000
+0.916667
+0.890000
+0.795956
+0.769289
+0.937377
+0.910711
+0.795956
+0.804645
+0.937377
+0.875355
+0.831311
+0.769289
+0.902022
+0.910711
+0.843333
+0.790000
+0.943333
+0.890000
+0.822623
+0.769289
+0.964044
+0.910711
+0.822623
+0.804645
+0.964044
+0.875355
+0.857978
+0.769289
+0.928689
+0.910711
+0.870000
+0.790000
+0.970000
+0.890000
+0.849289
+0.769289
+0.990711
+0.910711
+0.849289
+0.804645
+0.990711
+0.875355
+0.884645
+0.769289
+0.955355
+0.910711
+0.896667
+0.790000
+0.996667
+0.890000
+0.875956
+0.769289
+1.017377
+0.910711
+0.875956
+0.804645
+1.017377
+0.875355
+0.911311
+0.769289
+0.982022
+0.910711
+0.923333
+0.790000
+1.023333
+0.890000
+0.902623
+0.769289
+1.044044
+0.910711
+0.902623
+0.804645
+1.044044
+0.875355
+0.937978
+0.769289
+1.008689
+0.910711
+0.950000
+0.790000
+1.050000
+0.890000
+0.929289
+0.769289
+1.070711
+0.910711
+0.929289
+0.804645
+1.070711
+0.875355
+0.964645
+0.769289
+1.035355
+0.910711
+-0.036667
+0.816667
+0.063333
+0.916667
+-0.057377
+0.795956
+0.084044
+0.937377
+-0.057377
+0.831311
+0.084044
+0.902022
+-0.022022
+0.795956
+0.048689
+0.937377
+-0.010000
+0.816667
+0.090000
+0.916667
+-0.030711
+0.795956
+0.110711
+0.937377
+-0.030711
+0.831311
+0.110711
+0.902022
+0.004645
+0.795956
+0.075355
+0.937377
+0.016667
+0.816667
+0.116667
+0.916667
+-0.004044
+0.795956
+0.137377
+0.937377
+-0.004044
+0.831311
+0.137377
+0.902022
+0.031311
+0.795956
+0.102022
+0.937377
+0.043333
+0.816667
+0.143333
+0.916667
+0.022623
+0.795956
+0.164044
+0.937377
+0.022623
+0.831311
+0.164044
+0.902022
+0.057978
+0.795956
+0.128689
+0.937377
+0.070000
+0.816667
+0.170000
+0.916667
+0.049289
+0.795956
+0.190711
+0.937377
+0.049289
+0.831311
+0.190711
+0.902022
+0.084645
+0.795956
+0.155355
+0.937377
+0.096667
+0.816667
+0.196667
+0.916667
+0.075956
+0.795956
+0.217377
+0.937377
+0.075956
+0.831311
+0.217377
+0.902022
+0.111311
+0.795956
+0.182022
+0.937377
+0.123333
+0.816667
+0.223333
+0.916667
+0.102623
+0.795956
+0.244044
+0.937377
+0.102623
+0.831311
+0.244044
+0.902022
+0.137978
+0.795956
+0.208689
+0.937377
+0.150000
+0.816667
+0.250000
+0.916667
+0.129289
+0.795956
+0.270711
+0.937377
+0.129289
+0.831311
+0.270711
+0.902022
+0.164645
+0.795956
+0.235355
+0.937377
+0.176667
+0.816667
+0.276667
+0.916667
+0.155956
+0.795956
+0.297377
+0.937377
+0.155956
+0.831311
+0.297377
+0.902022
+0.191311
+0.795956
+0.262022
+0.937377
+0.203333
+0.816667
+0.303333
+0.916667
+0.182623
+0.795956
+0.324044
+0.937377
+0.182623
+0.831311
+0.324044
+0.902022
+0.217978
+0.795956
+0.288689
+0.937377
+0.230000
+0.816667
+0.330000
+0.916667
+0.209289
+0.795956
+0.350711
+0.937377
+0.209289
+0.831311
+0.350711
+0.902022
+0.244645
+0.795956
+0.315355
+0.937377
+0.256667
+0.816667
+0.356667
+0.916667
+0.235956
+0.795956
+0.377377
+0.937377
+0.235956
+0.831311
+0.377377
+0.902022
+0.271311
+0.795956
+0.342022
+0.937377
+0.283333
+0.816667
+0.383333
+0.916667
+0.262623
+0.795956
+0.404044
+0.937377
+0.262623
+0.831311
+0.404044
+0.902022
+0.297978
+0.795956
+0.368689
+0.937377
+0.310000
+0.816667
+0.410000
+0.916667
+0.289289
+0.795956
+0.430711
+0.937377
+0.289289
+0.831311
+0.430711
+0.902022
+0.324645
+0.795956
+0.395355
+0.937377
+0.336667
+0.816667
+0.436667
+0.916667
+0.315956
+0.795956
+0.457377
+0.937377
+0.315956
+0.831311
+0.457377
+0.902022
+0.351311
+0.795956
+0.422022
+0.937377
+0.363333
+0.816667
+0.463333
+0.916667
+0.342623
+0.795956
+0.484044
+0.937377
+0.342623
+0.831311
+0.484044
+0.902022
+0.377978
+0.795956
+0.448689
+0.937377
+0.390000
+0.816667
+0.490000
+0.916667
+0.369289
+0.795956
+0.510711
+0.937377
+0.369289
+0.831311
+0.510711
+0.902022
+0.404645
+0.795956
+0.475355
+0.937377
+0.416667
+0.816667
+0.516667
+0.916667
+0.395956
+0.795956
+0.537377
+0.937377
+0.395956
+0.831311
+0.537377
+0.902022
+0.431311
+0.795956
+0.502022
+0.937377
+0.443333
+0.816667
+0.543333
+0.916667
+0.422623
+0.795956
+0.564044
+0.937377
+0.422623
+0.831311
+0.564044
+0.902022
+0.457978
+0.795956
+0.528689
+0.937377
+0.470000
+0.816667
+0.570000
+0.916667
+0.449289
+0.795956
+0.590711
+0.937377
+0.449289
+0.831311
+0.590711
+0.902022
+0.484645
+0.795956
+0.555355
+0.937377
+0.496667
+0.816667
+0.596667
+0.916667
+0.475956
+0.795956
+0.617377
+0.937377
+0.475956
+0.831311
+0.617377
+0.902022
+0.511311
+0.795956
+0.582022
+0.937377
+0.523333
+0.816667
+0.623333
+0.916667
+0.502623
+0.795956
+0.644044
+0.937377
+0.502623
+0.831311
+0.644044
+0.902022
+0.537978
+0.795956
+0.608689
+0.937377
+0.550000
+0.816667
+0.650000
+0.916667
+0.529289
+0.795956
+0.670711
+0.937377
+0.529289
+0.831311
+0.670711
+0.902022
+0.564645
+0.795956
+0.635355
+0.937377
+0.576667
+0.816667
+0.676667
+0.916667
+0.555956
+0.795956
+0.697377
+0.937377
+0.555956
+0.831311
+0.697377
+0.902022
+0.591311
+0.795956
+0.662022
+0.937377
+0.603333
+0.816667
+0.703333
+0.916667
+0.582623
+0.795956
+0.724044
+0.937377
+0.582623
+0.831311
+0.724044
+0.902022
+0.617978
+0.795956
+0.688689
+0.937377
+0.630000
+0.816667
+0.730000
+0.916667
+0.609289
+0.795956
+0.750711
+0.937377
+0.609289
+0.831311
+0.750711
+0.902022
+0.644645
+0.795956
+0.715355
+0.937377
+0.656667
+0.816667
+0.756667
+0.916667
+0.635956
+0.795956
+0.777377
+0.937377
+0.635956
+0.831311
+0.777377
+0.902022
+0.671311
+0.795956
+0.742022
+0.937377
+0.683333
+0.816667
+0.783333
+0.916667
+0.662623
+0.795956
+0.804044
+0.937377
+0.662623
+0.831311
+0.804044
+0.902022
+0.697978
+0.795956
+0.768689
+0.937377
+0.710000
+0.816667
+0.810000
+0.916667
+0.689289
+0.795956
+0.830711
+0.937377
+0.689289
+0.831311
+0.830711
+0.902022
+0.724645
+0.795956
+0.795355
+0.937377
+0.736667
+0.816667
+0.836667
+0.916667
+0.715956
+0.795956
+0.857377
+0.937377
+0.715956
+0.831311
+0.857377
+0.902022
+0.751311
+0.795956
+0.822022
+0.937377
+0.763333
+0.816667
+0.863333
+0.916667
+0.742623
+0.795956
+0.884044
+0.937377
+0.742623
+0.831311
+0.884044
+0.902022
+0.777978
+0.795956
+0.848689
+0.937377
+0.790000
+0.816667
+0.890000
+0.916667
+0.769289
+0.795956
+0.910711
+0.937377
+0.769289
+0.831311
+0.910711
+0.902022
+0.804645
+0.795956
+0.875355
+0.937377
+0.816667
+0.816667
+0.916667
+0.916667
+0.795956
+0.795956
+0.937377
+0.937377
+0.795956
+0.831311
+0.937377
+0.902022
+0.831311
+0.795956
+0.902022
+0.937377
+0.843333
+0.816667
+0.943333
+0.916667
+0.822623
+0.795956
+0.964044
+0.937377
+0.822623
+0.831311
+0.964044
+0.902022
+0.857978
+0.795956
+0.928689
+0.937377
+0.870000
+0.816667
+0.970000
+0.916667
+0.849289
+0.795956
+0.990711
+0.937377
+0.849289
+0.831311
+0.990711
+0.902022
+0.884645
+0.795956
+0.955355
+0.937377
+0.896667
+0.816667
+0.996667
+0.916667
+0.875956
+0.795956
+1.017377
+0.937377
+0.875956
+0.831311
+1.017377
+0.902022
+0.911311
+0.795956
+0.982022
+0.937377
+0.923333
+0.816667
+1.023333
+0.916667
+0.902623
+0.795956
+1.044044
+0.937377
+0.902623
+0.831311
+1.044044
+0.902022
+0.937978
+0.795956
+1.008689
+0.937377
+0.950000
+0.816667
+1.050000
+0.916667
+0.929289
+0.795956
+1.070711
+0.937377
+0.929289
+0.831311
+1.070711
+0.902022
+0.964645
+0.795956
+1.035355
+0.937377
+-0.036667
+0.843333
+0.063333
+0.943333
+-0.057377
+0.822623
+0.084044
+0.964044
+-0.057377
+0.857978
+0.084044
+0.928689
+-0.022022
+0.822623
+0.048689
+0.964044
+-0.010000
+0.843333
+0.090000
+0.943333
+-0.030711
+0.822623
+0.110711
+0.964044
+-0.030711
+0.857978
+0.110711
+0.928689
+0.004645
+0.822623
+0.075355
+0.964044
+0.016667
+0.843333
+0.116667
+0.943333
+-0.004044
+0.822623
+0.137377
+0.964044
+-0.004044
+0.857978
+0.137377
+0.928689
+0.031311
+0.822623
+0.102022
+0.964044
+0.043333
+0.843333
+0.143333
+0.943333
+0.022623
+0.822623
+0.164044
+0.964044
+0.022623
+0.857978
+0.164044
+0.928689
+0.057978
+0.822623
+0.128689
+0.964044
+0.070000
+0.843333
+0.170000
+0.943333
+0.049289
+0.822623
+0.190711
+0.964044
+0.049289
+0.857978
+0.190711
+0.928689
+0.084645
+0.822623
+0.155355
+0.964044
+0.096667
+0.843333
+0.196667
+0.943333
+0.075956
+0.822623
+0.217377
+0.964044
+0.075956
+0.857978
+0.217377
+0.928689
+0.111311
+0.822623
+0.182022
+0.964044
+0.123333
+0.843333
+0.223333
+0.943333
+0.102623
+0.822623
+0.244044
+0.964044
+0.102623
+0.857978
+0.244044
+0.928689
+0.137978
+0.822623
+0.208689
+0.964044
+0.150000
+0.843333
+0.250000
+0.943333
+0.129289
+0.822623
+0.270711
+0.964044
+0.129289
+0.857978
+0.270711
+0.928689
+0.164645
+0.822623
+0.235355
+0.964044
+0.176667
+0.843333
+0.276667
+0.943333
+0.155956
+0.822623
+0.297377
+0.964044
+0.155956
+0.857978
+0.297377
+0.928689
+0.191311
+0.822623
+0.262022
+0.964044
+0.203333
+0.843333
+0.303333
+0.943333
+0.182623
+0.822623
+0.324044
+0.964044
+0.182623
+0.857978
+0.324044
+0.928689
+0.217978
+0.822623
+0.288689
+0.964044
+0.230000
+0.843333
+0.330000
+0.943333
+0.209289
+0.822623
+0.350711
+0.964044
+0.209289
+0.857978
+0.350711
+0.928689
+0.244645
+0.822623
+0.315355
+0.964044
+0.256667
+0.843333
+0.356667
+0.943333
+0.235956
+0.822623
+0.377377
+0.964044
+0.235956
+0.857978
+0.377377
+0.928689
+0.271311
+0.822623
+0.342022
+0.964044
+0.283333
+0.843333
+0.383333
+0.943333
+0.262623
+0.822623
+0.404044
+0.964044
+0.262623
+0.857978
+0.404044
+0.928689
+0.297978
+0.822623
+0.368689
+0.964044
+0.310000
+0.843333
+0.410000
+0.943333
+0.289289
+0.822623
+0.430711
+0.964044
+0.289289
+0.857978
+0.430711
+0.928689
+0.324645
+0.822623
+0.395355
+0.964044
+0.336667
+0.843333
+0.436667
+0.943333
+0.315956
+0.822623
+0.457377
+0.964044
+0.315956
+0.857978
+0.457377
+0.928689
+0.351311
+0.822623
+0.422022
+0.964044
+0.363333
+0.843333
+0.463333
+0.943333
+0.342623
+0.822623
+0.484044
+0.964044
+0.342623
+0.857978
+0.484044
+0.928689
+0.377978
+0.822623
+0.448689
+0.964044
+0.390000
+0.843333
+0.490000
+0.943333
+0.369289
+0.822623
+0.510711
+0.964044
+0.369289
+0.857978
+0.510711
+0.928689
+0.404645
+0.822623
+0.475355
+0.964044
+0.416667
+0.843333
+0.516667
+0.943333
+0.395956
+0.822623
+0.537377
+0.964044
+0.395956
+0.857978
+0.537377
+0.928689
+0.431311
+0.822623
+0.502022
+0.964044
+0.443333
+0.843333
+0.543333
+0.943333
+0.422623
+0.822623
+0.564044
+0.964044
+0.422623
+0.857978
+0.564044
+0.928689
+0.457978
+0.822623
+0.528689
+0.964044
+0.470000
+0.843333
+0.570000
+0.943333
+0.449289
+0.822623
+0.590711
+0.964044
+0.449289
+0.857978
+0.590711
+0.928689
+0.484645
+0.822623
+0.555355
+0.964044
+0.496667
+0.843333
+0.596667
+0.943333
+0.475956
+0.822623
+0.617377
+0.964044
+0.475956
+0.857978
+0.617377
+0.928689
+0.511311
+0.822623
+0.582022
+0.964044
+0.523333
+0.843333
+0.623333
+0.943333
+0.502623
+0.822623
+0.644044
+0.964044
+0.502623
+0.857978
+0.644044
+0.928689
+0.537978
+0.822623
+0.608689
+0.964044
+0.550000
+0.843333
+0.650000
+0.943333
+0.529289
+0.822623
+0.670711
+0.964044
+0.529289
+0.857978
+0.670711
+0.928689
+0.564645
+0.822623
+0.635355
+0.964044
+0.576667
+0.843333
+0.676667
+0.943333
+0.555956
+0.822623
+0.697377
+0.964044
+0.555956
+0.857978
+0.697377
+0.928689
+0.591311
+0.822623
+0.662022
+0.964044
+0.603333
+0.843333
+0.703333
+0.943333
+0.582623
+0.822623
+0.724044
+0.964044
+0.582623
+0.857978
+0.724044
+0.928689
+0.617978
+0.822623
+0.688689
+0.964044
+0.630000
+0.843333
+0.730000
+0.943333
+0.609289
+0.822623
+0.750711
+0.964044
+0.609289
+0.857978
+0.750711
+0.928689
+0.644645
+0.822623
+0.715355
+0.964044
+0.656667
+0.843333
+0.756667
+0.943333
+0.635956
+0.822623
+0.777377
+0.964044
+0.635956
+0.857978
+0.777377
+0.928689
+0.671311
+0.822623
+0.742022
+0.964044
+0.683333
+0.843333
+0.783333
+0.943333
+0.662623
+0.822623
+0.804044
+0.964044
+0.662623
+0.857978
+0.804044
+0.928689
+0.697978
+0.822623
+0.768689
+0.964044
+0.710000
+0.843333
+0.810000
+0.943333
+0.689289
+0.822623
+0.830711
+0.964044
+0.689289
+0.857978
+0.830711
+0.928689
+0.724645
+0.822623
+0.795355
+0.964044
+0.736667
+0.843333
+0.836667
+0.943333
+0.715956
+0.822623
+0.857377
+0.964044
+0.715956
+0.857978
+0.857377
+0.928689
+0.751311
+0.822623
+0.822022
+0.964044
+0.763333
+0.843333
+0.863333
+0.943333
+0.742623
+0.822623
+0.884044
+0.964044
+0.742623
+0.857978
+0.884044
+0.928689
+0.777978
+0.822623
+0.848689
+0.964044
+0.790000
+0.843333
+0.890000
+0.943333
+0.769289
+0.822623
+0.910711
+0.964044
+0.769289
+0.857978
+0.910711
+0.928689
+0.804645
+0.822623
+0.875355
+0.964044
+0.816667
+0.843333
+0.916667
+0.943333
+0.795956
+0.822623
+0.937377
+0.964044
+0.795956
+0.857978
+0.937377
+0.928689
+0.831311
+0.822623
+0.902022
+0.964044
+0.843333
+0.843333
+0.943333
+0.943333
+0.822623
+0.822623
+0.964044
+0.964044
+0.822623
+0.857978
+0.964044
+0.928689
+0.857978
+0.822623
+0.928689
+0.964044
+0.870000
+0.843333
+0.970000
+0.943333
+0.849289
+0.822623
+0.990711
+0.964044
+0.849289
+0.857978
+0.990711
+0.928689
+0.884645
+0.822623
+0.955355
+0.964044
+0.896667
+0.843333
+0.996667
+0.943333
+0.875956
+0.822623
+1.017377
+0.964044
+0.875956
+0.857978
+1.017377
+0.928689
+0.911311
+0.822623
+0.982022
+0.964044
+0.923333
+0.843333
+1.023333
+0.943333
+0.902623
+0.822623
+1.044044
+0.964044
+0.902623
+0.857978
+1.044044
+0.928689
+0.937978
+0.822623
+1.008689
+0.964044
+0.950000
+0.843333
+1.050000
+0.943333
+0.929289
+0.822623
+1.070711
+0.964044
+0.929289
+0.857978
+1.070711
+0.928689
+0.964645
+0.822623
+1.035355
+0.964044
+-0.036667
+0.870000
+0.063333
+0.970000
+-0.057377
+0.849289
+0.084044
+0.990711
+-0.057377
+0.884645
+0.084044
+0.955355
+-0.022022
+0.849289
+0.048689
+0.990711
+-0.010000
+0.870000
+0.090000
+0.970000
+-0.030711
+0.849289
+0.110711
+0.990711
+-0.030711
+0.884645
+0.110711
+0.955355
+0.004645
+0.849289
+0.075355
+0.990711
+0.016667
+0.870000
+0.116667
+0.970000
+-0.004044
+0.849289
+0.137377
+0.990711
+-0.004044
+0.884645
+0.137377
+0.955355
+0.031311
+0.849289
+0.102022
+0.990711
+0.043333
+0.870000
+0.143333
+0.970000
+0.022623
+0.849289
+0.164044
+0.990711
+0.022623
+0.884645
+0.164044
+0.955355
+0.057978
+0.849289
+0.128689
+0.990711
+0.070000
+0.870000
+0.170000
+0.970000
+0.049289
+0.849289
+0.190711
+0.990711
+0.049289
+0.884645
+0.190711
+0.955355
+0.084645
+0.849289
+0.155355
+0.990711
+0.096667
+0.870000
+0.196667
+0.970000
+0.075956
+0.849289
+0.217377
+0.990711
+0.075956
+0.884645
+0.217377
+0.955355
+0.111311
+0.849289
+0.182022
+0.990711
+0.123333
+0.870000
+0.223333
+0.970000
+0.102623
+0.849289
+0.244044
+0.990711
+0.102623
+0.884645
+0.244044
+0.955355
+0.137978
+0.849289
+0.208689
+0.990711
+0.150000
+0.870000
+0.250000
+0.970000
+0.129289
+0.849289
+0.270711
+0.990711
+0.129289
+0.884645
+0.270711
+0.955355
+0.164645
+0.849289
+0.235355
+0.990711
+0.176667
+0.870000
+0.276667
+0.970000
+0.155956
+0.849289
+0.297377
+0.990711
+0.155956
+0.884645
+0.297377
+0.955355
+0.191311
+0.849289
+0.262022
+0.990711
+0.203333
+0.870000
+0.303333
+0.970000
+0.182623
+0.849289
+0.324044
+0.990711
+0.182623
+0.884645
+0.324044
+0.955355
+0.217978
+0.849289
+0.288689
+0.990711
+0.230000
+0.870000
+0.330000
+0.970000
+0.209289
+0.849289
+0.350711
+0.990711
+0.209289
+0.884645
+0.350711
+0.955355
+0.244645
+0.849289
+0.315355
+0.990711
+0.256667
+0.870000
+0.356667
+0.970000
+0.235956
+0.849289
+0.377377
+0.990711
+0.235956
+0.884645
+0.377377
+0.955355
+0.271311
+0.849289
+0.342022
+0.990711
+0.283333
+0.870000
+0.383333
+0.970000
+0.262623
+0.849289
+0.404044
+0.990711
+0.262623
+0.884645
+0.404044
+0.955355
+0.297978
+0.849289
+0.368689
+0.990711
+0.310000
+0.870000
+0.410000
+0.970000
+0.289289
+0.849289
+0.430711
+0.990711
+0.289289
+0.884645
+0.430711
+0.955355
+0.324645
+0.849289
+0.395355
+0.990711
+0.336667
+0.870000
+0.436667
+0.970000
+0.315956
+0.849289
+0.457377
+0.990711
+0.315956
+0.884645
+0.457377
+0.955355
+0.351311
+0.849289
+0.422022
+0.990711
+0.363333
+0.870000
+0.463333
+0.970000
+0.342623
+0.849289
+0.484044
+0.990711
+0.342623
+0.884645
+0.484044
+0.955355
+0.377978
+0.849289
+0.448689
+0.990711
+0.390000
+0.870000
+0.490000
+0.970000
+0.369289
+0.849289
+0.510711
+0.990711
+0.369289
+0.884645
+0.510711
+0.955355
+0.404645
+0.849289
+0.475355
+0.990711
+0.416667
+0.870000
+0.516667
+0.970000
+0.395956
+0.849289
+0.537377
+0.990711
+0.395956
+0.884645
+0.537377
+0.955355
+0.431311
+0.849289
+0.502022
+0.990711
+0.443333
+0.870000
+0.543333
+0.970000
+0.422623
+0.849289
+0.564044
+0.990711
+0.422623
+0.884645
+0.564044
+0.955355
+0.457978
+0.849289
+0.528689
+0.990711
+0.470000
+0.870000
+0.570000
+0.970000
+0.449289
+0.849289
+0.590711
+0.990711
+0.449289
+0.884645
+0.590711
+0.955355
+0.484645
+0.849289
+0.555355
+0.990711
+0.496667
+0.870000
+0.596667
+0.970000
+0.475956
+0.849289
+0.617377
+0.990711
+0.475956
+0.884645
+0.617377
+0.955355
+0.511311
+0.849289
+0.582022
+0.990711
+0.523333
+0.870000
+0.623333
+0.970000
+0.502623
+0.849289
+0.644044
+0.990711
+0.502623
+0.884645
+0.644044
+0.955355
+0.537978
+0.849289
+0.608689
+0.990711
+0.550000
+0.870000
+0.650000
+0.970000
+0.529289
+0.849289
+0.670711
+0.990711
+0.529289
+0.884645
+0.670711
+0.955355
+0.564645
+0.849289
+0.635355
+0.990711
+0.576667
+0.870000
+0.676667
+0.970000
+0.555956
+0.849289
+0.697377
+0.990711
+0.555956
+0.884645
+0.697377
+0.955355
+0.591311
+0.849289
+0.662022
+0.990711
+0.603333
+0.870000
+0.703333
+0.970000
+0.582623
+0.849289
+0.724044
+0.990711
+0.582623
+0.884645
+0.724044
+0.955355
+0.617978
+0.849289
+0.688689
+0.990711
+0.630000
+0.870000
+0.730000
+0.970000
+0.609289
+0.849289
+0.750711
+0.990711
+0.609289
+0.884645
+0.750711
+0.955355
+0.644645
+0.849289
+0.715355
+0.990711
+0.656667
+0.870000
+0.756667
+0.970000
+0.635956
+0.849289
+0.777377
+0.990711
+0.635956
+0.884645
+0.777377
+0.955355
+0.671311
+0.849289
+0.742022
+0.990711
+0.683333
+0.870000
+0.783333
+0.970000
+0.662623
+0.849289
+0.804044
+0.990711
+0.662623
+0.884645
+0.804044
+0.955355
+0.697978
+0.849289
+0.768689
+0.990711
+0.710000
+0.870000
+0.810000
+0.970000
+0.689289
+0.849289
+0.830711
+0.990711
+0.689289
+0.884645
+0.830711
+0.955355
+0.724645
+0.849289
+0.795355
+0.990711
+0.736667
+0.870000
+0.836667
+0.970000
+0.715956
+0.849289
+0.857377
+0.990711
+0.715956
+0.884645
+0.857377
+0.955355
+0.751311
+0.849289
+0.822022
+0.990711
+0.763333
+0.870000
+0.863333
+0.970000
+0.742623
+0.849289
+0.884044
+0.990711
+0.742623
+0.884645
+0.884044
+0.955355
+0.777978
+0.849289
+0.848689
+0.990711
+0.790000
+0.870000
+0.890000
+0.970000
+0.769289
+0.849289
+0.910711
+0.990711
+0.769289
+0.884645
+0.910711
+0.955355
+0.804645
+0.849289
+0.875355
+0.990711
+0.816667
+0.870000
+0.916667
+0.970000
+0.795956
+0.849289
+0.937377
+0.990711
+0.795956
+0.884645
+0.937377
+0.955355
+0.831311
+0.849289
+0.902022
+0.990711
+0.843333
+0.870000
+0.943333
+0.970000
+0.822623
+0.849289
+0.964044
+0.990711
+0.822623
+0.884645
+0.964044
+0.955355
+0.857978
+0.849289
+0.928689
+0.990711
+0.870000
+0.870000
+0.970000
+0.970000
+0.849289
+0.849289
+0.990711
+0.990711
+0.849289
+0.884645
+0.990711
+0.955355
+0.884645
+0.849289
+0.955355
+0.990711
+0.896667
+0.870000
+0.996667
+0.970000
+0.875956
+0.849289
+1.017377
+0.990711
+0.875956
+0.884645
+1.017377
+0.955355
+0.911311
+0.849289
+0.982022
+0.990711
+0.923333
+0.870000
+1.023333
+0.970000
+0.902623
+0.849289
+1.044044
+0.990711
+0.902623
+0.884645
+1.044044
+0.955355
+0.937978
+0.849289
+1.008689
+0.990711
+0.950000
+0.870000
+1.050000
+0.970000
+0.929289
+0.849289
+1.070711
+0.990711
+0.929289
+0.884645
+1.070711
+0.955355
+0.964645
+0.849289
+1.035355
+0.990711
+-0.036667
+0.896667
+0.063333
+0.996667
+-0.057377
+0.875956
+0.084044
+1.017377
+-0.057377
+0.911311
+0.084044
+0.982022
+-0.022022
+0.875956
+0.048689
+1.017377
+-0.010000
+0.896667
+0.090000
+0.996667
+-0.030711
+0.875956
+0.110711
+1.017377
+-0.030711
+0.911311
+0.110711
+0.982022
+0.004645
+0.875956
+0.075355
+1.017377
+0.016667
+0.896667
+0.116667
+0.996667
+-0.004044
+0.875956
+0.137377
+1.017377
+-0.004044
+0.911311
+0.137377
+0.982022
+0.031311
+0.875956
+0.102022
+1.017377
+0.043333
+0.896667
+0.143333
+0.996667
+0.022623
+0.875956
+0.164044
+1.017377
+0.022623
+0.911311
+0.164044
+0.982022
+0.057978
+0.875956
+0.128689
+1.017377
+0.070000
+0.896667
+0.170000
+0.996667
+0.049289
+0.875956
+0.190711
+1.017377
+0.049289
+0.911311
+0.190711
+0.982022
+0.084645
+0.875956
+0.155355
+1.017377
+0.096667
+0.896667
+0.196667
+0.996667
+0.075956
+0.875956
+0.217377
+1.017377
+0.075956
+0.911311
+0.217377
+0.982022
+0.111311
+0.875956
+0.182022
+1.017377
+0.123333
+0.896667
+0.223333
+0.996667
+0.102623
+0.875956
+0.244044
+1.017377
+0.102623
+0.911311
+0.244044
+0.982022
+0.137978
+0.875956
+0.208689
+1.017377
+0.150000
+0.896667
+0.250000
+0.996667
+0.129289
+0.875956
+0.270711
+1.017377
+0.129289
+0.911311
+0.270711
+0.982022
+0.164645
+0.875956
+0.235355
+1.017377
+0.176667
+0.896667
+0.276667
+0.996667
+0.155956
+0.875956
+0.297377
+1.017377
+0.155956
+0.911311
+0.297377
+0.982022
+0.191311
+0.875956
+0.262022
+1.017377
+0.203333
+0.896667
+0.303333
+0.996667
+0.182623
+0.875956
+0.324044
+1.017377
+0.182623
+0.911311
+0.324044
+0.982022
+0.217978
+0.875956
+0.288689
+1.017377
+0.230000
+0.896667
+0.330000
+0.996667
+0.209289
+0.875956
+0.350711
+1.017377
+0.209289
+0.911311
+0.350711
+0.982022
+0.244645
+0.875956
+0.315355
+1.017377
+0.256667
+0.896667
+0.356667
+0.996667
+0.235956
+0.875956
+0.377377
+1.017377
+0.235956
+0.911311
+0.377377
+0.982022
+0.271311
+0.875956
+0.342022
+1.017377
+0.283333
+0.896667
+0.383333
+0.996667
+0.262623
+0.875956
+0.404044
+1.017377
+0.262623
+0.911311
+0.404044
+0.982022
+0.297978
+0.875956
+0.368689
+1.017377
+0.310000
+0.896667
+0.410000
+0.996667
+0.289289
+0.875956
+0.430711
+1.017377
+0.289289
+0.911311
+0.430711
+0.982022
+0.324645
+0.875956
+0.395355
+1.017377
+0.336667
+0.896667
+0.436667
+0.996667
+0.315956
+0.875956
+0.457377
+1.017377
+0.315956
+0.911311
+0.457377
+0.982022
+0.351311
+0.875956
+0.422022
+1.017377
+0.363333
+0.896667
+0.463333
+0.996667
+0.342623
+0.875956
+0.484044
+1.017377
+0.342623
+0.911311
+0.484044
+0.982022
+0.377978
+0.875956
+0.448689
+1.017377
+0.390000
+0.896667
+0.490000
+0.996667
+0.369289
+0.875956
+0.510711
+1.017377
+0.369289
+0.911311
+0.510711
+0.982022
+0.404645
+0.875956
+0.475355
+1.017377
+0.416667
+0.896667
+0.516667
+0.996667
+0.395956
+0.875956
+0.537377
+1.017377
+0.395956
+0.911311
+0.537377
+0.982022
+0.431311
+0.875956
+0.502022
+1.017377
+0.443333
+0.896667
+0.543333
+0.996667
+0.422623
+0.875956
+0.564044
+1.017377
+0.422623
+0.911311
+0.564044
+0.982022
+0.457978
+0.875956
+0.528689
+1.017377
+0.470000
+0.896667
+0.570000
+0.996667
+0.449289
+0.875956
+0.590711
+1.017377
+0.449289
+0.911311
+0.590711
+0.982022
+0.484645
+0.875956
+0.555355
+1.017377
+0.496667
+0.896667
+0.596667
+0.996667
+0.475956
+0.875956
+0.617377
+1.017377
+0.475956
+0.911311
+0.617377
+0.982022
+0.511311
+0.875956
+0.582022
+1.017377
+0.523333
+0.896667
+0.623333
+0.996667
+0.502623
+0.875956
+0.644044
+1.017377
+0.502623
+0.911311
+0.644044
+0.982022
+0.537978
+0.875956
+0.608689
+1.017377
+0.550000
+0.896667
+0.650000
+0.996667
+0.529289
+0.875956
+0.670711
+1.017377
+0.529289
+0.911311
+0.670711
+0.982022
+0.564645
+0.875956
+0.635355
+1.017377
+0.576667
+0.896667
+0.676667
+0.996667
+0.555956
+0.875956
+0.697377
+1.017377
+0.555956
+0.911311
+0.697377
+0.982022
+0.591311
+0.875956
+0.662022
+1.017377
+0.603333
+0.896667
+0.703333
+0.996667
+0.582623
+0.875956
+0.724044
+1.017377
+0.582623
+0.911311
+0.724044
+0.982022
+0.617978
+0.875956
+0.688689
+1.017377
+0.630000
+0.896667
+0.730000
+0.996667
+0.609289
+0.875956
+0.750711
+1.017377
+0.609289
+0.911311
+0.750711
+0.982022
+0.644645
+0.875956
+0.715355
+1.017377
+0.656667
+0.896667
+0.756667
+0.996667
+0.635956
+0.875956
+0.777377
+1.017377
+0.635956
+0.911311
+0.777377
+0.982022
+0.671311
+0.875956
+0.742022
+1.017377
+0.683333
+0.896667
+0.783333
+0.996667
+0.662623
+0.875956
+0.804044
+1.017377
+0.662623
+0.911311
+0.804044
+0.982022
+0.697978
+0.875956
+0.768689
+1.017377
+0.710000
+0.896667
+0.810000
+0.996667
+0.689289
+0.875956
+0.830711
+1.017377
+0.689289
+0.911311
+0.830711
+0.982022
+0.724645
+0.875956
+0.795355
+1.017377
+0.736667
+0.896667
+0.836667
+0.996667
+0.715956
+0.875956
+0.857377
+1.017377
+0.715956
+0.911311
+0.857377
+0.982022
+0.751311
+0.875956
+0.822022
+1.017377
+0.763333
+0.896667
+0.863333
+0.996667
+0.742623
+0.875956
+0.884044
+1.017377
+0.742623
+0.911311
+0.884044
+0.982022
+0.777978
+0.875956
+0.848689
+1.017377
+0.790000
+0.896667
+0.890000
+0.996667
+0.769289
+0.875956
+0.910711
+1.017377
+0.769289
+0.911311
+0.910711
+0.982022
+0.804645
+0.875956
+0.875355
+1.017377
+0.816667
+0.896667
+0.916667
+0.996667
+0.795956
+0.875956
+0.937377
+1.017377
+0.795956
+0.911311
+0.937377
+0.982022
+0.831311
+0.875956
+0.902022
+1.017377
+0.843333
+0.896667
+0.943333
+0.996667
+0.822623
+0.875956
+0.964044
+1.017377
+0.822623
+0.911311
+0.964044
+0.982022
+0.857978
+0.875956
+0.928689
+1.017377
+0.870000
+0.896667
+0.970000
+0.996667
+0.849289
+0.875956
+0.990711
+1.017377
+0.849289
+0.911311
+0.990711
+0.982022
+0.884645
+0.875956
+0.955355
+1.017377
+0.896667
+0.896667
+0.996667
+0.996667
+0.875956
+0.875956
+1.017377
+1.017377
+0.875956
+0.911311
+1.017377
+0.982022
+0.911311
+0.875956
+0.982022
+1.017377
+0.923333
+0.896667
+1.023333
+0.996667
+0.902623
+0.875956
+1.044044
+1.017377
+0.902623
+0.911311
+1.044044
+0.982022
+0.937978
+0.875956
+1.008689
+1.017377
+0.950000
+0.896667
+1.050000
+0.996667
+0.929289
+0.875956
+1.070711
+1.017377
+0.929289
+0.911311
+1.070711
+0.982022
+0.964645
+0.875956
+1.035355
+1.017377
+-0.036667
+0.923333
+0.063333
+1.023333
+-0.057377
+0.902623
+0.084044
+1.044044
+-0.057377
+0.937978
+0.084044
+1.008689
+-0.022022
+0.902623
+0.048689
+1.044044
+-0.010000
+0.923333
+0.090000
+1.023333
+-0.030711
+0.902623
+0.110711
+1.044044
+-0.030711
+0.937978
+0.110711
+1.008689
+0.004645
+0.902623
+0.075355
+1.044044
+0.016667
+0.923333
+0.116667
+1.023333
+-0.004044
+0.902623
+0.137377
+1.044044
+-0.004044
+0.937978
+0.137377
+1.008689
+0.031311
+0.902623
+0.102022
+1.044044
+0.043333
+0.923333
+0.143333
+1.023333
+0.022623
+0.902623
+0.164044
+1.044044
+0.022623
+0.937978
+0.164044
+1.008689
+0.057978
+0.902623
+0.128689
+1.044044
+0.070000
+0.923333
+0.170000
+1.023333
+0.049289
+0.902623
+0.190711
+1.044044
+0.049289
+0.937978
+0.190711
+1.008689
+0.084645
+0.902623
+0.155355
+1.044044
+0.096667
+0.923333
+0.196667
+1.023333
+0.075956
+0.902623
+0.217377
+1.044044
+0.075956
+0.937978
+0.217377
+1.008689
+0.111311
+0.902623
+0.182022
+1.044044
+0.123333
+0.923333
+0.223333
+1.023333
+0.102623
+0.902623
+0.244044
+1.044044
+0.102623
+0.937978
+0.244044
+1.008689
+0.137978
+0.902623
+0.208689
+1.044044
+0.150000
+0.923333
+0.250000
+1.023333
+0.129289
+0.902623
+0.270711
+1.044044
+0.129289
+0.937978
+0.270711
+1.008689
+0.164645
+0.902623
+0.235355
+1.044044
+0.176667
+0.923333
+0.276667
+1.023333
+0.155956
+0.902623
+0.297377
+1.044044
+0.155956
+0.937978
+0.297377
+1.008689
+0.191311
+0.902623
+0.262022
+1.044044
+0.203333
+0.923333
+0.303333
+1.023333
+0.182623
+0.902623
+0.324044
+1.044044
+0.182623
+0.937978
+0.324044
+1.008689
+0.217978
+0.902623
+0.288689
+1.044044
+0.230000
+0.923333
+0.330000
+1.023333
+0.209289
+0.902623
+0.350711
+1.044044
+0.209289
+0.937978
+0.350711
+1.008689
+0.244645
+0.902623
+0.315355
+1.044044
+0.256667
+0.923333
+0.356667
+1.023333
+0.235956
+0.902623
+0.377377
+1.044044
+0.235956
+0.937978
+0.377377
+1.008689
+0.271311
+0.902623
+0.342022
+1.044044
+0.283333
+0.923333
+0.383333
+1.023333
+0.262623
+0.902623
+0.404044
+1.044044
+0.262623
+0.937978
+0.404044
+1.008689
+0.297978
+0.902623
+0.368689
+1.044044
+0.310000
+0.923333
+0.410000
+1.023333
+0.289289
+0.902623
+0.430711
+1.044044
+0.289289
+0.937978
+0.430711
+1.008689
+0.324645
+0.902623
+0.395355
+1.044044
+0.336667
+0.923333
+0.436667
+1.023333
+0.315956
+0.902623
+0.457377
+1.044044
+0.315956
+0.937978
+0.457377
+1.008689
+0.351311
+0.902623
+0.422022
+1.044044
+0.363333
+0.923333
+0.463333
+1.023333
+0.342623
+0.902623
+0.484044
+1.044044
+0.342623
+0.937978
+0.484044
+1.008689
+0.377978
+0.902623
+0.448689
+1.044044
+0.390000
+0.923333
+0.490000
+1.023333
+0.369289
+0.902623
+0.510711
+1.044044
+0.369289
+0.937978
+0.510711
+1.008689
+0.404645
+0.902623
+0.475355
+1.044044
+0.416667
+0.923333
+0.516667
+1.023333
+0.395956
+0.902623
+0.537377
+1.044044
+0.395956
+0.937978
+0.537377
+1.008689
+0.431311
+0.902623
+0.502022
+1.044044
+0.443333
+0.923333
+0.543333
+1.023333
+0.422623
+0.902623
+0.564044
+1.044044
+0.422623
+0.937978
+0.564044
+1.008689
+0.457978
+0.902623
+0.528689
+1.044044
+0.470000
+0.923333
+0.570000
+1.023333
+0.449289
+0.902623
+0.590711
+1.044044
+0.449289
+0.937978
+0.590711
+1.008689
+0.484645
+0.902623
+0.555355
+1.044044
+0.496667
+0.923333
+0.596667
+1.023333
+0.475956
+0.902623
+0.617377
+1.044044
+0.475956
+0.937978
+0.617377
+1.008689
+0.511311
+0.902623
+0.582022
+1.044044
+0.523333
+0.923333
+0.623333
+1.023333
+0.502623
+0.902623
+0.644044
+1.044044
+0.502623
+0.937978
+0.644044
+1.008689
+0.537978
+0.902623
+0.608689
+1.044044
+0.550000
+0.923333
+0.650000
+1.023333
+0.529289
+0.902623
+0.670711
+1.044044
+0.529289
+0.937978
+0.670711
+1.008689
+0.564645
+0.902623
+0.635355
+1.044044
+0.576667
+0.923333
+0.676667
+1.023333
+0.555956
+0.902623
+0.697377
+1.044044
+0.555956
+0.937978
+0.697377
+1.008689
+0.591311
+0.902623
+0.662022
+1.044044
+0.603333
+0.923333
+0.703333
+1.023333
+0.582623
+0.902623
+0.724044
+1.044044
+0.582623
+0.937978
+0.724044
+1.008689
+0.617978
+0.902623
+0.688689
+1.044044
+0.630000
+0.923333
+0.730000
+1.023333
+0.609289
+0.902623
+0.750711
+1.044044
+0.609289
+0.937978
+0.750711
+1.008689
+0.644645
+0.902623
+0.715355
+1.044044
+0.656667
+0.923333
+0.756667
+1.023333
+0.635956
+0.902623
+0.777377
+1.044044
+0.635956
+0.937978
+0.777377
+1.008689
+0.671311
+0.902623
+0.742022
+1.044044
+0.683333
+0.923333
+0.783333
+1.023333
+0.662623
+0.902623
+0.804044
+1.044044
+0.662623
+0.937978
+0.804044
+1.008689
+0.697978
+0.902623
+0.768689
+1.044044
+0.710000
+0.923333
+0.810000
+1.023333
+0.689289
+0.902623
+0.830711
+1.044044
+0.689289
+0.937978
+0.830711
+1.008689
+0.724645
+0.902623
+0.795355
+1.044044
+0.736667
+0.923333
+0.836667
+1.023333
+0.715956
+0.902623
+0.857377
+1.044044
+0.715956
+0.937978
+0.857377
+1.008689
+0.751311
+0.902623
+0.822022
+1.044044
+0.763333
+0.923333
+0.863333
+1.023333
+0.742623
+0.902623
+0.884044
+1.044044
+0.742623
+0.937978
+0.884044
+1.008689
+0.777978
+0.902623
+0.848689
+1.044044
+0.790000
+0.923333
+0.890000
+1.023333
+0.769289
+0.902623
+0.910711
+1.044044
+0.769289
+0.937978
+0.910711
+1.008689
+0.804645
+0.902623
+0.875355
+1.044044
+0.816667
+0.923333
+0.916667
+1.023333
+0.795956
+0.902623
+0.937377
+1.044044
+0.795956
+0.937978
+0.937377
+1.008689
+0.831311
+0.902623
+0.902022
+1.044044
+0.843333
+0.923333
+0.943333
+1.023333
+0.822623
+0.902623
+0.964044
+1.044044
+0.822623
+0.937978
+0.964044
+1.008689
+0.857978
+0.902623
+0.928689
+1.044044
+0.870000
+0.923333
+0.970000
+1.023333
+0.849289
+0.902623
+0.990711
+1.044044
+0.849289
+0.937978
+0.990711
+1.008689
+0.884645
+0.902623
+0.955355
+1.044044
+0.896667
+0.923333
+0.996667
+1.023333
+0.875956
+0.902623
+1.017377
+1.044044
+0.875956
+0.937978
+1.017377
+1.008689
+0.911311
+0.902623
+0.982022
+1.044044
+0.923333
+0.923333
+1.023333
+1.023333
+0.902623
+0.902623
+1.044044
+1.044044
+0.902623
+0.937978
+1.044044
+1.008689
+0.937978
+0.902623
+1.008689
+1.044044
+0.950000
+0.923333
+1.050000
+1.023333
+0.929289
+0.902623
+1.070711
+1.044044
+0.929289
+0.937978
+1.070711
+1.008689
+0.964645
+0.902623
+1.035355
+1.044044
+-0.036667
+0.950000
+0.063333
+1.050000
+-0.057377
+0.929289
+0.084044
+1.070711
+-0.057377
+0.964645
+0.084044
+1.035355
+-0.022022
+0.929289
+0.048689
+1.070711
+-0.010000
+0.950000
+0.090000
+1.050000
+-0.030711
+0.929289
+0.110711
+1.070711
+-0.030711
+0.964645
+0.110711
+1.035355
+0.004645
+0.929289
+0.075355
+1.070711
+0.016667
+0.950000
+0.116667
+1.050000
+-0.004044
+0.929289
+0.137377
+1.070711
+-0.004044
+0.964645
+0.137377
+1.035355
+0.031311
+0.929289
+0.102022
+1.070711
+0.043333
+0.950000
+0.143333
+1.050000
+0.022623
+0.929289
+0.164044
+1.070711
+0.022623
+0.964645
+0.164044
+1.035355
+0.057978
+0.929289
+0.128689
+1.070711
+0.070000
+0.950000
+0.170000
+1.050000
+0.049289
+0.929289
+0.190711
+1.070711
+0.049289
+0.964645
+0.190711
+1.035355
+0.084645
+0.929289
+0.155355
+1.070711
+0.096667
+0.950000
+0.196667
+1.050000
+0.075956
+0.929289
+0.217377
+1.070711
+0.075956
+0.964645
+0.217377
+1.035355
+0.111311
+0.929289
+0.182022
+1.070711
+0.123333
+0.950000
+0.223333
+1.050000
+0.102623
+0.929289
+0.244044
+1.070711
+0.102623
+0.964645
+0.244044
+1.035355
+0.137978
+0.929289
+0.208689
+1.070711
+0.150000
+0.950000
+0.250000
+1.050000
+0.129289
+0.929289
+0.270711
+1.070711
+0.129289
+0.964645
+0.270711
+1.035355
+0.164645
+0.929289
+0.235355
+1.070711
+0.176667
+0.950000
+0.276667
+1.050000
+0.155956
+0.929289
+0.297377
+1.070711
+0.155956
+0.964645
+0.297377
+1.035355
+0.191311
+0.929289
+0.262022
+1.070711
+0.203333
+0.950000
+0.303333
+1.050000
+0.182623
+0.929289
+0.324044
+1.070711
+0.182623
+0.964645
+0.324044
+1.035355
+0.217978
+0.929289
+0.288689
+1.070711
+0.230000
+0.950000
+0.330000
+1.050000
+0.209289
+0.929289
+0.350711
+1.070711
+0.209289
+0.964645
+0.350711
+1.035355
+0.244645
+0.929289
+0.315355
+1.070711
+0.256667
+0.950000
+0.356667
+1.050000
+0.235956
+0.929289
+0.377377
+1.070711
+0.235956
+0.964645
+0.377377
+1.035355
+0.271311
+0.929289
+0.342022
+1.070711
+0.283333
+0.950000
+0.383333
+1.050000
+0.262623
+0.929289
+0.404044
+1.070711
+0.262623
+0.964645
+0.404044
+1.035355
+0.297978
+0.929289
+0.368689
+1.070711
+0.310000
+0.950000
+0.410000
+1.050000
+0.289289
+0.929289
+0.430711
+1.070711
+0.289289
+0.964645
+0.430711
+1.035355
+0.324645
+0.929289
+0.395355
+1.070711
+0.336667
+0.950000
+0.436667
+1.050000
+0.315956
+0.929289
+0.457377
+1.070711
+0.315956
+0.964645
+0.457377
+1.035355
+0.351311
+0.929289
+0.422022
+1.070711
+0.363333
+0.950000
+0.463333
+1.050000
+0.342623
+0.929289
+0.484044
+1.070711
+0.342623
+0.964645
+0.484044
+1.035355
+0.377978
+0.929289
+0.448689
+1.070711
+0.390000
+0.950000
+0.490000
+1.050000
+0.369289
+0.929289
+0.510711
+1.070711
+0.369289
+0.964645
+0.510711
+1.035355
+0.404645
+0.929289
+0.475355
+1.070711
+0.416667
+0.950000
+0.516667
+1.050000
+0.395956
+0.929289
+0.537377
+1.070711
+0.395956
+0.964645
+0.537377
+1.035355
+0.431311
+0.929289
+0.502022
+1.070711
+0.443333
+0.950000
+0.543333
+1.050000
+0.422623
+0.929289
+0.564044
+1.070711
+0.422623
+0.964645
+0.564044
+1.035355
+0.457978
+0.929289
+0.528689
+1.070711
+0.470000
+0.950000
+0.570000
+1.050000
+0.449289
+0.929289
+0.590711
+1.070711
+0.449289
+0.964645
+0.590711
+1.035355
+0.484645
+0.929289
+0.555355
+1.070711
+0.496667
+0.950000
+0.596667
+1.050000
+0.475956
+0.929289
+0.617377
+1.070711
+0.475956
+0.964645
+0.617377
+1.035355
+0.511311
+0.929289
+0.582022
+1.070711
+0.523333
+0.950000
+0.623333
+1.050000
+0.502623
+0.929289
+0.644044
+1.070711
+0.502623
+0.964645
+0.644044
+1.035355
+0.537978
+0.929289
+0.608689
+1.070711
+0.550000
+0.950000
+0.650000
+1.050000
+0.529289
+0.929289
+0.670711
+1.070711
+0.529289
+0.964645
+0.670711
+1.035355
+0.564645
+0.929289
+0.635355
+1.070711
+0.576667
+0.950000
+0.676667
+1.050000
+0.555956
+0.929289
+0.697377
+1.070711
+0.555956
+0.964645
+0.697377
+1.035355
+0.591311
+0.929289
+0.662022
+1.070711
+0.603333
+0.950000
+0.703333
+1.050000
+0.582623
+0.929289
+0.724044
+1.070711
+0.582623
+0.964645
+0.724044
+1.035355
+0.617978
+0.929289
+0.688689
+1.070711
+0.630000
+0.950000
+0.730000
+1.050000
+0.609289
+0.929289
+0.750711
+1.070711
+0.609289
+0.964645
+0.750711
+1.035355
+0.644645
+0.929289
+0.715355
+1.070711
+0.656667
+0.950000
+0.756667
+1.050000
+0.635956
+0.929289
+0.777377
+1.070711
+0.635956
+0.964645
+0.777377
+1.035355
+0.671311
+0.929289
+0.742022
+1.070711
+0.683333
+0.950000
+0.783333
+1.050000
+0.662623
+0.929289
+0.804044
+1.070711
+0.662623
+0.964645
+0.804044
+1.035355
+0.697978
+0.929289
+0.768689
+1.070711
+0.710000
+0.950000
+0.810000
+1.050000
+0.689289
+0.929289
+0.830711
+1.070711
+0.689289
+0.964645
+0.830711
+1.035355
+0.724645
+0.929289
+0.795355
+1.070711
+0.736667
+0.950000
+0.836667
+1.050000
+0.715956
+0.929289
+0.857377
+1.070711
+0.715956
+0.964645
+0.857377
+1.035355
+0.751311
+0.929289
+0.822022
+1.070711
+0.763333
+0.950000
+0.863333
+1.050000
+0.742623
+0.929289
+0.884044
+1.070711
+0.742623
+0.964645
+0.884044
+1.035355
+0.777978
+0.929289
+0.848689
+1.070711
+0.790000
+0.950000
+0.890000
+1.050000
+0.769289
+0.929289
+0.910711
+1.070711
+0.769289
+0.964645
+0.910711
+1.035355
+0.804645
+0.929289
+0.875355
+1.070711
+0.816667
+0.950000
+0.916667
+1.050000
+0.795956
+0.929289
+0.937377
+1.070711
+0.795956
+0.964645
+0.937377
+1.035355
+0.831311
+0.929289
+0.902022
+1.070711
+0.843333
+0.950000
+0.943333
+1.050000
+0.822623
+0.929289
+0.964044
+1.070711
+0.822623
+0.964645
+0.964044
+1.035355
+0.857978
+0.929289
+0.928689
+1.070711
+0.870000
+0.950000
+0.970000
+1.050000
+0.849289
+0.929289
+0.990711
+1.070711
+0.849289
+0.964645
+0.990711
+1.035355
+0.884645
+0.929289
+0.955355
+1.070711
+0.896667
+0.950000
+0.996667
+1.050000
+0.875956
+0.929289
+1.017377
+1.070711
+0.875956
+0.964645
+1.017377
+1.035355
+0.911311
+0.929289
+0.982022
+1.070711
+0.923333
+0.950000
+1.023333
+1.050000
+0.902623
+0.929289
+1.044044
+1.070711
+0.902623
+0.964645
+1.044044
+1.035355
+0.937978
+0.929289
+1.008689
+1.070711
+0.950000
+0.950000
+1.050000
+1.050000
+0.929289
+0.929289
+1.070711
+1.070711
+0.929289
+0.964645
+1.070711
+1.035355
+0.964645
+0.929289
+1.035355
+1.070711
+-0.073333
+-0.073333
+0.126667
+0.126667
+-0.109348
+-0.109348
+0.162681
+0.162681
+-0.114755
+-0.044044
+0.168088
+0.097377
+-0.044044
+-0.114755
+0.097377
+0.168088
+-0.146538
+-0.031068
+0.199872
+0.084402
+-0.031068
+-0.146538
+0.084402
+0.199872
+-0.020000
+-0.073333
+0.180000
+0.126667
+-0.056015
+-0.109348
+0.216015
+0.162681
+-0.061421
+-0.044044
+0.221421
+0.097377
+0.009289
+-0.114755
+0.150711
+0.168088
+-0.093205
+-0.031068
+0.253205
+0.084402
+0.022265
+-0.146538
+0.137735
+0.199872
+0.033333
+-0.073333
+0.233333
+0.126667
+-0.002681
+-0.109348
+0.269348
+0.162681
+-0.008088
+-0.044044
+0.274755
+0.097377
+0.062623
+-0.114755
+0.204044
+0.168088
+-0.039872
+-0.031068
+0.306538
+0.084402
+0.075598
+-0.146538
+0.191068
+0.199872
+0.086667
+-0.073333
+0.286667
+0.126667
+0.050652
+-0.109348
+0.322681
+0.162681
+0.045245
+-0.044044
+0.328088
+0.097377
+0.115956
+-0.114755
+0.257377
+0.168088
+0.013462
+-0.031068
+0.359872
+0.084402
+0.128932
+-0.146538
+0.244402
+0.199872
+0.140000
+-0.073333
+0.340000
+0.126667
+0.103985
+-0.109348
+0.376015
+0.162681
+0.098579
+-0.044044
+0.381421
+0.097377
+0.169289
+-0.114755
+0.310711
+0.168088
+0.066795
+-0.031068
+0.413205
+0.084402
+0.182265
+-0.146538
+0.297735
+0.199872
+0.193333
+-0.073333
+0.393333
+0.126667
+0.157319
+-0.109348
+0.429348
+0.162681
+0.151912
+-0.044044
+0.434755
+0.097377
+0.222623
+-0.114755
+0.364044
+0.168088
+0.120128
+-0.031068
+0.466538
+0.084402
+0.235598
+-0.146538
+0.351068
+0.199872
+0.246667
+-0.073333
+0.446667
+0.126667
+0.210652
+-0.109348
+0.482681
+0.162681
+0.205245
+-0.044044
+0.488088
+0.097377
+0.275956
+-0.114755
+0.417377
+0.168088
+0.173462
+-0.031068
+0.519872
+0.084402
+0.288932
+-0.146538
+0.404402
+0.199872
+0.300000
+-0.073333
+0.500000
+0.126667
+0.263985
+-0.109348
+0.536015
+0.162681
+0.258579
+-0.044044
+0.541421
+0.097377
+0.329289
+-0.114755
+0.470711
+0.168088
+0.226795
+-0.031068
+0.573205
+0.084402
+0.342265
+-0.146538
+0.457735
+0.199872
+0.353333
+-0.073333
+0.553333
+0.126667
+0.317319
+-0.109348
+0.589348
+0.162681
+0.311912
+-0.044044
+0.594755
+0.097377
+0.382623
+-0.114755
+0.524044
+0.168088
+0.280128
+-0.031068
+0.626538
+0.084402
+0.395598
+-0.146538
+0.511068
+0.199872
+0.406667
+-0.073333
+0.606667
+0.126667
+0.370652
+-0.109348
+0.642681
+0.162681
+0.365245
+-0.044044
+0.648088
+0.097377
+0.435956
+-0.114755
+0.577377
+0.168088
+0.333462
+-0.031068
+0.679872
+0.084402
+0.448932
+-0.146538
+0.564402
+0.199872
+0.460000
+-0.073333
+0.660000
+0.126667
+0.423985
+-0.109348
+0.696015
+0.162681
+0.418579
+-0.044044
+0.701421
+0.097377
+0.489289
+-0.114755
+0.630711
+0.168088
+0.386795
+-0.031068
+0.733205
+0.084402
+0.502265
+-0.146538
+0.617735
+0.199872
+0.513333
+-0.073333
+0.713333
+0.126667
+0.477319
+-0.109348
+0.749348
+0.162681
+0.471912
+-0.044044
+0.754755
+0.097377
+0.542623
+-0.114755
+0.684044
+0.168088
+0.440128
+-0.031068
+0.786538
+0.084402
+0.555598
+-0.146538
+0.671068
+0.199872
+0.566667
+-0.073333
+0.766667
+0.126667
+0.530652
+-0.109348
+0.802681
+0.162681
+0.525245
+-0.044044
+0.808088
+0.097377
+0.595956
+-0.114755
+0.737377
+0.168088
+0.493462
+-0.031068
+0.839872
+0.084402
+0.608932
+-0.146538
+0.724402
+0.199872
+0.620000
+-0.073333
+0.820000
+0.126667
+0.583985
+-0.109348
+0.856015
+0.162681
+0.578579
+-0.044044
+0.861421
+0.097377
+0.649289
+-0.114755
+0.790711
+0.168088
+0.546795
+-0.031068
+0.893205
+0.084402
+0.662265
+-0.146538
+0.777735
+0.199872
+0.673333
+-0.073333
+0.873333
+0.126667
+0.637319
+-0.109348
+0.909348
+0.162681
+0.631912
+-0.044044
+0.914755
+0.097377
+0.702623
+-0.114755
+0.844044
+0.168088
+0.600128
+-0.031068
+0.946538
+0.084402
+0.715598
+-0.146538
+0.831068
+0.199872
+0.726667
+-0.073333
+0.926667
+0.126667
+0.690652
+-0.109348
+0.962681
+0.162681
+0.685245
+-0.044044
+0.968088
+0.097377
+0.755956
+-0.114755
+0.897377
+0.168088
+0.653462
+-0.031068
+0.999872
+0.084402
+0.768932
+-0.146538
+0.884402
+0.199872
+0.780000
+-0.073333
+0.980000
+0.126667
+0.743985
+-0.109348
+1.016015
+0.162681
+0.738579
+-0.044044
+1.021421
+0.097377
+0.809289
+-0.114755
+0.950711
+0.168088
+0.706795
+-0.031068
+1.053205
+0.084402
+0.822265
+-0.146538
+0.937735
+0.199872
+0.833333
+-0.073333
+1.033333
+0.126667
+0.797319
+-0.109348
+1.069348
+0.162681
+0.791912
+-0.044044
+1.074755
+0.097377
+0.862623
+-0.114755
+1.004044
+0.168088
+0.760128
+-0.031068
+1.106538
+0.084402
+0.875598
+-0.146538
+0.991068
+0.199872
+0.886667
+-0.073333
+1.086667
+0.126667
+0.850652
+-0.109348
+1.122681
+0.162681
+0.845245
+-0.044044
+1.128088
+0.097377
+0.915956
+-0.114755
+1.057377
+0.168088
+0.813462
+-0.031068
+1.159872
+0.084402
+0.928932
+-0.146538
+1.044402
+0.199872
+-0.073333
+-0.020000
+0.126667
+0.180000
+-0.109348
+-0.056015
+0.162681
+0.216015
+-0.114755
+0.009289
+0.168088
+0.150711
+-0.044044
+-0.061421
+0.097377
+0.221421
+-0.146538
+0.022265
+0.199872
+0.137735
+-0.031068
+-0.093205
+0.084402
+0.253205
+-0.020000
+-0.020000
+0.180000
+0.180000
+-0.056015
+-0.056015
+0.216015
+0.216015
+-0.061421
+0.009289
+0.221421
+0.150711
+0.009289
+-0.061421
+0.150711
+0.221421
+-0.093205
+0.022265
+0.253205
+0.137735
+0.022265
+-0.093205
+0.137735
+0.253205
+0.033333
+-0.020000
+0.233333
+0.180000
+-0.002681
+-0.056015
+0.269348
+0.216015
+-0.008088
+0.009289
+0.274755
+0.150711
+0.062623
+-0.061421
+0.204044
+0.221421
+-0.039872
+0.022265
+0.306538
+0.137735
+0.075598
+-0.093205
+0.191068
+0.253205
+0.086667
+-0.020000
+0.286667
+0.180000
+0.050652
+-0.056015
+0.322681
+0.216015
+0.045245
+0.009289
+0.328088
+0.150711
+0.115956
+-0.061421
+0.257377
+0.221421
+0.013462
+0.022265
+0.359872
+0.137735
+0.128932
+-0.093205
+0.244402
+0.253205
+0.140000
+-0.020000
+0.340000
+0.180000
+0.103985
+-0.056015
+0.376015
+0.216015
+0.098579
+0.009289
+0.381421
+0.150711
+0.169289
+-0.061421
+0.310711
+0.221421
+0.066795
+0.022265
+0.413205
+0.137735
+0.182265
+-0.093205
+0.297735
+0.253205
+0.193333
+-0.020000
+0.393333
+0.180000
+0.157319
+-0.056015
+0.429348
+0.216015
+0.151912
+0.009289
+0.434755
+0.150711
+0.222623
+-0.061421
+0.364044
+0.221421
+0.120128
+0.022265
+0.466538
+0.137735
+0.235598
+-0.093205
+0.351068
+0.253205
+0.246667
+-0.020000
+0.446667
+0.180000
+0.210652
+-0.056015
+0.482681
+0.216015
+0.205245
+0.009289
+0.488088
+0.150711
+0.275956
+-0.061421
+0.417377
+0.221421
+0.173462
+0.022265
+0.519872
+0.137735
+0.288932
+-0.093205
+0.404402
+0.253205
+0.300000
+-0.020000
+0.500000
+0.180000
+0.263985
+-0.056015
+0.536015
+0.216015
+0.258579
+0.009289
+0.541421
+0.150711
+0.329289
+-0.061421
+0.470711
+0.221421
+0.226795
+0.022265
+0.573205
+0.137735
+0.342265
+-0.093205
+0.457735
+0.253205
+0.353333
+-0.020000
+0.553333
+0.180000
+0.317319
+-0.056015
+0.589348
+0.216015
+0.311912
+0.009289
+0.594755
+0.150711
+0.382623
+-0.061421
+0.524044
+0.221421
+0.280128
+0.022265
+0.626538
+0.137735
+0.395598
+-0.093205
+0.511068
+0.253205
+0.406667
+-0.020000
+0.606667
+0.180000
+0.370652
+-0.056015
+0.642681
+0.216015
+0.365245
+0.009289
+0.648088
+0.150711
+0.435956
+-0.061421
+0.577377
+0.221421
+0.333462
+0.022265
+0.679872
+0.137735
+0.448932
+-0.093205
+0.564402
+0.253205
+0.460000
+-0.020000
+0.660000
+0.180000
+0.423985
+-0.056015
+0.696015
+0.216015
+0.418579
+0.009289
+0.701421
+0.150711
+0.489289
+-0.061421
+0.630711
+0.221421
+0.386795
+0.022265
+0.733205
+0.137735
+0.502265
+-0.093205
+0.617735
+0.253205
+0.513333
+-0.020000
+0.713333
+0.180000
+0.477319
+-0.056015
+0.749348
+0.216015
+0.471912
+0.009289
+0.754755
+0.150711
+0.542623
+-0.061421
+0.684044
+0.221421
+0.440128
+0.022265
+0.786538
+0.137735
+0.555598
+-0.093205
+0.671068
+0.253205
+0.566667
+-0.020000
+0.766667
+0.180000
+0.530652
+-0.056015
+0.802681
+0.216015
+0.525245
+0.009289
+0.808088
+0.150711
+0.595956
+-0.061421
+0.737377
+0.221421
+0.493462
+0.022265
+0.839872
+0.137735
+0.608932
+-0.093205
+0.724402
+0.253205
+0.620000
+-0.020000
+0.820000
+0.180000
+0.583985
+-0.056015
+0.856015
+0.216015
+0.578579
+0.009289
+0.861421
+0.150711
+0.649289
+-0.061421
+0.790711
+0.221421
+0.546795
+0.022265
+0.893205
+0.137735
+0.662265
+-0.093205
+0.777735
+0.253205
+0.673333
+-0.020000
+0.873333
+0.180000
+0.637319
+-0.056015
+0.909348
+0.216015
+0.631912
+0.009289
+0.914755
+0.150711
+0.702623
+-0.061421
+0.844044
+0.221421
+0.600128
+0.022265
+0.946538
+0.137735
+0.715598
+-0.093205
+0.831068
+0.253205
+0.726667
+-0.020000
+0.926667
+0.180000
+0.690652
+-0.056015
+0.962681
+0.216015
+0.685245
+0.009289
+0.968088
+0.150711
+0.755956
+-0.061421
+0.897377
+0.221421
+0.653462
+0.022265
+0.999872
+0.137735
+0.768932
+-0.093205
+0.884402
+0.253205
+0.780000
+-0.020000
+0.980000
+0.180000
+0.743985
+-0.056015
+1.016015
+0.216015
+0.738579
+0.009289
+1.021421
+0.150711
+0.809289
+-0.061421
+0.950711
+0.221421
+0.706795
+0.022265
+1.053205
+0.137735
+0.822265
+-0.093205
+0.937735
+0.253205
+0.833333
+-0.020000
+1.033333
+0.180000
+0.797319
+-0.056015
+1.069348
+0.216015
+0.791912
+0.009289
+1.074755
+0.150711
+0.862623
+-0.061421
+1.004044
+0.221421
+0.760128
+0.022265
+1.106538
+0.137735
+0.875598
+-0.093205
+0.991068
+0.253205
+0.886667
+-0.020000
+1.086667
+0.180000
+0.850652
+-0.056015
+1.122681
+0.216015
+0.845245
+0.009289
+1.128088
+0.150711
+0.915956
+-0.061421
+1.057377
+0.221421
+0.813462
+0.022265
+1.159872
+0.137735
+0.928932
+-0.093205
+1.044402
+0.253205
+-0.073333
+0.033333
+0.126667
+0.233333
+-0.109348
+-0.002681
+0.162681
+0.269348
+-0.114755
+0.062623
+0.168088
+0.204044
+-0.044044
+-0.008088
+0.097377
+0.274755
+-0.146538
+0.075598
+0.199872
+0.191068
+-0.031068
+-0.039872
+0.084402
+0.306538
+-0.020000
+0.033333
+0.180000
+0.233333
+-0.056015
+-0.002681
+0.216015
+0.269348
+-0.061421
+0.062623
+0.221421
+0.204044
+0.009289
+-0.008088
+0.150711
+0.274755
+-0.093205
+0.075598
+0.253205
+0.191068
+0.022265
+-0.039872
+0.137735
+0.306538
+0.033333
+0.033333
+0.233333
+0.233333
+-0.002681
+-0.002681
+0.269348
+0.269348
+-0.008088
+0.062623
+0.274755
+0.204044
+0.062623
+-0.008088
+0.204044
+0.274755
+-0.039872
+0.075598
+0.306538
+0.191068
+0.075598
+-0.039872
+0.191068
+0.306538
+0.086667
+0.033333
+0.286667
+0.233333
+0.050652
+-0.002681
+0.322681
+0.269348
+0.045245
+0.062623
+0.328088
+0.204044
+0.115956
+-0.008088
+0.257377
+0.274755
+0.013462
+0.075598
+0.359872
+0.191068
+0.128932
+-0.039872
+0.244402
+0.306538
+0.140000
+0.033333
+0.340000
+0.233333
+0.103985
+-0.002681
+0.376015
+0.269348
+0.098579
+0.062623
+0.381421
+0.204044
+0.169289
+-0.008088
+0.310711
+0.274755
+0.066795
+0.075598
+0.413205
+0.191068
+0.182265
+-0.039872
+0.297735
+0.306538
+0.193333
+0.033333
+0.393333
+0.233333
+0.157319
+-0.002681
+0.429348
+0.269348
+0.151912
+0.062623
+0.434755
+0.204044
+0.222623
+-0.008088
+0.364044
+0.274755
+0.120128
+0.075598
+0.466538
+0.191068
+0.235598
+-0.039872
+0.351068
+0.306538
+0.246667
+0.033333
+0.446667
+0.233333
+0.210652
+-0.002681
+0.482681
+0.269348
+0.205245
+0.062623
+0.488088
+0.204044
+0.275956
+-0.008088
+0.417377
+0.274755
+0.173462
+0.075598
+0.519872
+0.191068
+0.288932
+-0.039872
+0.404402
+0.306538
+0.300000
+0.033333
+0.500000
+0.233333
+0.263985
+-0.002681
+0.536015
+0.269348
+0.258579
+0.062623
+0.541421
+0.204044
+0.329289
+-0.008088
+0.470711
+0.274755
+0.226795
+0.075598
+0.573205
+0.191068
+0.342265
+-0.039872
+0.457735
+0.306538
+0.353333
+0.033333
+0.553333
+0.233333
+0.317319
+-0.002681
+0.589348
+0.269348
+0.311912
+0.062623
+0.594755
+0.204044
+0.382623
+-0.008088
+0.524044
+0.274755
+0.280128
+0.075598
+0.626538
+0.191068
+0.395598
+-0.039872
+0.511068
+0.306538
+0.406667
+0.033333
+0.606667
+0.233333
+0.370652
+-0.002681
+0.642681
+0.269348
+0.365245
+0.062623
+0.648088
+0.204044
+0.435956
+-0.008088
+0.577377
+0.274755
+0.333462
+0.075598
+0.679872
+0.191068
+0.448932
+-0.039872
+0.564402
+0.306538
+0.460000
+0.033333
+0.660000
+0.233333
+0.423985
+-0.002681
+0.696015
+0.269348
+0.418579
+0.062623
+0.701421
+0.204044
+0.489289
+-0.008088
+0.630711
+0.274755
+0.386795
+0.075598
+0.733205
+0.191068
+0.502265
+-0.039872
+0.617735
+0.306538
+0.513333
+0.033333
+0.713333
+0.233333
+0.477319
+-0.002681
+0.749348
+0.269348
+0.471912
+0.062623
+0.754755
+0.204044
+0.542623
+-0.008088
+0.684044
+0.274755
+0.440128
+0.075598
+0.786538
+0.191068
+0.555598
+-0.039872
+0.671068
+0.306538
+0.566667
+0.033333
+0.766667
+0.233333
+0.530652
+-0.002681
+0.802681
+0.269348
+0.525245
+0.062623
+0.808088
+0.204044
+0.595956
+-0.008088
+0.737377
+0.274755
+0.493462
+0.075598
+0.839872
+0.191068
+0.608932
+-0.039872
+0.724402
+0.306538
+0.620000
+0.033333
+0.820000
+0.233333
+0.583985
+-0.002681
+0.856015
+0.269348
+0.578579
+0.062623
+0.861421
+0.204044
+0.649289
+-0.008088
+0.790711
+0.274755
+0.546795
+0.075598
+0.893205
+0.191068
+0.662265
+-0.039872
+0.777735
+0.306538
+0.673333
+0.033333
+0.873333
+0.233333
+0.637319
+-0.002681
+0.909348
+0.269348
+0.631912
+0.062623
+0.914755
+0.204044
+0.702623
+-0.008088
+0.844044
+0.274755
+0.600128
+0.075598
+0.946538
+0.191068
+0.715598
+-0.039872
+0.831068
+0.306538
+0.726667
+0.033333
+0.926667
+0.233333
+0.690652
+-0.002681
+0.962681
+0.269348
+0.685245
+0.062623
+0.968088
+0.204044
+0.755956
+-0.008088
+0.897377
+0.274755
+0.653462
+0.075598
+0.999872
+0.191068
+0.768932
+-0.039872
+0.884402
+0.306538
+0.780000
+0.033333
+0.980000
+0.233333
+0.743985
+-0.002681
+1.016015
+0.269348
+0.738579
+0.062623
+1.021421
+0.204044
+0.809289
+-0.008088
+0.950711
+0.274755
+0.706795
+0.075598
+1.053205
+0.191068
+0.822265
+-0.039872
+0.937735
+0.306538
+0.833333
+0.033333
+1.033333
+0.233333
+0.797319
+-0.002681
+1.069348
+0.269348
+0.791912
+0.062623
+1.074755
+0.204044
+0.862623
+-0.008088
+1.004044
+0.274755
+0.760128
+0.075598
+1.106538
+0.191068
+0.875598
+-0.039872
+0.991068
+0.306538
+0.886667
+0.033333
+1.086667
+0.233333
+0.850652
+-0.002681
+1.122681
+0.269348
+0.845245
+0.062623
+1.128088
+0.204044
+0.915956
+-0.008088
+1.057377
+0.274755
+0.813462
+0.075598
+1.159872
+0.191068
+0.928932
+-0.039872
+1.044402
+0.306538
+-0.073333
+0.086667
+0.126667
+0.286667
+-0.109348
+0.050652
+0.162681
+0.322681
+-0.114755
+0.115956
+0.168088
+0.257377
+-0.044044
+0.045245
+0.097377
+0.328088
+-0.146538
+0.128932
+0.199872
+0.244402
+-0.031068
+0.013462
+0.084402
+0.359872
+-0.020000
+0.086667
+0.180000
+0.286667
+-0.056015
+0.050652
+0.216015
+0.322681
+-0.061421
+0.115956
+0.221421
+0.257377
+0.009289
+0.045245
+0.150711
+0.328088
+-0.093205
+0.128932
+0.253205
+0.244402
+0.022265
+0.013462
+0.137735
+0.359872
+0.033333
+0.086667
+0.233333
+0.286667
+-0.002681
+0.050652
+0.269348
+0.322681
+-0.008088
+0.115956
+0.274755
+0.257377
+0.062623
+0.045245
+0.204044
+0.328088
+-0.039872
+0.128932
+0.306538
+0.244402
+0.075598
+0.013462
+0.191068
+0.359872
+0.086667
+0.086667
+0.286667
+0.286667
+0.050652
+0.050652
+0.322681
+0.322681
+0.045245
+0.115956
+0.328088
+0.257377
+0.115956
+0.045245
+0.257377
+0.328088
+0.013462
+0.128932
+0.359872
+0.244402
+0.128932
+0.013462
+0.244402
+0.359872
+0.140000
+0.086667
+0.340000
+0.286667
+0.103985
+0.050652
+0.376015
+0.322681
+0.098579
+0.115956
+0.381421
+0.257377
+0.169289
+0.045245
+0.310711
+0.328088
+0.066795
+0.128932
+0.413205
+0.244402
+0.182265
+0.013462
+0.297735
+0.359872
+0.193333
+0.086667
+0.393333
+0.286667
+0.157319
+0.050652
+0.429348
+0.322681
+0.151912
+0.115956
+0.434755
+0.257377
+0.222623
+0.045245
+0.364044
+0.328088
+0.120128
+0.128932
+0.466538
+0.244402
+0.235598
+0.013462
+0.351068
+0.359872
+0.246667
+0.086667
+0.446667
+0.286667
+0.210652
+0.050652
+0.482681
+0.322681
+0.205245
+0.115956
+0.488088
+0.257377
+0.275956
+0.045245
+0.417377
+0.328088
+0.173462
+0.128932
+0.519872
+0.244402
+0.288932
+0.013462
+0.404402
+0.359872
+0.300000
+0.086667
+0.500000
+0.286667
+0.263985
+0.050652
+0.536015
+0.322681
+0.258579
+0.115956
+0.541421
+0.257377
+0.329289
+0.045245
+0.470711
+0.328088
+0.226795
+0.128932
+0.573205
+0.244402
+0.342265
+0.013462
+0.457735
+0.359872
+0.353333
+0.086667
+0.553333
+0.286667
+0.317319
+0.050652
+0.589348
+0.322681
+0.311912
+0.115956
+0.594755
+0.257377
+0.382623
+0.045245
+0.524044
+0.328088
+0.280128
+0.128932
+0.626538
+0.244402
+0.395598
+0.013462
+0.511068
+0.359872
+0.406667
+0.086667
+0.606667
+0.286667
+0.370652
+0.050652
+0.642681
+0.322681
+0.365245
+0.115956
+0.648088
+0.257377
+0.435956
+0.045245
+0.577377
+0.328088
+0.333462
+0.128932
+0.679872
+0.244402
+0.448932
+0.013462
+0.564402
+0.359872
+0.460000
+0.086667
+0.660000
+0.286667
+0.423985
+0.050652
+0.696015
+0.322681
+0.418579
+0.115956
+0.701421
+0.257377
+0.489289
+0.045245
+0.630711
+0.328088
+0.386795
+0.128932
+0.733205
+0.244402
+0.502265
+0.013462
+0.617735
+0.359872
+0.513333
+0.086667
+0.713333
+0.286667
+0.477319
+0.050652
+0.749348
+0.322681
+0.471912
+0.115956
+0.754755
+0.257377
+0.542623
+0.045245
+0.684044
+0.328088
+0.440128
+0.128932
+0.786538
+0.244402
+0.555598
+0.013462
+0.671068
+0.359872
+0.566667
+0.086667
+0.766667
+0.286667
+0.530652
+0.050652
+0.802681
+0.322681
+0.525245
+0.115956
+0.808088
+0.257377
+0.595956
+0.045245
+0.737377
+0.328088
+0.493462
+0.128932
+0.839872
+0.244402
+0.608932
+0.013462
+0.724402
+0.359872
+0.620000
+0.086667
+0.820000
+0.286667
+0.583985
+0.050652
+0.856015
+0.322681
+0.578579
+0.115956
+0.861421
+0.257377
+0.649289
+0.045245
+0.790711
+0.328088
+0.546795
+0.128932
+0.893205
+0.244402
+0.662265
+0.013462
+0.777735
+0.359872
+0.673333
+0.086667
+0.873333
+0.286667
+0.637319
+0.050652
+0.909348
+0.322681
+0.631912
+0.115956
+0.914755
+0.257377
+0.702623
+0.045245
+0.844044
+0.328088
+0.600128
+0.128932
+0.946538
+0.244402
+0.715598
+0.013462
+0.831068
+0.359872
+0.726667
+0.086667
+0.926667
+0.286667
+0.690652
+0.050652
+0.962681
+0.322681
+0.685245
+0.115956
+0.968088
+0.257377
+0.755956
+0.045245
+0.897377
+0.328088
+0.653462
+0.128932
+0.999872
+0.244402
+0.768932
+0.013462
+0.884402
+0.359872
+0.780000
+0.086667
+0.980000
+0.286667
+0.743985
+0.050652
+1.016015
+0.322681
+0.738579
+0.115956
+1.021421
+0.257377
+0.809289
+0.045245
+0.950711
+0.328088
+0.706795
+0.128932
+1.053205
+0.244402
+0.822265
+0.013462
+0.937735
+0.359872
+0.833333
+0.086667
+1.033333
+0.286667
+0.797319
+0.050652
+1.069348
+0.322681
+0.791912
+0.115956
+1.074755
+0.257377
+0.862623
+0.045245
+1.004044
+0.328088
+0.760128
+0.128932
+1.106538
+0.244402
+0.875598
+0.013462
+0.991068
+0.359872
+0.886667
+0.086667
+1.086667
+0.286667
+0.850652
+0.050652
+1.122681
+0.322681
+0.845245
+0.115956
+1.128088
+0.257377
+0.915956
+0.045245
+1.057377
+0.328088
+0.813462
+0.128932
+1.159872
+0.244402
+0.928932
+0.013462
+1.044402
+0.359872
+-0.073333
+0.140000
+0.126667
+0.340000
+-0.109348
+0.103985
+0.162681
+0.376015
+-0.114755
+0.169289
+0.168088
+0.310711
+-0.044044
+0.098579
+0.097377
+0.381421
+-0.146538
+0.182265
+0.199872
+0.297735
+-0.031068
+0.066795
+0.084402
+0.413205
+-0.020000
+0.140000
+0.180000
+0.340000
+-0.056015
+0.103985
+0.216015
+0.376015
+-0.061421
+0.169289
+0.221421
+0.310711
+0.009289
+0.098579
+0.150711
+0.381421
+-0.093205
+0.182265
+0.253205
+0.297735
+0.022265
+0.066795
+0.137735
+0.413205
+0.033333
+0.140000
+0.233333
+0.340000
+-0.002681
+0.103985
+0.269348
+0.376015
+-0.008088
+0.169289
+0.274755
+0.310711
+0.062623
+0.098579
+0.204044
+0.381421
+-0.039872
+0.182265
+0.306538
+0.297735
+0.075598
+0.066795
+0.191068
+0.413205
+0.086667
+0.140000
+0.286667
+0.340000
+0.050652
+0.103985
+0.322681
+0.376015
+0.045245
+0.169289
+0.328088
+0.310711
+0.115956
+0.098579
+0.257377
+0.381421
+0.013462
+0.182265
+0.359872
+0.297735
+0.128932
+0.066795
+0.244402
+0.413205
+0.140000
+0.140000
+0.340000
+0.340000
+0.103985
+0.103985
+0.376015
+0.376015
+0.098579
+0.169289
+0.381421
+0.310711
+0.169289
+0.098579
+0.310711
+0.381421
+0.066795
+0.182265
+0.413205
+0.297735
+0.182265
+0.066795
+0.297735
+0.413205
+0.193333
+0.140000
+0.393333
+0.340000
+0.157319
+0.103985
+0.429348
+0.376015
+0.151912
+0.169289
+0.434755
+0.310711
+0.222623
+0.098579
+0.364044
+0.381421
+0.120128
+0.182265
+0.466538
+0.297735
+0.235598
+0.066795
+0.351068
+0.413205
+0.246667
+0.140000
+0.446667
+0.340000
+0.210652
+0.103985
+0.482681
+0.376015
+0.205245
+0.169289
+0.488088
+0.310711
+0.275956
+0.098579
+0.417377
+0.381421
+0.173462
+0.182265
+0.519872
+0.297735
+0.288932
+0.066795
+0.404402
+0.413205
+0.300000
+0.140000
+0.500000
+0.340000
+0.263985
+0.103985
+0.536015
+0.376015
+0.258579
+0.169289
+0.541421
+0.310711
+0.329289
+0.098579
+0.470711
+0.381421
+0.226795
+0.182265
+0.573205
+0.297735
+0.342265
+0.066795
+0.457735
+0.413205
+0.353333
+0.140000
+0.553333
+0.340000
+0.317319
+0.103985
+0.589348
+0.376015
+0.311912
+0.169289
+0.594755
+0.310711
+0.382623
+0.098579
+0.524044
+0.381421
+0.280128
+0.182265
+0.626538
+0.297735
+0.395598
+0.066795
+0.511068
+0.413205
+0.406667
+0.140000
+0.606667
+0.340000
+0.370652
+0.103985
+0.642681
+0.376015
+0.365245
+0.169289
+0.648088
+0.310711
+0.435956
+0.098579
+0.577377
+0.381421
+0.333462
+0.182265
+0.679872
+0.297735
+0.448932
+0.066795
+0.564402
+0.413205
+0.460000
+0.140000
+0.660000
+0.340000
+0.423985
+0.103985
+0.696015
+0.376015
+0.418579
+0.169289
+0.701421
+0.310711
+0.489289
+0.098579
+0.630711
+0.381421
+0.386795
+0.182265
+0.733205
+0.297735
+0.502265
+0.066795
+0.617735
+0.413205
+0.513333
+0.140000
+0.713333
+0.340000
+0.477319
+0.103985
+0.749348
+0.376015
+0.471912
+0.169289
+0.754755
+0.310711
+0.542623
+0.098579
+0.684044
+0.381421
+0.440128
+0.182265
+0.786538
+0.297735
+0.555598
+0.066795
+0.671068
+0.413205
+0.566667
+0.140000
+0.766667
+0.340000
+0.530652
+0.103985
+0.802681
+0.376015
+0.525245
+0.169289
+0.808088
+0.310711
+0.595956
+0.098579
+0.737377
+0.381421
+0.493462
+0.182265
+0.839872
+0.297735
+0.608932
+0.066795
+0.724402
+0.413205
+0.620000
+0.140000
+0.820000
+0.340000
+0.583985
+0.103985
+0.856015
+0.376015
+0.578579
+0.169289
+0.861421
+0.310711
+0.649289
+0.098579
+0.790711
+0.381421
+0.546795
+0.182265
+0.893205
+0.297735
+0.662265
+0.066795
+0.777735
+0.413205
+0.673333
+0.140000
+0.873333
+0.340000
+0.637319
+0.103985
+0.909348
+0.376015
+0.631912
+0.169289
+0.914755
+0.310711
+0.702623
+0.098579
+0.844044
+0.381421
+0.600128
+0.182265
+0.946538
+0.297735
+0.715598
+0.066795
+0.831068
+0.413205
+0.726667
+0.140000
+0.926667
+0.340000
+0.690652
+0.103985
+0.962681
+0.376015
+0.685245
+0.169289
+0.968088
+0.310711
+0.755956
+0.098579
+0.897377
+0.381421
+0.653462
+0.182265
+0.999872
+0.297735
+0.768932
+0.066795
+0.884402
+0.413205
+0.780000
+0.140000
+0.980000
+0.340000
+0.743985
+0.103985
+1.016015
+0.376015
+0.738579
+0.169289
+1.021421
+0.310711
+0.809289
+0.098579
+0.950711
+0.381421
+0.706795
+0.182265
+1.053205
+0.297735
+0.822265
+0.066795
+0.937735
+0.413205
+0.833333
+0.140000
+1.033333
+0.340000
+0.797319
+0.103985
+1.069348
+0.376015
+0.791912
+0.169289
+1.074755
+0.310711
+0.862623
+0.098579
+1.004044
+0.381421
+0.760128
+0.182265
+1.106538
+0.297735
+0.875598
+0.066795
+0.991068
+0.413205
+0.886667
+0.140000
+1.086667
+0.340000
+0.850652
+0.103985
+1.122681
+0.376015
+0.845245
+0.169289
+1.128088
+0.310711
+0.915956
+0.098579
+1.057377
+0.381421
+0.813462
+0.182265
+1.159872
+0.297735
+0.928932
+0.066795
+1.044402
+0.413205
+-0.073333
+0.193333
+0.126667
+0.393333
+-0.109348
+0.157319
+0.162681
+0.429348
+-0.114755
+0.222623
+0.168088
+0.364044
+-0.044044
+0.151912
+0.097377
+0.434755
+-0.146538
+0.235598
+0.199872
+0.351068
+-0.031068
+0.120128
+0.084402
+0.466538
+-0.020000
+0.193333
+0.180000
+0.393333
+-0.056015
+0.157319
+0.216015
+0.429348
+-0.061421
+0.222623
+0.221421
+0.364044
+0.009289
+0.151912
+0.150711
+0.434755
+-0.093205
+0.235598
+0.253205
+0.351068
+0.022265
+0.120128
+0.137735
+0.466538
+0.033333
+0.193333
+0.233333
+0.393333
+-0.002681
+0.157319
+0.269348
+0.429348
+-0.008088
+0.222623
+0.274755
+0.364044
+0.062623
+0.151912
+0.204044
+0.434755
+-0.039872
+0.235598
+0.306538
+0.351068
+0.075598
+0.120128
+0.191068
+0.466538
+0.086667
+0.193333
+0.286667
+0.393333
+0.050652
+0.157319
+0.322681
+0.429348
+0.045245
+0.222623
+0.328088
+0.364044
+0.115956
+0.151912
+0.257377
+0.434755
+0.013462
+0.235598
+0.359872
+0.351068
+0.128932
+0.120128
+0.244402
+0.466538
+0.140000
+0.193333
+0.340000
+0.393333
+0.103985
+0.157319
+0.376015
+0.429348
+0.098579
+0.222623
+0.381421
+0.364044
+0.169289
+0.151912
+0.310711
+0.434755
+0.066795
+0.235598
+0.413205
+0.351068
+0.182265
+0.120128
+0.297735
+0.466538
+0.193333
+0.193333
+0.393333
+0.393333
+0.157319
+0.157319
+0.429348
+0.429348
+0.151912
+0.222623
+0.434755
+0.364044
+0.222623
+0.151912
+0.364044
+0.434755
+0.120128
+0.235598
+0.466538
+0.351068
+0.235598
+0.120128
+0.351068
+0.466538
+0.246667
+0.193333
+0.446667
+0.393333
+0.210652
+0.157319
+0.482681
+0.429348
+0.205245
+0.222623
+0.488088
+0.364044
+0.275956
+0.151912
+0.417377
+0.434755
+0.173462
+0.235598
+0.519872
+0.351068
+0.288932
+0.120128
+0.404402
+0.466538
+0.300000
+0.193333
+0.500000
+0.393333
+0.263985
+0.157319
+0.536015
+0.429348
+0.258579
+0.222623
+0.541421
+0.364044
+0.329289
+0.151912
+0.470711
+0.434755
+0.226795
+0.235598
+0.573205
+0.351068
+0.342265
+0.120128
+0.457735
+0.466538
+0.353333
+0.193333
+0.553333
+0.393333
+0.317319
+0.157319
+0.589348
+0.429348
+0.311912
+0.222623
+0.594755
+0.364044
+0.382623
+0.151912
+0.524044
+0.434755
+0.280128
+0.235598
+0.626538
+0.351068
+0.395598
+0.120128
+0.511068
+0.466538
+0.406667
+0.193333
+0.606667
+0.393333
+0.370652
+0.157319
+0.642681
+0.429348
+0.365245
+0.222623
+0.648088
+0.364044
+0.435956
+0.151912
+0.577377
+0.434755
+0.333462
+0.235598
+0.679872
+0.351068
+0.448932
+0.120128
+0.564402
+0.466538
+0.460000
+0.193333
+0.660000
+0.393333
+0.423985
+0.157319
+0.696015
+0.429348
+0.418579
+0.222623
+0.701421
+0.364044
+0.489289
+0.151912
+0.630711
+0.434755
+0.386795
+0.235598
+0.733205
+0.351068
+0.502265
+0.120128
+0.617735
+0.466538
+0.513333
+0.193333
+0.713333
+0.393333
+0.477319
+0.157319
+0.749348
+0.429348
+0.471912
+0.222623
+0.754755
+0.364044
+0.542623
+0.151912
+0.684044
+0.434755
+0.440128
+0.235598
+0.786538
+0.351068
+0.555598
+0.120128
+0.671068
+0.466538
+0.566667
+0.193333
+0.766667
+0.393333
+0.530652
+0.157319
+0.802681
+0.429348
+0.525245
+0.222623
+0.808088
+0.364044
+0.595956
+0.151912
+0.737377
+0.434755
+0.493462
+0.235598
+0.839872
+0.351068
+0.608932
+0.120128
+0.724402
+0.466538
+0.620000
+0.193333
+0.820000
+0.393333
+0.583985
+0.157319
+0.856015
+0.429348
+0.578579
+0.222623
+0.861421
+0.364044
+0.649289
+0.151912
+0.790711
+0.434755
+0.546795
+0.235598
+0.893205
+0.351068
+0.662265
+0.120128
+0.777735
+0.466538
+0.673333
+0.193333
+0.873333
+0.393333
+0.637319
+0.157319
+0.909348
+0.429348
+0.631912
+0.222623
+0.914755
+0.364044
+0.702623
+0.151912
+0.844044
+0.434755
+0.600128
+0.235598
+0.946538
+0.351068
+0.715598
+0.120128
+0.831068
+0.466538
+0.726667
+0.193333
+0.926667
+0.393333
+0.690652
+0.157319
+0.962681
+0.429348
+0.685245
+0.222623
+0.968088
+0.364044
+0.755956
+0.151912
+0.897377
+0.434755
+0.653462
+0.235598
+0.999872
+0.351068
+0.768932
+0.120128
+0.884402
+0.466538
+0.780000
+0.193333
+0.980000
+0.393333
+0.743985
+0.157319
+1.016015
+0.429348
+0.738579
+0.222623
+1.021421
+0.364044
+0.809289
+0.151912
+0.950711
+0.434755
+0.706795
+0.235598
+1.053205
+0.351068
+0.822265
+0.120128
+0.937735
+0.466538
+0.833333
+0.193333
+1.033333
+0.393333
+0.797319
+0.157319
+1.069348
+0.429348
+0.791912
+0.222623
+1.074755
+0.364044
+0.862623
+0.151912
+1.004044
+0.434755
+0.760128
+0.235598
+1.106538
+0.351068
+0.875598
+0.120128
+0.991068
+0.466538
+0.886667
+0.193333
+1.086667
+0.393333
+0.850652
+0.157319
+1.122681
+0.429348
+0.845245
+0.222623
+1.128088
+0.364044
+0.915956
+0.151912
+1.057377
+0.434755
+0.813462
+0.235598
+1.159872
+0.351068
+0.928932
+0.120128
+1.044402
+0.466538
+-0.073333
+0.246667
+0.126667
+0.446667
+-0.109348
+0.210652
+0.162681
+0.482681
+-0.114755
+0.275956
+0.168088
+0.417377
+-0.044044
+0.205245
+0.097377
+0.488088
+-0.146538
+0.288932
+0.199872
+0.404402
+-0.031068
+0.173462
+0.084402
+0.519872
+-0.020000
+0.246667
+0.180000
+0.446667
+-0.056015
+0.210652
+0.216015
+0.482681
+-0.061421
+0.275956
+0.221421
+0.417377
+0.009289
+0.205245
+0.150711
+0.488088
+-0.093205
+0.288932
+0.253205
+0.404402
+0.022265
+0.173462
+0.137735
+0.519872
+0.033333
+0.246667
+0.233333
+0.446667
+-0.002681
+0.210652
+0.269348
+0.482681
+-0.008088
+0.275956
+0.274755
+0.417377
+0.062623
+0.205245
+0.204044
+0.488088
+-0.039872
+0.288932
+0.306538
+0.404402
+0.075598
+0.173462
+0.191068
+0.519872
+0.086667
+0.246667
+0.286667
+0.446667
+0.050652
+0.210652
+0.322681
+0.482681
+0.045245
+0.275956
+0.328088
+0.417377
+0.115956
+0.205245
+0.257377
+0.488088
+0.013462
+0.288932
+0.359872
+0.404402
+0.128932
+0.173462
+0.244402
+0.519872
+0.140000
+0.246667
+0.340000
+0.446667
+0.103985
+0.210652
+0.376015
+0.482681
+0.098579
+0.275956
+0.381421
+0.417377
+0.169289
+0.205245
+0.310711
+0.488088
+0.066795
+0.288932
+0.413205
+0.404402
+0.182265
+0.173462
+0.297735
+0.519872
+0.193333
+0.246667
+0.393333
+0.446667
+0.157319
+0.210652
+0.429348
+0.482681
+0.151912
+0.275956
+0.434755
+0.417377
+0.222623
+0.205245
+0.364044
+0.488088
+0.120128
+0.288932
+0.466538
+0.404402
+0.235598
+0.173462
+0.351068
+0.519872
+0.246667
+0.246667
+0.446667
+0.446667
+0.210652
+0.210652
+0.482681
+0.482681
+0.205245
+0.275956
+0.488088
+0.417377
+0.275956
+0.205245
+0.417377
+0.488088
+0.173462
+0.288932
+0.519872
+0.404402
+0.288932
+0.173462
+0.404402
+0.519872
+0.300000
+0.246667
+0.500000
+0.446667
+0.263985
+0.210652
+0.536015
+0.482681
+0.258579
+0.275956
+0.541421
+0.417377
+0.329289
+0.205245
+0.470711
+0.488088
+0.226795
+0.288932
+0.573205
+0.404402
+0.342265
+0.173462
+0.457735
+0.519872
+0.353333
+0.246667
+0.553333
+0.446667
+0.317319
+0.210652
+0.589348
+0.482681
+0.311912
+0.275956
+0.594755
+0.417377
+0.382623
+0.205245
+0.524044
+0.488088
+0.280128
+0.288932
+0.626538
+0.404402
+0.395598
+0.173462
+0.511068
+0.519872
+0.406667
+0.246667
+0.606667
+0.446667
+0.370652
+0.210652
+0.642681
+0.482681
+0.365245
+0.275956
+0.648088
+0.417377
+0.435956
+0.205245
+0.577377
+0.488088
+0.333462
+0.288932
+0.679872
+0.404402
+0.448932
+0.173462
+0.564402
+0.519872
+0.460000
+0.246667
+0.660000
+0.446667
+0.423985
+0.210652
+0.696015
+0.482681
+0.418579
+0.275956
+0.701421
+0.417377
+0.489289
+0.205245
+0.630711
+0.488088
+0.386795
+0.288932
+0.733205
+0.404402
+0.502265
+0.173462
+0.617735
+0.519872
+0.513333
+0.246667
+0.713333
+0.446667
+0.477319
+0.210652
+0.749348
+0.482681
+0.471912
+0.275956
+0.754755
+0.417377
+0.542623
+0.205245
+0.684044
+0.488088
+0.440128
+0.288932
+0.786538
+0.404402
+0.555598
+0.173462
+0.671068
+0.519872
+0.566667
+0.246667
+0.766667
+0.446667
+0.530652
+0.210652
+0.802681
+0.482681
+0.525245
+0.275956
+0.808088
+0.417377
+0.595956
+0.205245
+0.737377
+0.488088
+0.493462
+0.288932
+0.839872
+0.404402
+0.608932
+0.173462
+0.724402
+0.519872
+0.620000
+0.246667
+0.820000
+0.446667
+0.583985
+0.210652
+0.856015
+0.482681
+0.578579
+0.275956
+0.861421
+0.417377
+0.649289
+0.205245
+0.790711
+0.488088
+0.546795
+0.288932
+0.893205
+0.404402
+0.662265
+0.173462
+0.777735
+0.519872
+0.673333
+0.246667
+0.873333
+0.446667
+0.637319
+0.210652
+0.909348
+0.482681
+0.631912
+0.275956
+0.914755
+0.417377
+0.702623
+0.205245
+0.844044
+0.488088
+0.600128
+0.288932
+0.946538
+0.404402
+0.715598
+0.173462
+0.831068
+0.519872
+0.726667
+0.246667
+0.926667
+0.446667
+0.690652
+0.210652
+0.962681
+0.482681
+0.685245
+0.275956
+0.968088
+0.417377
+0.755956
+0.205245
+0.897377
+0.488088
+0.653462
+0.288932
+0.999872
+0.404402
+0.768932
+0.173462
+0.884402
+0.519872
+0.780000
+0.246667
+0.980000
+0.446667
+0.743985
+0.210652
+1.016015
+0.482681
+0.738579
+0.275956
+1.021421
+0.417377
+0.809289
+0.205245
+0.950711
+0.488088
+0.706795
+0.288932
+1.053205
+0.404402
+0.822265
+0.173462
+0.937735
+0.519872
+0.833333
+0.246667
+1.033333
+0.446667
+0.797319
+0.210652
+1.069348
+0.482681
+0.791912
+0.275956
+1.074755
+0.417377
+0.862623
+0.205245
+1.004044
+0.488088
+0.760128
+0.288932
+1.106538
+0.404402
+0.875598
+0.173462
+0.991068
+0.519872
+0.886667
+0.246667
+1.086667
+0.446667
+0.850652
+0.210652
+1.122681
+0.482681
+0.845245
+0.275956
+1.128088
+0.417377
+0.915956
+0.205245
+1.057377
+0.488088
+0.813462
+0.288932
+1.159872
+0.404402
+0.928932
+0.173462
+1.044402
+0.519872
+-0.073333
+0.300000
+0.126667
+0.500000
+-0.109348
+0.263985
+0.162681
+0.536015
+-0.114755
+0.329289
+0.168088
+0.470711
+-0.044044
+0.258579
+0.097377
+0.541421
+-0.146538
+0.342265
+0.199872
+0.457735
+-0.031068
+0.226795
+0.084402
+0.573205
+-0.020000
+0.300000
+0.180000
+0.500000
+-0.056015
+0.263985
+0.216015
+0.536015
+-0.061421
+0.329289
+0.221421
+0.470711
+0.009289
+0.258579
+0.150711
+0.541421
+-0.093205
+0.342265
+0.253205
+0.457735
+0.022265
+0.226795
+0.137735
+0.573205
+0.033333
+0.300000
+0.233333
+0.500000
+-0.002681
+0.263985
+0.269348
+0.536015
+-0.008088
+0.329289
+0.274755
+0.470711
+0.062623
+0.258579
+0.204044
+0.541421
+-0.039872
+0.342265
+0.306538
+0.457735
+0.075598
+0.226795
+0.191068
+0.573205
+0.086667
+0.300000
+0.286667
+0.500000
+0.050652
+0.263985
+0.322681
+0.536015
+0.045245
+0.329289
+0.328088
+0.470711
+0.115956
+0.258579
+0.257377
+0.541421
+0.013462
+0.342265
+0.359872
+0.457735
+0.128932
+0.226795
+0.244402
+0.573205
+0.140000
+0.300000
+0.340000
+0.500000
+0.103985
+0.263985
+0.376015
+0.536015
+0.098579
+0.329289
+0.381421
+0.470711
+0.169289
+0.258579
+0.310711
+0.541421
+0.066795
+0.342265
+0.413205
+0.457735
+0.182265
+0.226795
+0.297735
+0.573205
+0.193333
+0.300000
+0.393333
+0.500000
+0.157319
+0.263985
+0.429348
+0.536015
+0.151912
+0.329289
+0.434755
+0.470711
+0.222623
+0.258579
+0.364044
+0.541421
+0.120128
+0.342265
+0.466538
+0.457735
+0.235598
+0.226795
+0.351068
+0.573205
+0.246667
+0.300000
+0.446667
+0.500000
+0.210652
+0.263985
+0.482681
+0.536015
+0.205245
+0.329289
+0.488088
+0.470711
+0.275956
+0.258579
+0.417377
+0.541421
+0.173462
+0.342265
+0.519872
+0.457735
+0.288932
+0.226795
+0.404402
+0.573205
+0.300000
+0.300000
+0.500000
+0.500000
+0.263985
+0.263985
+0.536015
+0.536015
+0.258579
+0.329289
+0.541421
+0.470711
+0.329289
+0.258579
+0.470711
+0.541421
+0.226795
+0.342265
+0.573205
+0.457735
+0.342265
+0.226795
+0.457735
+0.573205
+0.353333
+0.300000
+0.553333
+0.500000
+0.317319
+0.263985
+0.589348
+0.536015
+0.311912
+0.329289
+0.594755
+0.470711
+0.382623
+0.258579
+0.524044
+0.541421
+0.280128
+0.342265
+0.626538
+0.457735
+0.395598
+0.226795
+0.511068
+0.573205
+0.406667
+0.300000
+0.606667
+0.500000
+0.370652
+0.263985
+0.642681
+0.536015
+0.365245
+0.329289
+0.648088
+0.470711
+0.435956
+0.258579
+0.577377
+0.541421
+0.333462
+0.342265
+0.679872
+0.457735
+0.448932
+0.226795
+0.564402
+0.573205
+0.460000
+0.300000
+0.660000
+0.500000
+0.423985
+0.263985
+0.696015
+0.536015
+0.418579
+0.329289
+0.701421
+0.470711
+0.489289
+0.258579
+0.630711
+0.541421
+0.386795
+0.342265
+0.733205
+0.457735
+0.502265
+0.226795
+0.617735
+0.573205
+0.513333
+0.300000
+0.713333
+0.500000
+0.477319
+0.263985
+0.749348
+0.536015
+0.471912
+0.329289
+0.754755
+0.470711
+0.542623
+0.258579
+0.684044
+0.541421
+0.440128
+0.342265
+0.786538
+0.457735
+0.555598
+0.226795
+0.671068
+0.573205
+0.566667
+0.300000
+0.766667
+0.500000
+0.530652
+0.263985
+0.802681
+0.536015
+0.525245
+0.329289
+0.808088
+0.470711
+0.595956
+0.258579
+0.737377
+0.541421
+0.493462
+0.342265
+0.839872
+0.457735
+0.608932
+0.226795
+0.724402
+0.573205
+0.620000
+0.300000
+0.820000
+0.500000
+0.583985
+0.263985
+0.856015
+0.536015
+0.578579
+0.329289
+0.861421
+0.470711
+0.649289
+0.258579
+0.790711
+0.541421
+0.546795
+0.342265
+0.893205
+0.457735
+0.662265
+0.226795
+0.777735
+0.573205
+0.673333
+0.300000
+0.873333
+0.500000
+0.637319
+0.263985
+0.909348
+0.536015
+0.631912
+0.329289
+0.914755
+0.470711
+0.702623
+0.258579
+0.844044
+0.541421
+0.600128
+0.342265
+0.946538
+0.457735
+0.715598
+0.226795
+0.831068
+0.573205
+0.726667
+0.300000
+0.926667
+0.500000
+0.690652
+0.263985
+0.962681
+0.536015
+0.685245
+0.329289
+0.968088
+0.470711
+0.755956
+0.258579
+0.897377
+0.541421
+0.653462
+0.342265
+0.999872
+0.457735
+0.768932
+0.226795
+0.884402
+0.573205
+0.780000
+0.300000
+0.980000
+0.500000
+0.743985
+0.263985
+1.016015
+0.536015
+0.738579
+0.329289
+1.021421
+0.470711
+0.809289
+0.258579
+0.950711
+0.541421
+0.706795
+0.342265
+1.053205
+0.457735
+0.822265
+0.226795
+0.937735
+0.573205
+0.833333
+0.300000
+1.033333
+0.500000
+0.797319
+0.263985
+1.069348
+0.536015
+0.791912
+0.329289
+1.074755
+0.470711
+0.862623
+0.258579
+1.004044
+0.541421
+0.760128
+0.342265
+1.106538
+0.457735
+0.875598
+0.226795
+0.991068
+0.573205
+0.886667
+0.300000
+1.086667
+0.500000
+0.850652
+0.263985
+1.122681
+0.536015
+0.845245
+0.329289
+1.128088
+0.470711
+0.915956
+0.258579
+1.057377
+0.541421
+0.813462
+0.342265
+1.159872
+0.457735
+0.928932
+0.226795
+1.044402
+0.573205
+-0.073333
+0.353333
+0.126667
+0.553333
+-0.109348
+0.317319
+0.162681
+0.589348
+-0.114755
+0.382623
+0.168088
+0.524044
+-0.044044
+0.311912
+0.097377
+0.594755
+-0.146538
+0.395598
+0.199872
+0.511068
+-0.031068
+0.280128
+0.084402
+0.626538
+-0.020000
+0.353333
+0.180000
+0.553333
+-0.056015
+0.317319
+0.216015
+0.589348
+-0.061421
+0.382623
+0.221421
+0.524044
+0.009289
+0.311912
+0.150711
+0.594755
+-0.093205
+0.395598
+0.253205
+0.511068
+0.022265
+0.280128
+0.137735
+0.626538
+0.033333
+0.353333
+0.233333
+0.553333
+-0.002681
+0.317319
+0.269348
+0.589348
+-0.008088
+0.382623
+0.274755
+0.524044
+0.062623
+0.311912
+0.204044
+0.594755
+-0.039872
+0.395598
+0.306538
+0.511068
+0.075598
+0.280128
+0.191068
+0.626538
+0.086667
+0.353333
+0.286667
+0.553333
+0.050652
+0.317319
+0.322681
+0.589348
+0.045245
+0.382623
+0.328088
+0.524044
+0.115956
+0.311912
+0.257377
+0.594755
+0.013462
+0.395598
+0.359872
+0.511068
+0.128932
+0.280128
+0.244402
+0.626538
+0.140000
+0.353333
+0.340000
+0.553333
+0.103985
+0.317319
+0.376015
+0.589348
+0.098579
+0.382623
+0.381421
+0.524044
+0.169289
+0.311912
+0.310711
+0.594755
+0.066795
+0.395598
+0.413205
+0.511068
+0.182265
+0.280128
+0.297735
+0.626538
+0.193333
+0.353333
+0.393333
+0.553333
+0.157319
+0.317319
+0.429348
+0.589348
+0.151912
+0.382623
+0.434755
+0.524044
+0.222623
+0.311912
+0.364044
+0.594755
+0.120128
+0.395598
+0.466538
+0.511068
+0.235598
+0.280128
+0.351068
+0.626538
+0.246667
+0.353333
+0.446667
+0.553333
+0.210652
+0.317319
+0.482681
+0.589348
+0.205245
+0.382623
+0.488088
+0.524044
+0.275956
+0.311912
+0.417377
+0.594755
+0.173462
+0.395598
+0.519872
+0.511068
+0.288932
+0.280128
+0.404402
+0.626538
+0.300000
+0.353333
+0.500000
+0.553333
+0.263985
+0.317319
+0.536015
+0.589348
+0.258579
+0.382623
+0.541421
+0.524044
+0.329289
+0.311912
+0.470711
+0.594755
+0.226795
+0.395598
+0.573205
+0.511068
+0.342265
+0.280128
+0.457735
+0.626538
+0.353333
+0.353333
+0.553333
+0.553333
+0.317319
+0.317319
+0.589348
+0.589348
+0.311912
+0.382623
+0.594755
+0.524044
+0.382623
+0.311912
+0.524044
+0.594755
+0.280128
+0.395598
+0.626538
+0.511068
+0.395598
+0.280128
+0.511068
+0.626538
+0.406667
+0.353333
+0.606667
+0.553333
+0.370652
+0.317319
+0.642681
+0.589348
+0.365245
+0.382623
+0.648088
+0.524044
+0.435956
+0.311912
+0.577377
+0.594755
+0.333462
+0.395598
+0.679872
+0.511068
+0.448932
+0.280128
+0.564402
+0.626538
+0.460000
+0.353333
+0.660000
+0.553333
+0.423985
+0.317319
+0.696015
+0.589348
+0.418579
+0.382623
+0.701421
+0.524044
+0.489289
+0.311912
+0.630711
+0.594755
+0.386795
+0.395598
+0.733205
+0.511068
+0.502265
+0.280128
+0.617735
+0.626538
+0.513333
+0.353333
+0.713333
+0.553333
+0.477319
+0.317319
+0.749348
+0.589348
+0.471912
+0.382623
+0.754755
+0.524044
+0.542623
+0.311912
+0.684044
+0.594755
+0.440128
+0.395598
+0.786538
+0.511068
+0.555598
+0.280128
+0.671068
+0.626538
+0.566667
+0.353333
+0.766667
+0.553333
+0.530652
+0.317319
+0.802681
+0.589348
+0.525245
+0.382623
+0.808088
+0.524044
+0.595956
+0.311912
+0.737377
+0.594755
+0.493462
+0.395598
+0.839872
+0.511068
+0.608932
+0.280128
+0.724402
+0.626538
+0.620000
+0.353333
+0.820000
+0.553333
+0.583985
+0.317319
+0.856015
+0.589348
+0.578579
+0.382623
+0.861421
+0.524044
+0.649289
+0.311912
+0.790711
+0.594755
+0.546795
+0.395598
+0.893205
+0.511068
+0.662265
+0.280128
+0.777735
+0.626538
+0.673333
+0.353333
+0.873333
+0.553333
+0.637319
+0.317319
+0.909348
+0.589348
+0.631912
+0.382623
+0.914755
+0.524044
+0.702623
+0.311912
+0.844044
+0.594755
+0.600128
+0.395598
+0.946538
+0.511068
+0.715598
+0.280128
+0.831068
+0.626538
+0.726667
+0.353333
+0.926667
+0.553333
+0.690652
+0.317319
+0.962681
+0.589348
+0.685245
+0.382623
+0.968088
+0.524044
+0.755956
+0.311912
+0.897377
+0.594755
+0.653462
+0.395598
+0.999872
+0.511068
+0.768932
+0.280128
+0.884402
+0.626538
+0.780000
+0.353333
+0.980000
+0.553333
+0.743985
+0.317319
+1.016015
+0.589348
+0.738579
+0.382623
+1.021421
+0.524044
+0.809289
+0.311912
+0.950711
+0.594755
+0.706795
+0.395598
+1.053205
+0.511068
+0.822265
+0.280128
+0.937735
+0.626538
+0.833333
+0.353333
+1.033333
+0.553333
+0.797319
+0.317319
+1.069348
+0.589348
+0.791912
+0.382623
+1.074755
+0.524044
+0.862623
+0.311912
+1.004044
+0.594755
+0.760128
+0.395598
+1.106538
+0.511068
+0.875598
+0.280128
+0.991068
+0.626538
+0.886667
+0.353333
+1.086667
+0.553333
+0.850652
+0.317319
+1.122681
+0.589348
+0.845245
+0.382623
+1.128088
+0.524044
+0.915956
+0.311912
+1.057377
+0.594755
+0.813462
+0.395598
+1.159872
+0.511068
+0.928932
+0.280128
+1.044402
+0.626538
+-0.073333
+0.406667
+0.126667
+0.606667
+-0.109348
+0.370652
+0.162681
+0.642681
+-0.114755
+0.435956
+0.168088
+0.577377
+-0.044044
+0.365245
+0.097377
+0.648088
+-0.146538
+0.448932
+0.199872
+0.564402
+-0.031068
+0.333462
+0.084402
+0.679872
+-0.020000
+0.406667
+0.180000
+0.606667
+-0.056015
+0.370652
+0.216015
+0.642681
+-0.061421
+0.435956
+0.221421
+0.577377
+0.009289
+0.365245
+0.150711
+0.648088
+-0.093205
+0.448932
+0.253205
+0.564402
+0.022265
+0.333462
+0.137735
+0.679872
+0.033333
+0.406667
+0.233333
+0.606667
+-0.002681
+0.370652
+0.269348
+0.642681
+-0.008088
+0.435956
+0.274755
+0.577377
+0.062623
+0.365245
+0.204044
+0.648088
+-0.039872
+0.448932
+0.306538
+0.564402
+0.075598
+0.333462
+0.191068
+0.679872
+0.086667
+0.406667
+0.286667
+0.606667
+0.050652
+0.370652
+0.322681
+0.642681
+0.045245
+0.435956
+0.328088
+0.577377
+0.115956
+0.365245
+0.257377
+0.648088
+0.013462
+0.448932
+0.359872
+0.564402
+0.128932
+0.333462
+0.244402
+0.679872
+0.140000
+0.406667
+0.340000
+0.606667
+0.103985
+0.370652
+0.376015
+0.642681
+0.098579
+0.435956
+0.381421
+0.577377
+0.169289
+0.365245
+0.310711
+0.648088
+0.066795
+0.448932
+0.413205
+0.564402
+0.182265
+0.333462
+0.297735
+0.679872
+0.193333
+0.406667
+0.393333
+0.606667
+0.157319
+0.370652
+0.429348
+0.642681
+0.151912
+0.435956
+0.434755
+0.577377
+0.222623
+0.365245
+0.364044
+0.648088
+0.120128
+0.448932
+0.466538
+0.564402
+0.235598
+0.333462
+0.351068
+0.679872
+0.246667
+0.406667
+0.446667
+0.606667
+0.210652
+0.370652
+0.482681
+0.642681
+0.205245
+0.435956
+0.488088
+0.577377
+0.275956
+0.365245
+0.417377
+0.648088
+0.173462
+0.448932
+0.519872
+0.564402
+0.288932
+0.333462
+0.404402
+0.679872
+0.300000
+0.406667
+0.500000
+0.606667
+0.263985
+0.370652
+0.536015
+0.642681
+0.258579
+0.435956
+0.541421
+0.577377
+0.329289
+0.365245
+0.470711
+0.648088
+0.226795
+0.448932
+0.573205
+0.564402
+0.342265
+0.333462
+0.457735
+0.679872
+0.353333
+0.406667
+0.553333
+0.606667
+0.317319
+0.370652
+0.589348
+0.642681
+0.311912
+0.435956
+0.594755
+0.577377
+0.382623
+0.365245
+0.524044
+0.648088
+0.280128
+0.448932
+0.626538
+0.564402
+0.395598
+0.333462
+0.511068
+0.679872
+0.406667
+0.406667
+0.606667
+0.606667
+0.370652
+0.370652
+0.642681
+0.642681
+0.365245
+0.435956
+0.648088
+0.577377
+0.435956
+0.365245
+0.577377
+0.648088
+0.333462
+0.448932
+0.679872
+0.564402
+0.448932
+0.333462
+0.564402
+0.679872
+0.460000
+0.406667
+0.660000
+0.606667
+0.423985
+0.370652
+0.696015
+0.642681
+0.418579
+0.435956
+0.701421
+0.577377
+0.489289
+0.365245
+0.630711
+0.648088
+0.386795
+0.448932
+0.733205
+0.564402
+0.502265
+0.333462
+0.617735
+0.679872
+0.513333
+0.406667
+0.713333
+0.606667
+0.477319
+0.370652
+0.749348
+0.642681
+0.471912
+0.435956
+0.754755
+0.577377
+0.542623
+0.365245
+0.684044
+0.648088
+0.440128
+0.448932
+0.786538
+0.564402
+0.555598
+0.333462
+0.671068
+0.679872
+0.566667
+0.406667
+0.766667
+0.606667
+0.530652
+0.370652
+0.802681
+0.642681
+0.525245
+0.435956
+0.808088
+0.577377
+0.595956
+0.365245
+0.737377
+0.648088
+0.493462
+0.448932
+0.839872
+0.564402
+0.608932
+0.333462
+0.724402
+0.679872
+0.620000
+0.406667
+0.820000
+0.606667
+0.583985
+0.370652
+0.856015
+0.642681
+0.578579
+0.435956
+0.861421
+0.577377
+0.649289
+0.365245
+0.790711
+0.648088
+0.546795
+0.448932
+0.893205
+0.564402
+0.662265
+0.333462
+0.777735
+0.679872
+0.673333
+0.406667
+0.873333
+0.606667
+0.637319
+0.370652
+0.909348
+0.642681
+0.631912
+0.435956
+0.914755
+0.577377
+0.702623
+0.365245
+0.844044
+0.648088
+0.600128
+0.448932
+0.946538
+0.564402
+0.715598
+0.333462
+0.831068
+0.679872
+0.726667
+0.406667
+0.926667
+0.606667
+0.690652
+0.370652
+0.962681
+0.642681
+0.685245
+0.435956
+0.968088
+0.577377
+0.755956
+0.365245
+0.897377
+0.648088
+0.653462
+0.448932
+0.999872
+0.564402
+0.768932
+0.333462
+0.884402
+0.679872
+0.780000
+0.406667
+0.980000
+0.606667
+0.743985
+0.370652
+1.016015
+0.642681
+0.738579
+0.435956
+1.021421
+0.577377
+0.809289
+0.365245
+0.950711
+0.648088
+0.706795
+0.448932
+1.053205
+0.564402
+0.822265
+0.333462
+0.937735
+0.679872
+0.833333
+0.406667
+1.033333
+0.606667
+0.797319
+0.370652
+1.069348
+0.642681
+0.791912
+0.435956
+1.074755
+0.577377
+0.862623
+0.365245
+1.004044
+0.648088
+0.760128
+0.448932
+1.106538
+0.564402
+0.875598
+0.333462
+0.991068
+0.679872
+0.886667
+0.406667
+1.086667
+0.606667
+0.850652
+0.370652
+1.122681
+0.642681
+0.845245
+0.435956
+1.128088
+0.577377
+0.915956
+0.365245
+1.057377
+0.648088
+0.813462
+0.448932
+1.159872
+0.564402
+0.928932
+0.333462
+1.044402
+0.679872
+-0.073333
+0.460000
+0.126667
+0.660000
+-0.109348
+0.423985
+0.162681
+0.696015
+-0.114755
+0.489289
+0.168088
+0.630711
+-0.044044
+0.418579
+0.097377
+0.701421
+-0.146538
+0.502265
+0.199872
+0.617735
+-0.031068
+0.386795
+0.084402
+0.733205
+-0.020000
+0.460000
+0.180000
+0.660000
+-0.056015
+0.423985
+0.216015
+0.696015
+-0.061421
+0.489289
+0.221421
+0.630711
+0.009289
+0.418579
+0.150711
+0.701421
+-0.093205
+0.502265
+0.253205
+0.617735
+0.022265
+0.386795
+0.137735
+0.733205
+0.033333
+0.460000
+0.233333
+0.660000
+-0.002681
+0.423985
+0.269348
+0.696015
+-0.008088
+0.489289
+0.274755
+0.630711
+0.062623
+0.418579
+0.204044
+0.701421
+-0.039872
+0.502265
+0.306538
+0.617735
+0.075598
+0.386795
+0.191068
+0.733205
+0.086667
+0.460000
+0.286667
+0.660000
+0.050652
+0.423985
+0.322681
+0.696015
+0.045245
+0.489289
+0.328088
+0.630711
+0.115956
+0.418579
+0.257377
+0.701421
+0.013462
+0.502265
+0.359872
+0.617735
+0.128932
+0.386795
+0.244402
+0.733205
+0.140000
+0.460000
+0.340000
+0.660000
+0.103985
+0.423985
+0.376015
+0.696015
+0.098579
+0.489289
+0.381421
+0.630711
+0.169289
+0.418579
+0.310711
+0.701421
+0.066795
+0.502265
+0.413205
+0.617735
+0.182265
+0.386795
+0.297735
+0.733205
+0.193333
+0.460000
+0.393333
+0.660000
+0.157319
+0.423985
+0.429348
+0.696015
+0.151912
+0.489289
+0.434755
+0.630711
+0.222623
+0.418579
+0.364044
+0.701421
+0.120128
+0.502265
+0.466538
+0.617735
+0.235598
+0.386795
+0.351068
+0.733205
+0.246667
+0.460000
+0.446667
+0.660000
+0.210652
+0.423985
+0.482681
+0.696015
+0.205245
+0.489289
+0.488088
+0.630711
+0.275956
+0.418579
+0.417377
+0.701421
+0.173462
+0.502265
+0.519872
+0.617735
+0.288932
+0.386795
+0.404402
+0.733205
+0.300000
+0.460000
+0.500000
+0.660000
+0.263985
+0.423985
+0.536015
+0.696015
+0.258579
+0.489289
+0.541421
+0.630711
+0.329289
+0.418579
+0.470711
+0.701421
+0.226795
+0.502265
+0.573205
+0.617735
+0.342265
+0.386795
+0.457735
+0.733205
+0.353333
+0.460000
+0.553333
+0.660000
+0.317319
+0.423985
+0.589348
+0.696015
+0.311912
+0.489289
+0.594755
+0.630711
+0.382623
+0.418579
+0.524044
+0.701421
+0.280128
+0.502265
+0.626538
+0.617735
+0.395598
+0.386795
+0.511068
+0.733205
+0.406667
+0.460000
+0.606667
+0.660000
+0.370652
+0.423985
+0.642681
+0.696015
+0.365245
+0.489289
+0.648088
+0.630711
+0.435956
+0.418579
+0.577377
+0.701421
+0.333462
+0.502265
+0.679872
+0.617735
+0.448932
+0.386795
+0.564402
+0.733205
+0.460000
+0.460000
+0.660000
+0.660000
+0.423985
+0.423985
+0.696015
+0.696015
+0.418579
+0.489289
+0.701421
+0.630711
+0.489289
+0.418579
+0.630711
+0.701421
+0.386795
+0.502265
+0.733205
+0.617735
+0.502265
+0.386795
+0.617735
+0.733205
+0.513333
+0.460000
+0.713333
+0.660000
+0.477319
+0.423985
+0.749348
+0.696015
+0.471912
+0.489289
+0.754755
+0.630711
+0.542623
+0.418579
+0.684044
+0.701421
+0.440128
+0.502265
+0.786538
+0.617735
+0.555598
+0.386795
+0.671068
+0.733205
+0.566667
+0.460000
+0.766667
+0.660000
+0.530652
+0.423985
+0.802681
+0.696015
+0.525245
+0.489289
+0.808088
+0.630711
+0.595956
+0.418579
+0.737377
+0.701421
+0.493462
+0.502265
+0.839872
+0.617735
+0.608932
+0.386795
+0.724402
+0.733205
+0.620000
+0.460000
+0.820000
+0.660000
+0.583985
+0.423985
+0.856015
+0.696015
+0.578579
+0.489289
+0.861421
+0.630711
+0.649289
+0.418579
+0.790711
+0.701421
+0.546795
+0.502265
+0.893205
+0.617735
+0.662265
+0.386795
+0.777735
+0.733205
+0.673333
+0.460000
+0.873333
+0.660000
+0.637319
+0.423985
+0.909348
+0.696015
+0.631912
+0.489289
+0.914755
+0.630711
+0.702623
+0.418579
+0.844044
+0.701421
+0.600128
+0.502265
+0.946538
+0.617735
+0.715598
+0.386795
+0.831068
+0.733205
+0.726667
+0.460000
+0.926667
+0.660000
+0.690652
+0.423985
+0.962681
+0.696015
+0.685245
+0.489289
+0.968088
+0.630711
+0.755956
+0.418579
+0.897377
+0.701421
+0.653462
+0.502265
+0.999872
+0.617735
+0.768932
+0.386795
+0.884402
+0.733205
+0.780000
+0.460000
+0.980000
+0.660000
+0.743985
+0.423985
+1.016015
+0.696015
+0.738579
+0.489289
+1.021421
+0.630711
+0.809289
+0.418579
+0.950711
+0.701421
+0.706795
+0.502265
+1.053205
+0.617735
+0.822265
+0.386795
+0.937735
+0.733205
+0.833333
+0.460000
+1.033333
+0.660000
+0.797319
+0.423985
+1.069348
+0.696015
+0.791912
+0.489289
+1.074755
+0.630711
+0.862623
+0.418579
+1.004044
+0.701421
+0.760128
+0.502265
+1.106538
+0.617735
+0.875598
+0.386795
+0.991068
+0.733205
+0.886667
+0.460000
+1.086667
+0.660000
+0.850652
+0.423985
+1.122681
+0.696015
+0.845245
+0.489289
+1.128088
+0.630711
+0.915956
+0.418579
+1.057377
+0.701421
+0.813462
+0.502265
+1.159872
+0.617735
+0.928932
+0.386795
+1.044402
+0.733205
+-0.073333
+0.513333
+0.126667
+0.713333
+-0.109348
+0.477319
+0.162681
+0.749348
+-0.114755
+0.542623
+0.168088
+0.684044
+-0.044044
+0.471912
+0.097377
+0.754755
+-0.146538
+0.555598
+0.199872
+0.671068
+-0.031068
+0.440128
+0.084402
+0.786538
+-0.020000
+0.513333
+0.180000
+0.713333
+-0.056015
+0.477319
+0.216015
+0.749348
+-0.061421
+0.542623
+0.221421
+0.684044
+0.009289
+0.471912
+0.150711
+0.754755
+-0.093205
+0.555598
+0.253205
+0.671068
+0.022265
+0.440128
+0.137735
+0.786538
+0.033333
+0.513333
+0.233333
+0.713333
+-0.002681
+0.477319
+0.269348
+0.749348
+-0.008088
+0.542623
+0.274755
+0.684044
+0.062623
+0.471912
+0.204044
+0.754755
+-0.039872
+0.555598
+0.306538
+0.671068
+0.075598
+0.440128
+0.191068
+0.786538
+0.086667
+0.513333
+0.286667
+0.713333
+0.050652
+0.477319
+0.322681
+0.749348
+0.045245
+0.542623
+0.328088
+0.684044
+0.115956
+0.471912
+0.257377
+0.754755
+0.013462
+0.555598
+0.359872
+0.671068
+0.128932
+0.440128
+0.244402
+0.786538
+0.140000
+0.513333
+0.340000
+0.713333
+0.103985
+0.477319
+0.376015
+0.749348
+0.098579
+0.542623
+0.381421
+0.684044
+0.169289
+0.471912
+0.310711
+0.754755
+0.066795
+0.555598
+0.413205
+0.671068
+0.182265
+0.440128
+0.297735
+0.786538
+0.193333
+0.513333
+0.393333
+0.713333
+0.157319
+0.477319
+0.429348
+0.749348
+0.151912
+0.542623
+0.434755
+0.684044
+0.222623
+0.471912
+0.364044
+0.754755
+0.120128
+0.555598
+0.466538
+0.671068
+0.235598
+0.440128
+0.351068
+0.786538
+0.246667
+0.513333
+0.446667
+0.713333
+0.210652
+0.477319
+0.482681
+0.749348
+0.205245
+0.542623
+0.488088
+0.684044
+0.275956
+0.471912
+0.417377
+0.754755
+0.173462
+0.555598
+0.519872
+0.671068
+0.288932
+0.440128
+0.404402
+0.786538
+0.300000
+0.513333
+0.500000
+0.713333
+0.263985
+0.477319
+0.536015
+0.749348
+0.258579
+0.542623
+0.541421
+0.684044
+0.329289
+0.471912
+0.470711
+0.754755
+0.226795
+0.555598
+0.573205
+0.671068
+0.342265
+0.440128
+0.457735
+0.786538
+0.353333
+0.513333
+0.553333
+0.713333
+0.317319
+0.477319
+0.589348
+0.749348
+0.311912
+0.542623
+0.594755
+0.684044
+0.382623
+0.471912
+0.524044
+0.754755
+0.280128
+0.555598
+0.626538
+0.671068
+0.395598
+0.440128
+0.511068
+0.786538
+0.406667
+0.513333
+0.606667
+0.713333
+0.370652
+0.477319
+0.642681
+0.749348
+0.365245
+0.542623
+0.648088
+0.684044
+0.435956
+0.471912
+0.577377
+0.754755
+0.333462
+0.555598
+0.679872
+0.671068
+0.448932
+0.440128
+0.564402
+0.786538
+0.460000
+0.513333
+0.660000
+0.713333
+0.423985
+0.477319
+0.696015
+0.749348
+0.418579
+0.542623
+0.701421
+0.684044
+0.489289
+0.471912
+0.630711
+0.754755
+0.386795
+0.555598
+0.733205
+0.671068
+0.502265
+0.440128
+0.617735
+0.786538
+0.513333
+0.513333
+0.713333
+0.713333
+0.477319
+0.477319
+0.749348
+0.749348
+0.471912
+0.542623
+0.754755
+0.684044
+0.542623
+0.471912
+0.684044
+0.754755
+0.440128
+0.555598
+0.786538
+0.671068
+0.555598
+0.440128
+0.671068
+0.786538
+0.566667
+0.513333
+0.766667
+0.713333
+0.530652
+0.477319
+0.802681
+0.749348
+0.525245
+0.542623
+0.808088
+0.684044
+0.595956
+0.471912
+0.737377
+0.754755
+0.493462
+0.555598
+0.839872
+0.671068
+0.608932
+0.440128
+0.724402
+0.786538
+0.620000
+0.513333
+0.820000
+0.713333
+0.583985
+0.477319
+0.856015
+0.749348
+0.578579
+0.542623
+0.861421
+0.684044
+0.649289
+0.471912
+0.790711
+0.754755
+0.546795
+0.555598
+0.893205
+0.671068
+0.662265
+0.440128
+0.777735
+0.786538
+0.673333
+0.513333
+0.873333
+0.713333
+0.637319
+0.477319
+0.909348
+0.749348
+0.631912
+0.542623
+0.914755
+0.684044
+0.702623
+0.471912
+0.844044
+0.754755
+0.600128
+0.555598
+0.946538
+0.671068
+0.715598
+0.440128
+0.831068
+0.786538
+0.726667
+0.513333
+0.926667
+0.713333
+0.690652
+0.477319
+0.962681
+0.749348
+0.685245
+0.542623
+0.968088
+0.684044
+0.755956
+0.471912
+0.897377
+0.754755
+0.653462
+0.555598
+0.999872
+0.671068
+0.768932
+0.440128
+0.884402
+0.786538
+0.780000
+0.513333
+0.980000
+0.713333
+0.743985
+0.477319
+1.016015
+0.749348
+0.738579
+0.542623
+1.021421
+0.684044
+0.809289
+0.471912
+0.950711
+0.754755
+0.706795
+0.555598
+1.053205
+0.671068
+0.822265
+0.440128
+0.937735
+0.786538
+0.833333
+0.513333
+1.033333
+0.713333
+0.797319
+0.477319
+1.069348
+0.749348
+0.791912
+0.542623
+1.074755
+0.684044
+0.862623
+0.471912
+1.004044
+0.754755
+0.760128
+0.555598
+1.106538
+0.671068
+0.875598
+0.440128
+0.991068
+0.786538
+0.886667
+0.513333
+1.086667
+0.713333
+0.850652
+0.477319
+1.122681
+0.749348
+0.845245
+0.542623
+1.128088
+0.684044
+0.915956
+0.471912
+1.057377
+0.754755
+0.813462
+0.555598
+1.159872
+0.671068
+0.928932
+0.440128
+1.044402
+0.786538
+-0.073333
+0.566667
+0.126667
+0.766667
+-0.109348
+0.530652
+0.162681
+0.802681
+-0.114755
+0.595956
+0.168088
+0.737377
+-0.044044
+0.525245
+0.097377
+0.808088
+-0.146538
+0.608932
+0.199872
+0.724402
+-0.031068
+0.493462
+0.084402
+0.839872
+-0.020000
+0.566667
+0.180000
+0.766667
+-0.056015
+0.530652
+0.216015
+0.802681
+-0.061421
+0.595956
+0.221421
+0.737377
+0.009289
+0.525245
+0.150711
+0.808088
+-0.093205
+0.608932
+0.253205
+0.724402
+0.022265
+0.493462
+0.137735
+0.839872
+0.033333
+0.566667
+0.233333
+0.766667
+-0.002681
+0.530652
+0.269348
+0.802681
+-0.008088
+0.595956
+0.274755
+0.737377
+0.062623
+0.525245
+0.204044
+0.808088
+-0.039872
+0.608932
+0.306538
+0.724402
+0.075598
+0.493462
+0.191068
+0.839872
+0.086667
+0.566667
+0.286667
+0.766667
+0.050652
+0.530652
+0.322681
+0.802681
+0.045245
+0.595956
+0.328088
+0.737377
+0.115956
+0.525245
+0.257377
+0.808088
+0.013462
+0.608932
+0.359872
+0.724402
+0.128932
+0.493462
+0.244402
+0.839872
+0.140000
+0.566667
+0.340000
+0.766667
+0.103985
+0.530652
+0.376015
+0.802681
+0.098579
+0.595956
+0.381421
+0.737377
+0.169289
+0.525245
+0.310711
+0.808088
+0.066795
+0.608932
+0.413205
+0.724402
+0.182265
+0.493462
+0.297735
+0.839872
+0.193333
+0.566667
+0.393333
+0.766667
+0.157319
+0.530652
+0.429348
+0.802681
+0.151912
+0.595956
+0.434755
+0.737377
+0.222623
+0.525245
+0.364044
+0.808088
+0.120128
+0.608932
+0.466538
+0.724402
+0.235598
+0.493462
+0.351068
+0.839872
+0.246667
+0.566667
+0.446667
+0.766667
+0.210652
+0.530652
+0.482681
+0.802681
+0.205245
+0.595956
+0.488088
+0.737377
+0.275956
+0.525245
+0.417377
+0.808088
+0.173462
+0.608932
+0.519872
+0.724402
+0.288932
+0.493462
+0.404402
+0.839872
+0.300000
+0.566667
+0.500000
+0.766667
+0.263985
+0.530652
+0.536015
+0.802681
+0.258579
+0.595956
+0.541421
+0.737377
+0.329289
+0.525245
+0.470711
+0.808088
+0.226795
+0.608932
+0.573205
+0.724402
+0.342265
+0.493462
+0.457735
+0.839872
+0.353333
+0.566667
+0.553333
+0.766667
+0.317319
+0.530652
+0.589348
+0.802681
+0.311912
+0.595956
+0.594755
+0.737377
+0.382623
+0.525245
+0.524044
+0.808088
+0.280128
+0.608932
+0.626538
+0.724402
+0.395598
+0.493462
+0.511068
+0.839872
+0.406667
+0.566667
+0.606667
+0.766667
+0.370652
+0.530652
+0.642681
+0.802681
+0.365245
+0.595956
+0.648088
+0.737377
+0.435956
+0.525245
+0.577377
+0.808088
+0.333462
+0.608932
+0.679872
+0.724402
+0.448932
+0.493462
+0.564402
+0.839872
+0.460000
+0.566667
+0.660000
+0.766667
+0.423985
+0.530652
+0.696015
+0.802681
+0.418579
+0.595956
+0.701421
+0.737377
+0.489289
+0.525245
+0.630711
+0.808088
+0.386795
+0.608932
+0.733205
+0.724402
+0.502265
+0.493462
+0.617735
+0.839872
+0.513333
+0.566667
+0.713333
+0.766667
+0.477319
+0.530652
+0.749348
+0.802681
+0.471912
+0.595956
+0.754755
+0.737377
+0.542623
+0.525245
+0.684044
+0.808088
+0.440128
+0.608932
+0.786538
+0.724402
+0.555598
+0.493462
+0.671068
+0.839872
+0.566667
+0.566667
+0.766667
+0.766667
+0.530652
+0.530652
+0.802681
+0.802681
+0.525245
+0.595956
+0.808088
+0.737377
+0.595956
+0.525245
+0.737377
+0.808088
+0.493462
+0.608932
+0.839872
+0.724402
+0.608932
+0.493462
+0.724402
+0.839872
+0.620000
+0.566667
+0.820000
+0.766667
+0.583985
+0.530652
+0.856015
+0.802681
+0.578579
+0.595956
+0.861421
+0.737377
+0.649289
+0.525245
+0.790711
+0.808088
+0.546795
+0.608932
+0.893205
+0.724402
+0.662265
+0.493462
+0.777735
+0.839872
+0.673333
+0.566667
+0.873333
+0.766667
+0.637319
+0.530652
+0.909348
+0.802681
+0.631912
+0.595956
+0.914755
+0.737377
+0.702623
+0.525245
+0.844044
+0.808088
+0.600128
+0.608932
+0.946538
+0.724402
+0.715598
+0.493462
+0.831068
+0.839872
+0.726667
+0.566667
+0.926667
+0.766667
+0.690652
+0.530652
+0.962681
+0.802681
+0.685245
+0.595956
+0.968088
+0.737377
+0.755956
+0.525245
+0.897377
+0.808088
+0.653462
+0.608932
+0.999872
+0.724402
+0.768932
+0.493462
+0.884402
+0.839872
+0.780000
+0.566667
+0.980000
+0.766667
+0.743985
+0.530652
+1.016015
+0.802681
+0.738579
+0.595956
+1.021421
+0.737377
+0.809289
+0.525245
+0.950711
+0.808088
+0.706795
+0.608932
+1.053205
+0.724402
+0.822265
+0.493462
+0.937735
+0.839872
+0.833333
+0.566667
+1.033333
+0.766667
+0.797319
+0.530652
+1.069348
+0.802681
+0.791912
+0.595956
+1.074755
+0.737377
+0.862623
+0.525245
+1.004044
+0.808088
+0.760128
+0.608932
+1.106538
+0.724402
+0.875598
+0.493462
+0.991068
+0.839872
+0.886667
+0.566667
+1.086667
+0.766667
+0.850652
+0.530652
+1.122681
+0.802681
+0.845245
+0.595956
+1.128088
+0.737377
+0.915956
+0.525245
+1.057377
+0.808088
+0.813462
+0.608932
+1.159872
+0.724402
+0.928932
+0.493462
+1.044402
+0.839872
+-0.073333
+0.620000
+0.126667
+0.820000
+-0.109348
+0.583985
+0.162681
+0.856015
+-0.114755
+0.649289
+0.168088
+0.790711
+-0.044044
+0.578579
+0.097377
+0.861421
+-0.146538
+0.662265
+0.199872
+0.777735
+-0.031068
+0.546795
+0.084402
+0.893205
+-0.020000
+0.620000
+0.180000
+0.820000
+-0.056015
+0.583985
+0.216015
+0.856015
+-0.061421
+0.649289
+0.221421
+0.790711
+0.009289
+0.578579
+0.150711
+0.861421
+-0.093205
+0.662265
+0.253205
+0.777735
+0.022265
+0.546795
+0.137735
+0.893205
+0.033333
+0.620000
+0.233333
+0.820000
+-0.002681
+0.583985
+0.269348
+0.856015
+-0.008088
+0.649289
+0.274755
+0.790711
+0.062623
+0.578579
+0.204044
+0.861421
+-0.039872
+0.662265
+0.306538
+0.777735
+0.075598
+0.546795
+0.191068
+0.893205
+0.086667
+0.620000
+0.286667
+0.820000
+0.050652
+0.583985
+0.322681
+0.856015
+0.045245
+0.649289
+0.328088
+0.790711
+0.115956
+0.578579
+0.257377
+0.861421
+0.013462
+0.662265
+0.359872
+0.777735
+0.128932
+0.546795
+0.244402
+0.893205
+0.140000
+0.620000
+0.340000
+0.820000
+0.103985
+0.583985
+0.376015
+0.856015
+0.098579
+0.649289
+0.381421
+0.790711
+0.169289
+0.578579
+0.310711
+0.861421
+0.066795
+0.662265
+0.413205
+0.777735
+0.182265
+0.546795
+0.297735
+0.893205
+0.193333
+0.620000
+0.393333
+0.820000
+0.157319
+0.583985
+0.429348
+0.856015
+0.151912
+0.649289
+0.434755
+0.790711
+0.222623
+0.578579
+0.364044
+0.861421
+0.120128
+0.662265
+0.466538
+0.777735
+0.235598
+0.546795
+0.351068
+0.893205
+0.246667
+0.620000
+0.446667
+0.820000
+0.210652
+0.583985
+0.482681
+0.856015
+0.205245
+0.649289
+0.488088
+0.790711
+0.275956
+0.578579
+0.417377
+0.861421
+0.173462
+0.662265
+0.519872
+0.777735
+0.288932
+0.546795
+0.404402
+0.893205
+0.300000
+0.620000
+0.500000
+0.820000
+0.263985
+0.583985
+0.536015
+0.856015
+0.258579
+0.649289
+0.541421
+0.790711
+0.329289
+0.578579
+0.470711
+0.861421
+0.226795
+0.662265
+0.573205
+0.777735
+0.342265
+0.546795
+0.457735
+0.893205
+0.353333
+0.620000
+0.553333
+0.820000
+0.317319
+0.583985
+0.589348
+0.856015
+0.311912
+0.649289
+0.594755
+0.790711
+0.382623
+0.578579
+0.524044
+0.861421
+0.280128
+0.662265
+0.626538
+0.777735
+0.395598
+0.546795
+0.511068
+0.893205
+0.406667
+0.620000
+0.606667
+0.820000
+0.370652
+0.583985
+0.642681
+0.856015
+0.365245
+0.649289
+0.648088
+0.790711
+0.435956
+0.578579
+0.577377
+0.861421
+0.333462
+0.662265
+0.679872
+0.777735
+0.448932
+0.546795
+0.564402
+0.893205
+0.460000
+0.620000
+0.660000
+0.820000
+0.423985
+0.583985
+0.696015
+0.856015
+0.418579
+0.649289
+0.701421
+0.790711
+0.489289
+0.578579
+0.630711
+0.861421
+0.386795
+0.662265
+0.733205
+0.777735
+0.502265
+0.546795
+0.617735
+0.893205
+0.513333
+0.620000
+0.713333
+0.820000
+0.477319
+0.583985
+0.749348
+0.856015
+0.471912
+0.649289
+0.754755
+0.790711
+0.542623
+0.578579
+0.684044
+0.861421
+0.440128
+0.662265
+0.786538
+0.777735
+0.555598
+0.546795
+0.671068
+0.893205
+0.566667
+0.620000
+0.766667
+0.820000
+0.530652
+0.583985
+0.802681
+0.856015
+0.525245
+0.649289
+0.808088
+0.790711
+0.595956
+0.578579
+0.737377
+0.861421
+0.493462
+0.662265
+0.839872
+0.777735
+0.608932
+0.546795
+0.724402
+0.893205
+0.620000
+0.620000
+0.820000
+0.820000
+0.583985
+0.583985
+0.856015
+0.856015
+0.578579
+0.649289
+0.861421
+0.790711
+0.649289
+0.578579
+0.790711
+0.861421
+0.546795
+0.662265
+0.893205
+0.777735
+0.662265
+0.546795
+0.777735
+0.893205
+0.673333
+0.620000
+0.873333
+0.820000
+0.637319
+0.583985
+0.909348
+0.856015
+0.631912
+0.649289
+0.914755
+0.790711
+0.702623
+0.578579
+0.844044
+0.861421
+0.600128
+0.662265
+0.946538
+0.777735
+0.715598
+0.546795
+0.831068
+0.893205
+0.726667
+0.620000
+0.926667
+0.820000
+0.690652
+0.583985
+0.962681
+0.856015
+0.685245
+0.649289
+0.968088
+0.790711
+0.755956
+0.578579
+0.897377
+0.861421
+0.653462
+0.662265
+0.999872
+0.777735
+0.768932
+0.546795
+0.884402
+0.893205
+0.780000
+0.620000
+0.980000
+0.820000
+0.743985
+0.583985
+1.016015
+0.856015
+0.738579
+0.649289
+1.021421
+0.790711
+0.809289
+0.578579
+0.950711
+0.861421
+0.706795
+0.662265
+1.053205
+0.777735
+0.822265
+0.546795
+0.937735
+0.893205
+0.833333
+0.620000
+1.033333
+0.820000
+0.797319
+0.583985
+1.069348
+0.856015
+0.791912
+0.649289
+1.074755
+0.790711
+0.862623
+0.578579
+1.004044
+0.861421
+0.760128
+0.662265
+1.106538
+0.777735
+0.875598
+0.546795
+0.991068
+0.893205
+0.886667
+0.620000
+1.086667
+0.820000
+0.850652
+0.583985
+1.122681
+0.856015
+0.845245
+0.649289
+1.128088
+0.790711
+0.915956
+0.578579
+1.057377
+0.861421
+0.813462
+0.662265
+1.159872
+0.777735
+0.928932
+0.546795
+1.044402
+0.893205
+-0.073333
+0.673333
+0.126667
+0.873333
+-0.109348
+0.637319
+0.162681
+0.909348
+-0.114755
+0.702623
+0.168088
+0.844044
+-0.044044
+0.631912
+0.097377
+0.914755
+-0.146538
+0.715598
+0.199872
+0.831068
+-0.031068
+0.600128
+0.084402
+0.946538
+-0.020000
+0.673333
+0.180000
+0.873333
+-0.056015
+0.637319
+0.216015
+0.909348
+-0.061421
+0.702623
+0.221421
+0.844044
+0.009289
+0.631912
+0.150711
+0.914755
+-0.093205
+0.715598
+0.253205
+0.831068
+0.022265
+0.600128
+0.137735
+0.946538
+0.033333
+0.673333
+0.233333
+0.873333
+-0.002681
+0.637319
+0.269348
+0.909348
+-0.008088
+0.702623
+0.274755
+0.844044
+0.062623
+0.631912
+0.204044
+0.914755
+-0.039872
+0.715598
+0.306538
+0.831068
+0.075598
+0.600128
+0.191068
+0.946538
+0.086667
+0.673333
+0.286667
+0.873333
+0.050652
+0.637319
+0.322681
+0.909348
+0.045245
+0.702623
+0.328088
+0.844044
+0.115956
+0.631912
+0.257377
+0.914755
+0.013462
+0.715598
+0.359872
+0.831068
+0.128932
+0.600128
+0.244402
+0.946538
+0.140000
+0.673333
+0.340000
+0.873333
+0.103985
+0.637319
+0.376015
+0.909348
+0.098579
+0.702623
+0.381421
+0.844044
+0.169289
+0.631912
+0.310711
+0.914755
+0.066795
+0.715598
+0.413205
+0.831068
+0.182265
+0.600128
+0.297735
+0.946538
+0.193333
+0.673333
+0.393333
+0.873333
+0.157319
+0.637319
+0.429348
+0.909348
+0.151912
+0.702623
+0.434755
+0.844044
+0.222623
+0.631912
+0.364044
+0.914755
+0.120128
+0.715598
+0.466538
+0.831068
+0.235598
+0.600128
+0.351068
+0.946538
+0.246667
+0.673333
+0.446667
+0.873333
+0.210652
+0.637319
+0.482681
+0.909348
+0.205245
+0.702623
+0.488088
+0.844044
+0.275956
+0.631912
+0.417377
+0.914755
+0.173462
+0.715598
+0.519872
+0.831068
+0.288932
+0.600128
+0.404402
+0.946538
+0.300000
+0.673333
+0.500000
+0.873333
+0.263985
+0.637319
+0.536015
+0.909348
+0.258579
+0.702623
+0.541421
+0.844044
+0.329289
+0.631912
+0.470711
+0.914755
+0.226795
+0.715598
+0.573205
+0.831068
+0.342265
+0.600128
+0.457735
+0.946538
+0.353333
+0.673333
+0.553333
+0.873333
+0.317319
+0.637319
+0.589348
+0.909348
+0.311912
+0.702623
+0.594755
+0.844044
+0.382623
+0.631912
+0.524044
+0.914755
+0.280128
+0.715598
+0.626538
+0.831068
+0.395598
+0.600128
+0.511068
+0.946538
+0.406667
+0.673333
+0.606667
+0.873333
+0.370652
+0.637319
+0.642681
+0.909348
+0.365245
+0.702623
+0.648088
+0.844044
+0.435956
+0.631912
+0.577377
+0.914755
+0.333462
+0.715598
+0.679872
+0.831068
+0.448932
+0.600128
+0.564402
+0.946538
+0.460000
+0.673333
+0.660000
+0.873333
+0.423985
+0.637319
+0.696015
+0.909348
+0.418579
+0.702623
+0.701421
+0.844044
+0.489289
+0.631912
+0.630711
+0.914755
+0.386795
+0.715598
+0.733205
+0.831068
+0.502265
+0.600128
+0.617735
+0.946538
+0.513333
+0.673333
+0.713333
+0.873333
+0.477319
+0.637319
+0.749348
+0.909348
+0.471912
+0.702623
+0.754755
+0.844044
+0.542623
+0.631912
+0.684044
+0.914755
+0.440128
+0.715598
+0.786538
+0.831068
+0.555598
+0.600128
+0.671068
+0.946538
+0.566667
+0.673333
+0.766667
+0.873333
+0.530652
+0.637319
+0.802681
+0.909348
+0.525245
+0.702623
+0.808088
+0.844044
+0.595956
+0.631912
+0.737377
+0.914755
+0.493462
+0.715598
+0.839872
+0.831068
+0.608932
+0.600128
+0.724402
+0.946538
+0.620000
+0.673333
+0.820000
+0.873333
+0.583985
+0.637319
+0.856015
+0.909348
+0.578579
+0.702623
+0.861421
+0.844044
+0.649289
+0.631912
+0.790711
+0.914755
+0.546795
+0.715598
+0.893205
+0.831068
+0.662265
+0.600128
+0.777735
+0.946538
+0.673333
+0.673333
+0.873333
+0.873333
+0.637319
+0.637319
+0.909348
+0.909348
+0.631912
+0.702623
+0.914755
+0.844044
+0.702623
+0.631912
+0.844044
+0.914755
+0.600128
+0.715598
+0.946538
+0.831068
+0.715598
+0.600128
+0.831068
+0.946538
+0.726667
+0.673333
+0.926667
+0.873333
+0.690652
+0.637319
+0.962681
+0.909348
+0.685245
+0.702623
+0.968088
+0.844044
+0.755956
+0.631912
+0.897377
+0.914755
+0.653462
+0.715598
+0.999872
+0.831068
+0.768932
+0.600128
+0.884402
+0.946538
+0.780000
+0.673333
+0.980000
+0.873333
+0.743985
+0.637319
+1.016015
+0.909348
+0.738579
+0.702623
+1.021421
+0.844044
+0.809289
+0.631912
+0.950711
+0.914755
+0.706795
+0.715598
+1.053205
+0.831068
+0.822265
+0.600128
+0.937735
+0.946538
+0.833333
+0.673333
+1.033333
+0.873333
+0.797319
+0.637319
+1.069348
+0.909348
+0.791912
+0.702623
+1.074755
+0.844044
+0.862623
+0.631912
+1.004044
+0.914755
+0.760128
+0.715598
+1.106538
+0.831068
+0.875598
+0.600128
+0.991068
+0.946538
+0.886667
+0.673333
+1.086667
+0.873333
+0.850652
+0.637319
+1.122681
+0.909348
+0.845245
+0.702623
+1.128088
+0.844044
+0.915956
+0.631912
+1.057377
+0.914755
+0.813462
+0.715598
+1.159872
+0.831068
+0.928932
+0.600128
+1.044402
+0.946538
+-0.073333
+0.726667
+0.126667
+0.926667
+-0.109348
+0.690652
+0.162681
+0.962681
+-0.114755
+0.755956
+0.168088
+0.897377
+-0.044044
+0.685245
+0.097377
+0.968088
+-0.146538
+0.768932
+0.199872
+0.884402
+-0.031068
+0.653462
+0.084402
+0.999872
+-0.020000
+0.726667
+0.180000
+0.926667
+-0.056015
+0.690652
+0.216015
+0.962681
+-0.061421
+0.755956
+0.221421
+0.897377
+0.009289
+0.685245
+0.150711
+0.968088
+-0.093205
+0.768932
+0.253205
+0.884402
+0.022265
+0.653462
+0.137735
+0.999872
+0.033333
+0.726667
+0.233333
+0.926667
+-0.002681
+0.690652
+0.269348
+0.962681
+-0.008088
+0.755956
+0.274755
+0.897377
+0.062623
+0.685245
+0.204044
+0.968088
+-0.039872
+0.768932
+0.306538
+0.884402
+0.075598
+0.653462
+0.191068
+0.999872
+0.086667
+0.726667
+0.286667
+0.926667
+0.050652
+0.690652
+0.322681
+0.962681
+0.045245
+0.755956
+0.328088
+0.897377
+0.115956
+0.685245
+0.257377
+0.968088
+0.013462
+0.768932
+0.359872
+0.884402
+0.128932
+0.653462
+0.244402
+0.999872
+0.140000
+0.726667
+0.340000
+0.926667
+0.103985
+0.690652
+0.376015
+0.962681
+0.098579
+0.755956
+0.381421
+0.897377
+0.169289
+0.685245
+0.310711
+0.968088
+0.066795
+0.768932
+0.413205
+0.884402
+0.182265
+0.653462
+0.297735
+0.999872
+0.193333
+0.726667
+0.393333
+0.926667
+0.157319
+0.690652
+0.429348
+0.962681
+0.151912
+0.755956
+0.434755
+0.897377
+0.222623
+0.685245
+0.364044
+0.968088
+0.120128
+0.768932
+0.466538
+0.884402
+0.235598
+0.653462
+0.351068
+0.999872
+0.246667
+0.726667
+0.446667
+0.926667
+0.210652
+0.690652
+0.482681
+0.962681
+0.205245
+0.755956
+0.488088
+0.897377
+0.275956
+0.685245
+0.417377
+0.968088
+0.173462
+0.768932
+0.519872
+0.884402
+0.288932
+0.653462
+0.404402
+0.999872
+0.300000
+0.726667
+0.500000
+0.926667
+0.263985
+0.690652
+0.536015
+0.962681
+0.258579
+0.755956
+0.541421
+0.897377
+0.329289
+0.685245
+0.470711
+0.968088
+0.226795
+0.768932
+0.573205
+0.884402
+0.342265
+0.653462
+0.457735
+0.999872
+0.353333
+0.726667
+0.553333
+0.926667
+0.317319
+0.690652
+0.589348
+0.962681
+0.311912
+0.755956
+0.594755
+0.897377
+0.382623
+0.685245
+0.524044
+0.968088
+0.280128
+0.768932
+0.626538
+0.884402
+0.395598
+0.653462
+0.511068
+0.999872
+0.406667
+0.726667
+0.606667
+0.926667
+0.370652
+0.690652
+0.642681
+0.962681
+0.365245
+0.755956
+0.648088
+0.897377
+0.435956
+0.685245
+0.577377
+0.968088
+0.333462
+0.768932
+0.679872
+0.884402
+0.448932
+0.653462
+0.564402
+0.999872
+0.460000
+0.726667
+0.660000
+0.926667
+0.423985
+0.690652
+0.696015
+0.962681
+0.418579
+0.755956
+0.701421
+0.897377
+0.489289
+0.685245
+0.630711
+0.968088
+0.386795
+0.768932
+0.733205
+0.884402
+0.502265
+0.653462
+0.617735
+0.999872
+0.513333
+0.726667
+0.713333
+0.926667
+0.477319
+0.690652
+0.749348
+0.962681
+0.471912
+0.755956
+0.754755
+0.897377
+0.542623
+0.685245
+0.684044
+0.968088
+0.440128
+0.768932
+0.786538
+0.884402
+0.555598
+0.653462
+0.671068
+0.999872
+0.566667
+0.726667
+0.766667
+0.926667
+0.530652
+0.690652
+0.802681
+0.962681
+0.525245
+0.755956
+0.808088
+0.897377
+0.595956
+0.685245
+0.737377
+0.968088
+0.493462
+0.768932
+0.839872
+0.884402
+0.608932
+0.653462
+0.724402
+0.999872
+0.620000
+0.726667
+0.820000
+0.926667
+0.583985
+0.690652
+0.856015
+0.962681
+0.578579
+0.755956
+0.861421
+0.897377
+0.649289
+0.685245
+0.790711
+0.968088
+0.546795
+0.768932
+0.893205
+0.884402
+0.662265
+0.653462
+0.777735
+0.999872
+0.673333
+0.726667
+0.873333
+0.926667
+0.637319
+0.690652
+0.909348
+0.962681
+0.631912
+0.755956
+0.914755
+0.897377
+0.702623
+0.685245
+0.844044
+0.968088
+0.600128
+0.768932
+0.946538
+0.884402
+0.715598
+0.653462
+0.831068
+0.999872
+0.726667
+0.726667
+0.926667
+0.926667
+0.690652
+0.690652
+0.962681
+0.962681
+0.685245
+0.755956
+0.968088
+0.897377
+0.755956
+0.685245
+0.897377
+0.968088
+0.653462
+0.768932
+0.999872
+0.884402
+0.768932
+0.653462
+0.884402
+0.999872
+0.780000
+0.726667
+0.980000
+0.926667
+0.743985
+0.690652
+1.016015
+0.962681
+0.738579
+0.755956
+1.021421
+0.897377
+0.809289
+0.685245
+0.950711
+0.968088
+0.706795
+0.768932
+1.053205
+0.884402
+0.822265
+0.653462
+0.937735
+0.999872
+0.833333
+0.726667
+1.033333
+0.926667
+0.797319
+0.690652
+1.069348
+0.962681
+0.791912
+0.755956
+1.074755
+0.897377
+0.862623
+0.685245
+1.004044
+0.968088
+0.760128
+0.768932
+1.106538
+0.884402
+0.875598
+0.653462
+0.991068
+0.999872
+0.886667
+0.726667
+1.086667
+0.926667
+0.850652
+0.690652
+1.122681
+0.962681
+0.845245
+0.755956
+1.128088
+0.897377
+0.915956
+0.685245
+1.057377
+0.968088
+0.813462
+0.768932
+1.159872
+0.884402
+0.928932
+0.653462
+1.044402
+0.999872
+-0.073333
+0.780000
+0.126667
+0.980000
+-0.109348
+0.743985
+0.162681
+1.016015
+-0.114755
+0.809289
+0.168088
+0.950711
+-0.044044
+0.738579
+0.097377
+1.021421
+-0.146538
+0.822265
+0.199872
+0.937735
+-0.031068
+0.706795
+0.084402
+1.053205
+-0.020000
+0.780000
+0.180000
+0.980000
+-0.056015
+0.743985
+0.216015
+1.016015
+-0.061421
+0.809289
+0.221421
+0.950711
+0.009289
+0.738579
+0.150711
+1.021421
+-0.093205
+0.822265
+0.253205
+0.937735
+0.022265
+0.706795
+0.137735
+1.053205
+0.033333
+0.780000
+0.233333
+0.980000
+-0.002681
+0.743985
+0.269348
+1.016015
+-0.008088
+0.809289
+0.274755
+0.950711
+0.062623
+0.738579
+0.204044
+1.021421
+-0.039872
+0.822265
+0.306538
+0.937735
+0.075598
+0.706795
+0.191068
+1.053205
+0.086667
+0.780000
+0.286667
+0.980000
+0.050652
+0.743985
+0.322681
+1.016015
+0.045245
+0.809289
+0.328088
+0.950711
+0.115956
+0.738579
+0.257377
+1.021421
+0.013462
+0.822265
+0.359872
+0.937735
+0.128932
+0.706795
+0.244402
+1.053205
+0.140000
+0.780000
+0.340000
+0.980000
+0.103985
+0.743985
+0.376015
+1.016015
+0.098579
+0.809289
+0.381421
+0.950711
+0.169289
+0.738579
+0.310711
+1.021421
+0.066795
+0.822265
+0.413205
+0.937735
+0.182265
+0.706795
+0.297735
+1.053205
+0.193333
+0.780000
+0.393333
+0.980000
+0.157319
+0.743985
+0.429348
+1.016015
+0.151912
+0.809289
+0.434755
+0.950711
+0.222623
+0.738579
+0.364044
+1.021421
+0.120128
+0.822265
+0.466538
+0.937735
+0.235598
+0.706795
+0.351068
+1.053205
+0.246667
+0.780000
+0.446667
+0.980000
+0.210652
+0.743985
+0.482681
+1.016015
+0.205245
+0.809289
+0.488088
+0.950711
+0.275956
+0.738579
+0.417377
+1.021421
+0.173462
+0.822265
+0.519872
+0.937735
+0.288932
+0.706795
+0.404402
+1.053205
+0.300000
+0.780000
+0.500000
+0.980000
+0.263985
+0.743985
+0.536015
+1.016015
+0.258579
+0.809289
+0.541421
+0.950711
+0.329289
+0.738579
+0.470711
+1.021421
+0.226795
+0.822265
+0.573205
+0.937735
+0.342265
+0.706795
+0.457735
+1.053205
+0.353333
+0.780000
+0.553333
+0.980000
+0.317319
+0.743985
+0.589348
+1.016015
+0.311912
+0.809289
+0.594755
+0.950711
+0.382623
+0.738579
+0.524044
+1.021421
+0.280128
+0.822265
+0.626538
+0.937735
+0.395598
+0.706795
+0.511068
+1.053205
+0.406667
+0.780000
+0.606667
+0.980000
+0.370652
+0.743985
+0.642681
+1.016015
+0.365245
+0.809289
+0.648088
+0.950711
+0.435956
+0.738579
+0.577377
+1.021421
+0.333462
+0.822265
+0.679872
+0.937735
+0.448932
+0.706795
+0.564402
+1.053205
+0.460000
+0.780000
+0.660000
+0.980000
+0.423985
+0.743985
+0.696015
+1.016015
+0.418579
+0.809289
+0.701421
+0.950711
+0.489289
+0.738579
+0.630711
+1.021421
+0.386795
+0.822265
+0.733205
+0.937735
+0.502265
+0.706795
+0.617735
+1.053205
+0.513333
+0.780000
+0.713333
+0.980000
+0.477319
+0.743985
+0.749348
+1.016015
+0.471912
+0.809289
+0.754755
+0.950711
+0.542623
+0.738579
+0.684044
+1.021421
+0.440128
+0.822265
+0.786538
+0.937735
+0.555598
+0.706795
+0.671068
+1.053205
+0.566667
+0.780000
+0.766667
+0.980000
+0.530652
+0.743985
+0.802681
+1.016015
+0.525245
+0.809289
+0.808088
+0.950711
+0.595956
+0.738579
+0.737377
+1.021421
+0.493462
+0.822265
+0.839872
+0.937735
+0.608932
+0.706795
+0.724402
+1.053205
+0.620000
+0.780000
+0.820000
+0.980000
+0.583985
+0.743985
+0.856015
+1.016015
+0.578579
+0.809289
+0.861421
+0.950711
+0.649289
+0.738579
+0.790711
+1.021421
+0.546795
+0.822265
+0.893205
+0.937735
+0.662265
+0.706795
+0.777735
+1.053205
+0.673333
+0.780000
+0.873333
+0.980000
+0.637319
+0.743985
+0.909348
+1.016015
+0.631912
+0.809289
+0.914755
+0.950711
+0.702623
+0.738579
+0.844044
+1.021421
+0.600128
+0.822265
+0.946538
+0.937735
+0.715598
+0.706795
+0.831068
+1.053205
+0.726667
+0.780000
+0.926667
+0.980000
+0.690652
+0.743985
+0.962681
+1.016015
+0.685245
+0.809289
+0.968088
+0.950711
+0.755956
+0.738579
+0.897377
+1.021421
+0.653462
+0.822265
+0.999872
+0.937735
+0.768932
+0.706795
+0.884402
+1.053205
+0.780000
+0.780000
+0.980000
+0.980000
+0.743985
+0.743985
+1.016015
+1.016015
+0.738579
+0.809289
+1.021421
+0.950711
+0.809289
+0.738579
+0.950711
+1.021421
+0.706795
+0.822265
+1.053205
+0.937735
+0.822265
+0.706795
+0.937735
+1.053205
+0.833333
+0.780000
+1.033333
+0.980000
+0.797319
+0.743985
+1.069348
+1.016015
+0.791912
+0.809289
+1.074755
+0.950711
+0.862623
+0.738579
+1.004044
+1.021421
+0.760128
+0.822265
+1.106538
+0.937735
+0.875598
+0.706795
+0.991068
+1.053205
+0.886667
+0.780000
+1.086667
+0.980000
+0.850652
+0.743985
+1.122681
+1.016015
+0.845245
+0.809289
+1.128088
+0.950711
+0.915956
+0.738579
+1.057377
+1.021421
+0.813462
+0.822265
+1.159872
+0.937735
+0.928932
+0.706795
+1.044402
+1.053205
+-0.073333
+0.833333
+0.126667
+1.033333
+-0.109348
+0.797319
+0.162681
+1.069348
+-0.114755
+0.862623
+0.168088
+1.004044
+-0.044044
+0.791912
+0.097377
+1.074755
+-0.146538
+0.875598
+0.199872
+0.991068
+-0.031068
+0.760128
+0.084402
+1.106538
+-0.020000
+0.833333
+0.180000
+1.033333
+-0.056015
+0.797319
+0.216015
+1.069348
+-0.061421
+0.862623
+0.221421
+1.004044
+0.009289
+0.791912
+0.150711
+1.074755
+-0.093205
+0.875598
+0.253205
+0.991068
+0.022265
+0.760128
+0.137735
+1.106538
+0.033333
+0.833333
+0.233333
+1.033333
+-0.002681
+0.797319
+0.269348
+1.069348
+-0.008088
+0.862623
+0.274755
+1.004044
+0.062623
+0.791912
+0.204044
+1.074755
+-0.039872
+0.875598
+0.306538
+0.991068
+0.075598
+0.760128
+0.191068
+1.106538
+0.086667
+0.833333
+0.286667
+1.033333
+0.050652
+0.797319
+0.322681
+1.069348
+0.045245
+0.862623
+0.328088
+1.004044
+0.115956
+0.791912
+0.257377
+1.074755
+0.013462
+0.875598
+0.359872
+0.991068
+0.128932
+0.760128
+0.244402
+1.106538
+0.140000
+0.833333
+0.340000
+1.033333
+0.103985
+0.797319
+0.376015
+1.069348
+0.098579
+0.862623
+0.381421
+1.004044
+0.169289
+0.791912
+0.310711
+1.074755
+0.066795
+0.875598
+0.413205
+0.991068
+0.182265
+0.760128
+0.297735
+1.106538
+0.193333
+0.833333
+0.393333
+1.033333
+0.157319
+0.797319
+0.429348
+1.069348
+0.151912
+0.862623
+0.434755
+1.004044
+0.222623
+0.791912
+0.364044
+1.074755
+0.120128
+0.875598
+0.466538
+0.991068
+0.235598
+0.760128
+0.351068
+1.106538
+0.246667
+0.833333
+0.446667
+1.033333
+0.210652
+0.797319
+0.482681
+1.069348
+0.205245
+0.862623
+0.488088
+1.004044
+0.275956
+0.791912
+0.417377
+1.074755
+0.173462
+0.875598
+0.519872
+0.991068
+0.288932
+0.760128
+0.404402
+1.106538
+0.300000
+0.833333
+0.500000
+1.033333
+0.263985
+0.797319
+0.536015
+1.069348
+0.258579
+0.862623
+0.541421
+1.004044
+0.329289
+0.791912
+0.470711
+1.074755
+0.226795
+0.875598
+0.573205
+0.991068
+0.342265
+0.760128
+0.457735
+1.106538
+0.353333
+0.833333
+0.553333
+1.033333
+0.317319
+0.797319
+0.589348
+1.069348
+0.311912
+0.862623
+0.594755
+1.004044
+0.382623
+0.791912
+0.524044
+1.074755
+0.280128
+0.875598
+0.626538
+0.991068
+0.395598
+0.760128
+0.511068
+1.106538
+0.406667
+0.833333
+0.606667
+1.033333
+0.370652
+0.797319
+0.642681
+1.069348
+0.365245
+0.862623
+0.648088
+1.004044
+0.435956
+0.791912
+0.577377
+1.074755
+0.333462
+0.875598
+0.679872
+0.991068
+0.448932
+0.760128
+0.564402
+1.106538
+0.460000
+0.833333
+0.660000
+1.033333
+0.423985
+0.797319
+0.696015
+1.069348
+0.418579
+0.862623
+0.701421
+1.004044
+0.489289
+0.791912
+0.630711
+1.074755
+0.386795
+0.875598
+0.733205
+0.991068
+0.502265
+0.760128
+0.617735
+1.106538
+0.513333
+0.833333
+0.713333
+1.033333
+0.477319
+0.797319
+0.749348
+1.069348
+0.471912
+0.862623
+0.754755
+1.004044
+0.542623
+0.791912
+0.684044
+1.074755
+0.440128
+0.875598
+0.786538
+0.991068
+0.555598
+0.760128
+0.671068
+1.106538
+0.566667
+0.833333
+0.766667
+1.033333
+0.530652
+0.797319
+0.802681
+1.069348
+0.525245
+0.862623
+0.808088
+1.004044
+0.595956
+0.791912
+0.737377
+1.074755
+0.493462
+0.875598
+0.839872
+0.991068
+0.608932
+0.760128
+0.724402
+1.106538
+0.620000
+0.833333
+0.820000
+1.033333
+0.583985
+0.797319
+0.856015
+1.069348
+0.578579
+0.862623
+0.861421
+1.004044
+0.649289
+0.791912
+0.790711
+1.074755
+0.546795
+0.875598
+0.893205
+0.991068
+0.662265
+0.760128
+0.777735
+1.106538
+0.673333
+0.833333
+0.873333
+1.033333
+0.637319
+0.797319
+0.909348
+1.069348
+0.631912
+0.862623
+0.914755
+1.004044
+0.702623
+0.791912
+0.844044
+1.074755
+0.600128
+0.875598
+0.946538
+0.991068
+0.715598
+0.760128
+0.831068
+1.106538
+0.726667
+0.833333
+0.926667
+1.033333
+0.690652
+0.797319
+0.962681
+1.069348
+0.685245
+0.862623
+0.968088
+1.004044
+0.755956
+0.791912
+0.897377
+1.074755
+0.653462
+0.875598
+0.999872
+0.991068
+0.768932
+0.760128
+0.884402
+1.106538
+0.780000
+0.833333
+0.980000
+1.033333
+0.743985
+0.797319
+1.016015
+1.069348
+0.738579
+0.862623
+1.021421
+1.004044
+0.809289
+0.791912
+0.950711
+1.074755
+0.706795
+0.875598
+1.053205
+0.991068
+0.822265
+0.760128
+0.937735
+1.106538
+0.833333
+0.833333
+1.033333
+1.033333
+0.797319
+0.797319
+1.069348
+1.069348
+0.791912
+0.862623
+1.074755
+1.004044
+0.862623
+0.791912
+1.004044
+1.074755
+0.760128
+0.875598
+1.106538
+0.991068
+0.875598
+0.760128
+0.991068
+1.106538
+0.886667
+0.833333
+1.086667
+1.033333
+0.850652
+0.797319
+1.122681
+1.069348
+0.845245
+0.862623
+1.128088
+1.004044
+0.915956
+0.791912
+1.057377
+1.074755
+0.813462
+0.875598
+1.159872
+0.991068
+0.928932
+0.760128
+1.044402
+1.106538
+-0.073333
+0.886667
+0.126667
+1.086667
+-0.109348
+0.850652
+0.162681
+1.122681
+-0.114755
+0.915956
+0.168088
+1.057377
+-0.044044
+0.845245
+0.097377
+1.128088
+-0.146538
+0.928932
+0.199872
+1.044402
+-0.031068
+0.813462
+0.084402
+1.159872
+-0.020000
+0.886667
+0.180000
+1.086667
+-0.056015
+0.850652
+0.216015
+1.122681
+-0.061421
+0.915956
+0.221421
+1.057377
+0.009289
+0.845245
+0.150711
+1.128088
+-0.093205
+0.928932
+0.253205
+1.044402
+0.022265
+0.813462
+0.137735
+1.159872
+0.033333
+0.886667
+0.233333
+1.086667
+-0.002681
+0.850652
+0.269348
+1.122681
+-0.008088
+0.915956
+0.274755
+1.057377
+0.062623
+0.845245
+0.204044
+1.128088
+-0.039872
+0.928932
+0.306538
+1.044402
+0.075598
+0.813462
+0.191068
+1.159872
+0.086667
+0.886667
+0.286667
+1.086667
+0.050652
+0.850652
+0.322681
+1.122681
+0.045245
+0.915956
+0.328088
+1.057377
+0.115956
+0.845245
+0.257377
+1.128088
+0.013462
+0.928932
+0.359872
+1.044402
+0.128932
+0.813462
+0.244402
+1.159872
+0.140000
+0.886667
+0.340000
+1.086667
+0.103985
+0.850652
+0.376015
+1.122681
+0.098579
+0.915956
+0.381421
+1.057377
+0.169289
+0.845245
+0.310711
+1.128088
+0.066795
+0.928932
+0.413205
+1.044402
+0.182265
+0.813462
+0.297735
+1.159872
+0.193333
+0.886667
+0.393333
+1.086667
+0.157319
+0.850652
+0.429348
+1.122681
+0.151912
+0.915956
+0.434755
+1.057377
+0.222623
+0.845245
+0.364044
+1.128088
+0.120128
+0.928932
+0.466538
+1.044402
+0.235598
+0.813462
+0.351068
+1.159872
+0.246667
+0.886667
+0.446667
+1.086667
+0.210652
+0.850652
+0.482681
+1.122681
+0.205245
+0.915956
+0.488088
+1.057377
+0.275956
+0.845245
+0.417377
+1.128088
+0.173462
+0.928932
+0.519872
+1.044402
+0.288932
+0.813462
+0.404402
+1.159872
+0.300000
+0.886667
+0.500000
+1.086667
+0.263985
+0.850652
+0.536015
+1.122681
+0.258579
+0.915956
+0.541421
+1.057377
+0.329289
+0.845245
+0.470711
+1.128088
+0.226795
+0.928932
+0.573205
+1.044402
+0.342265
+0.813462
+0.457735
+1.159872
+0.353333
+0.886667
+0.553333
+1.086667
+0.317319
+0.850652
+0.589348
+1.122681
+0.311912
+0.915956
+0.594755
+1.057377
+0.382623
+0.845245
+0.524044
+1.128088
+0.280128
+0.928932
+0.626538
+1.044402
+0.395598
+0.813462
+0.511068
+1.159872
+0.406667
+0.886667
+0.606667
+1.086667
+0.370652
+0.850652
+0.642681
+1.122681
+0.365245
+0.915956
+0.648088
+1.057377
+0.435956
+0.845245
+0.577377
+1.128088
+0.333462
+0.928932
+0.679872
+1.044402
+0.448932
+0.813462
+0.564402
+1.159872
+0.460000
+0.886667
+0.660000
+1.086667
+0.423985
+0.850652
+0.696015
+1.122681
+0.418579
+0.915956
+0.701421
+1.057377
+0.489289
+0.845245
+0.630711
+1.128088
+0.386795
+0.928932
+0.733205
+1.044402
+0.502265
+0.813462
+0.617735
+1.159872
+0.513333
+0.886667
+0.713333
+1.086667
+0.477319
+0.850652
+0.749348
+1.122681
+0.471912
+0.915956
+0.754755
+1.057377
+0.542623
+0.845245
+0.684044
+1.128088
+0.440128
+0.928932
+0.786538
+1.044402
+0.555598
+0.813462
+0.671068
+1.159872
+0.566667
+0.886667
+0.766667
+1.086667
+0.530652
+0.850652
+0.802681
+1.122681
+0.525245
+0.915956
+0.808088
+1.057377
+0.595956
+0.845245
+0.737377
+1.128088
+0.493462
+0.928932
+0.839872
+1.044402
+0.608932
+0.813462
+0.724402
+1.159872
+0.620000
+0.886667
+0.820000
+1.086667
+0.583985
+0.850652
+0.856015
+1.122681
+0.578579
+0.915956
+0.861421
+1.057377
+0.649289
+0.845245
+0.790711
+1.128088
+0.546795
+0.928932
+0.893205
+1.044402
+0.662265
+0.813462
+0.777735
+1.159872
+0.673333
+0.886667
+0.873333
+1.086667
+0.637319
+0.850652
+0.909348
+1.122681
+0.631912
+0.915956
+0.914755
+1.057377
+0.702623
+0.845245
+0.844044
+1.128088
+0.600128
+0.928932
+0.946538
+1.044402
+0.715598
+0.813462
+0.831068
+1.159872
+0.726667
+0.886667
+0.926667
+1.086667
+0.690652
+0.850652
+0.962681
+1.122681
+0.685245
+0.915956
+0.968088
+1.057377
+0.755956
+0.845245
+0.897377
+1.128088
+0.653462
+0.928932
+0.999872
+1.044402
+0.768932
+0.813462
+0.884402
+1.159872
+0.780000
+0.886667
+0.980000
+1.086667
+0.743985
+0.850652
+1.016015
+1.122681
+0.738579
+0.915956
+1.021421
+1.057377
+0.809289
+0.845245
+0.950711
+1.128088
+0.706795
+0.928932
+1.053205
+1.044402
+0.822265
+0.813462
+0.937735
+1.159872
+0.833333
+0.886667
+1.033333
+1.086667
+0.797319
+0.850652
+1.069348
+1.122681
+0.791912
+0.915956
+1.074755
+1.057377
+0.862623
+0.845245
+1.004044
+1.128088
+0.760128
+0.928932
+1.106538
+1.044402
+0.875598
+0.813462
+0.991068
+1.159872
+0.886667
+0.886667
+1.086667
+1.086667
+0.850652
+0.850652
+1.122681
+1.122681
+0.845245
+0.915956
+1.128088
+1.057377
+0.915956
+0.845245
+1.057377
+1.128088
+0.813462
+0.928932
+1.159872
+1.044402
+0.928932
+0.813462
+1.044402
+1.159872
+-0.131667
+-0.131667
+0.238333
+0.238333
+-0.170162
+-0.170162
+0.276828
+0.276828
+-0.208296
+-0.077481
+0.314963
+0.184148
+-0.077481
+-0.208296
+0.184148
+0.314963
+-0.267096
+-0.053476
+0.373763
+0.160143
+-0.053476
+-0.267096
+0.160143
+0.373763
+-0.025000
+-0.131667
+0.345000
+0.238333
+-0.063495
+-0.170162
+0.383495
+0.276828
+-0.101630
+-0.077481
+0.421630
+0.184148
+0.029185
+-0.208296
+0.290815
+0.314963
+-0.160429
+-0.053476
+0.480429
+0.160143
+0.053190
+-0.267096
+0.266810
+0.373763
+0.081667
+-0.131667
+0.451667
+0.238333
+0.043172
+-0.170162
+0.490162
+0.276828
+0.005037
+-0.077481
+0.528296
+0.184148
+0.135852
+-0.208296
+0.397481
+0.314963
+-0.053763
+-0.053476
+0.587096
+0.160143
+0.159857
+-0.267096
+0.373476
+0.373763
+0.188333
+-0.131667
+0.558333
+0.238333
+0.149838
+-0.170162
+0.596828
+0.276828
+0.111704
+-0.077481
+0.634963
+0.184148
+0.242519
+-0.208296
+0.504148
+0.314963
+0.052904
+-0.053476
+0.693763
+0.160143
+0.266524
+-0.267096
+0.480143
+0.373763
+0.295000
+-0.131667
+0.665000
+0.238333
+0.256505
+-0.170162
+0.703495
+0.276828
+0.218370
+-0.077481
+0.741629
+0.184148
+0.349185
+-0.208296
+0.610815
+0.314963
+0.159571
+-0.053476
+0.800429
+0.160143
+0.373190
+-0.267096
+0.586810
+0.373763
+0.401667
+-0.131667
+0.771667
+0.238333
+0.363172
+-0.170162
+0.810162
+0.276828
+0.325037
+-0.077481
+0.848296
+0.184148
+0.455852
+-0.208296
+0.717481
+0.314963
+0.266237
+-0.053476
+0.907096
+0.160143
+0.479857
+-0.267096
+0.693476
+0.373763
+0.508333
+-0.131667
+0.878333
+0.238333
+0.469838
+-0.170162
+0.916828
+0.276828
+0.431704
+-0.077481
+0.954963
+0.184148
+0.562519
+-0.208296
+0.824148
+0.314963
+0.372904
+-0.053476
+1.013763
+0.160143
+0.586524
+-0.267096
+0.800143
+0.373763
+0.615000
+-0.131667
+0.985000
+0.238333
+0.576505
+-0.170162
+1.023495
+0.276828
+0.538370
+-0.077481
+1.061630
+0.184148
+0.669185
+-0.208296
+0.930815
+0.314963
+0.479571
+-0.053476
+1.120429
+0.160143
+0.693190
+-0.267096
+0.906810
+0.373763
+0.721667
+-0.131667
+1.091667
+0.238333
+0.683172
+-0.170162
+1.130162
+0.276828
+0.645037
+-0.077481
+1.168296
+0.184148
+0.775852
+-0.208296
+1.037481
+0.314963
+0.586237
+-0.053476
+1.227096
+0.160143
+0.799857
+-0.267096
+1.013476
+0.373763
+0.828333
+-0.131667
+1.198333
+0.238333
+0.789838
+-0.170162
+1.236828
+0.276828
+0.751704
+-0.077481
+1.274963
+0.184148
+0.882519
+-0.208296
+1.144148
+0.314963
+0.692904
+-0.053476
+1.333763
+0.160143
+0.906524
+-0.267096
+1.120143
+0.373763
+-0.131667
+-0.025000
+0.238333
+0.345000
+-0.170162
+-0.063495
+0.276828
+0.383495
+-0.208296
+0.029185
+0.314963
+0.290815
+-0.077481
+-0.101630
+0.184148
+0.421630
+-0.267096
+0.053190
+0.373763
+0.266810
+-0.053476
+-0.160429
+0.160143
+0.480429
+-0.025000
+-0.025000
+0.345000
+0.345000
+-0.063495
+-0.063495
+0.383495
+0.383495
+-0.101630
+0.029185
+0.421630
+0.290815
+0.029185
+-0.101630
+0.290815
+0.421630
+-0.160429
+0.053190
+0.480429
+0.266810
+0.053190
+-0.160429
+0.266810
+0.480429
+0.081667
+-0.025000
+0.451667
+0.345000
+0.043172
+-0.063495
+0.490162
+0.383495
+0.005037
+0.029185
+0.528296
+0.290815
+0.135852
+-0.101630
+0.397481
+0.421630
+-0.053763
+0.053190
+0.587096
+0.266810
+0.159857
+-0.160429
+0.373476
+0.480429
+0.188333
+-0.025000
+0.558333
+0.345000
+0.149838
+-0.063495
+0.596828
+0.383495
+0.111704
+0.029185
+0.634963
+0.290815
+0.242519
+-0.101630
+0.504148
+0.421630
+0.052904
+0.053190
+0.693763
+0.266810
+0.266524
+-0.160429
+0.480143
+0.480429
+0.295000
+-0.025000
+0.665000
+0.345000
+0.256505
+-0.063495
+0.703495
+0.383495
+0.218370
+0.029185
+0.741629
+0.290815
+0.349185
+-0.101630
+0.610815
+0.421630
+0.159571
+0.053190
+0.800429
+0.266810
+0.373190
+-0.160429
+0.586810
+0.480429
+0.401667
+-0.025000
+0.771667
+0.345000
+0.363172
+-0.063495
+0.810162
+0.383495
+0.325037
+0.029185
+0.848296
+0.290815
+0.455852
+-0.101630
+0.717481
+0.421630
+0.266237
+0.053190
+0.907096
+0.266810
+0.479857
+-0.160429
+0.693476
+0.480429
+0.508333
+-0.025000
+0.878333
+0.345000
+0.469838
+-0.063495
+0.916828
+0.383495
+0.431704
+0.029185
+0.954963
+0.290815
+0.562519
+-0.101630
+0.824148
+0.421630
+0.372904
+0.053190
+1.013763
+0.266810
+0.586524
+-0.160429
+0.800143
+0.480429
+0.615000
+-0.025000
+0.985000
+0.345000
+0.576505
+-0.063495
+1.023495
+0.383495
+0.538370
+0.029185
+1.061630
+0.290815
+0.669185
+-0.101630
+0.930815
+0.421630
+0.479571
+0.053190
+1.120429
+0.266810
+0.693190
+-0.160429
+0.906810
+0.480429
+0.721667
+-0.025000
+1.091667
+0.345000
+0.683172
+-0.063495
+1.130162
+0.383495
+0.645037
+0.029185
+1.168296
+0.290815
+0.775852
+-0.101630
+1.037481
+0.421630
+0.586237
+0.053190
+1.227096
+0.266810
+0.799857
+-0.160429
+1.013476
+0.480429
+0.828333
+-0.025000
+1.198333
+0.345000
+0.789838
+-0.063495
+1.236828
+0.383495
+0.751704
+0.029185
+1.274963
+0.290815
+0.882519
+-0.101630
+1.144148
+0.421630
+0.692904
+0.053190
+1.333763
+0.266810
+0.906524
+-0.160429
+1.120143
+0.480429
+-0.131667
+0.081667
+0.238333
+0.451667
+-0.170162
+0.043172
+0.276828
+0.490162
+-0.208296
+0.135852
+0.314963
+0.397481
+-0.077481
+0.005037
+0.184148
+0.528296
+-0.267096
+0.159857
+0.373763
+0.373476
+-0.053476
+-0.053763
+0.160143
+0.587096
+-0.025000
+0.081667
+0.345000
+0.451667
+-0.063495
+0.043172
+0.383495
+0.490162
+-0.101630
+0.135852
+0.421630
+0.397481
+0.029185
+0.005037
+0.290815
+0.528296
+-0.160429
+0.159857
+0.480429
+0.373476
+0.053190
+-0.053763
+0.266810
+0.587096
+0.081667
+0.081667
+0.451667
+0.451667
+0.043172
+0.043172
+0.490162
+0.490162
+0.005037
+0.135852
+0.528296
+0.397481
+0.135852
+0.005037
+0.397481
+0.528296
+-0.053763
+0.159857
+0.587096
+0.373476
+0.159857
+-0.053763
+0.373476
+0.587096
+0.188333
+0.081667
+0.558333
+0.451667
+0.149838
+0.043172
+0.596828
+0.490162
+0.111704
+0.135852
+0.634963
+0.397481
+0.242519
+0.005037
+0.504148
+0.528296
+0.052904
+0.159857
+0.693763
+0.373476
+0.266524
+-0.053763
+0.480143
+0.587096
+0.295000
+0.081667
+0.665000
+0.451667
+0.256505
+0.043172
+0.703495
+0.490162
+0.218370
+0.135852
+0.741629
+0.397481
+0.349185
+0.005037
+0.610815
+0.528296
+0.159571
+0.159857
+0.800429
+0.373476
+0.373190
+-0.053763
+0.586810
+0.587096
+0.401667
+0.081667
+0.771667
+0.451667
+0.363172
+0.043172
+0.810162
+0.490162
+0.325037
+0.135852
+0.848296
+0.397481
+0.455852
+0.005037
+0.717481
+0.528296
+0.266237
+0.159857
+0.907096
+0.373476
+0.479857
+-0.053763
+0.693476
+0.587096
+0.508333
+0.081667
+0.878333
+0.451667
+0.469838
+0.043172
+0.916828
+0.490162
+0.431704
+0.135852
+0.954963
+0.397481
+0.562519
+0.005037
+0.824148
+0.528296
+0.372904
+0.159857
+1.013763
+0.373476
+0.586524
+-0.053763
+0.800143
+0.587096
+0.615000
+0.081667
+0.985000
+0.451667
+0.576505
+0.043172
+1.023495
+0.490162
+0.538370
+0.135852
+1.061630
+0.397481
+0.669185
+0.005037
+0.930815
+0.528296
+0.479571
+0.159857
+1.120429
+0.373476
+0.693190
+-0.053763
+0.906810
+0.587096
+0.721667
+0.081667
+1.091667
+0.451667
+0.683172
+0.043172
+1.130162
+0.490162
+0.645037
+0.135852
+1.168296
+0.397481
+0.775852
+0.005037
+1.037481
+0.528296
+0.586237
+0.159857
+1.227096
+0.373476
+0.799857
+-0.053763
+1.013476
+0.587096
+0.828333
+0.081667
+1.198333
+0.451667
+0.789838
+0.043172
+1.236828
+0.490162
+0.751704
+0.135852
+1.274963
+0.397481
+0.882519
+0.005037
+1.144148
+0.528296
+0.692904
+0.159857
+1.333763
+0.373476
+0.906524
+-0.053763
+1.120143
+0.587096
+-0.131667
+0.188333
+0.238333
+0.558333
+-0.170162
+0.149838
+0.276828
+0.596828
+-0.208296
+0.242519
+0.314963
+0.504148
+-0.077481
+0.111704
+0.184148
+0.634963
+-0.267096
+0.266524
+0.373763
+0.480143
+-0.053476
+0.052904
+0.160143
+0.693763
+-0.025000
+0.188333
+0.345000
+0.558333
+-0.063495
+0.149838
+0.383495
+0.596828
+-0.101630
+0.242519
+0.421630
+0.504148
+0.029185
+0.111704
+0.290815
+0.634963
+-0.160429
+0.266524
+0.480429
+0.480143
+0.053190
+0.052904
+0.266810
+0.693763
+0.081667
+0.188333
+0.451667
+0.558333
+0.043172
+0.149838
+0.490162
+0.596828
+0.005037
+0.242519
+0.528296
+0.504148
+0.135852
+0.111704
+0.397481
+0.634963
+-0.053763
+0.266524
+0.587096
+0.480143
+0.159857
+0.052904
+0.373476
+0.693763
+0.188333
+0.188333
+0.558333
+0.558333
+0.149838
+0.149838
+0.596828
+0.596828
+0.111704
+0.242519
+0.634963
+0.504148
+0.242519
+0.111704
+0.504148
+0.634963
+0.052904
+0.266524
+0.693763
+0.480143
+0.266524
+0.052904
+0.480143
+0.693763
+0.295000
+0.188333
+0.665000
+0.558333
+0.256505
+0.149838
+0.703495
+0.596828
+0.218370
+0.242519
+0.741629
+0.504148
+0.349185
+0.111704
+0.610815
+0.634963
+0.159571
+0.266524
+0.800429
+0.480143
+0.373190
+0.052904
+0.586810
+0.693763
+0.401667
+0.188333
+0.771667
+0.558333
+0.363172
+0.149838
+0.810162
+0.596828
+0.325037
+0.242519
+0.848296
+0.504148
+0.455852
+0.111704
+0.717481
+0.634963
+0.266237
+0.266524
+0.907096
+0.480143
+0.479857
+0.052904
+0.693476
+0.693763
+0.508333
+0.188333
+0.878333
+0.558333
+0.469838
+0.149838
+0.916828
+0.596828
+0.431704
+0.242519
+0.954963
+0.504148
+0.562519
+0.111704
+0.824148
+0.634963
+0.372904
+0.266524
+1.013763
+0.480143
+0.586524
+0.052904
+0.800143
+0.693763
+0.615000
+0.188333
+0.985000
+0.558333
+0.576505
+0.149838
+1.023495
+0.596828
+0.538370
+0.242519
+1.061630
+0.504148
+0.669185
+0.111704
+0.930815
+0.634963
+0.479571
+0.266524
+1.120429
+0.480143
+0.693190
+0.052904
+0.906810
+0.693763
+0.721667
+0.188333
+1.091667
+0.558333
+0.683172
+0.149838
+1.130162
+0.596828
+0.645037
+0.242519
+1.168296
+0.504148
+0.775852
+0.111704
+1.037481
+0.634963
+0.586237
+0.266524
+1.227096
+0.480143
+0.799857
+0.052904
+1.013476
+0.693763
+0.828333
+0.188333
+1.198333
+0.558333
+0.789838
+0.149838
+1.236828
+0.596828
+0.751704
+0.242519
+1.274963
+0.504148
+0.882519
+0.111704
+1.144148
+0.634963
+0.692904
+0.266524
+1.333763
+0.480143
+0.906524
+0.052904
+1.120143
+0.693763
+-0.131667
+0.295000
+0.238333
+0.665000
+-0.170162
+0.256505
+0.276828
+0.703495
+-0.208296
+0.349185
+0.314963
+0.610815
+-0.077481
+0.218370
+0.184148
+0.741629
+-0.267096
+0.373190
+0.373763
+0.586810
+-0.053476
+0.159571
+0.160143
+0.800429
+-0.025000
+0.295000
+0.345000
+0.665000
+-0.063495
+0.256505
+0.383495
+0.703495
+-0.101630
+0.349185
+0.421630
+0.610815
+0.029185
+0.218370
+0.290815
+0.741629
+-0.160429
+0.373190
+0.480429
+0.586810
+0.053190
+0.159571
+0.266810
+0.800429
+0.081667
+0.295000
+0.451667
+0.665000
+0.043172
+0.256505
+0.490162
+0.703495
+0.005037
+0.349185
+0.528296
+0.610815
+0.135852
+0.218370
+0.397481
+0.741629
+-0.053763
+0.373190
+0.587096
+0.586810
+0.159857
+0.159571
+0.373476
+0.800429
+0.188333
+0.295000
+0.558333
+0.665000
+0.149838
+0.256505
+0.596828
+0.703495
+0.111704
+0.349185
+0.634963
+0.610815
+0.242519
+0.218370
+0.504148
+0.741629
+0.052904
+0.373190
+0.693763
+0.586810
+0.266524
+0.159571
+0.480143
+0.800429
+0.295000
+0.295000
+0.665000
+0.665000
+0.256505
+0.256505
+0.703495
+0.703495
+0.218370
+0.349185
+0.741629
+0.610815
+0.349185
+0.218370
+0.610815
+0.741629
+0.159571
+0.373190
+0.800429
+0.586810
+0.373190
+0.159571
+0.586810
+0.800429
+0.401667
+0.295000
+0.771667
+0.665000
+0.363172
+0.256505
+0.810162
+0.703495
+0.325037
+0.349185
+0.848296
+0.610815
+0.455852
+0.218370
+0.717481
+0.741629
+0.266237
+0.373190
+0.907096
+0.586810
+0.479857
+0.159571
+0.693476
+0.800429
+0.508333
+0.295000
+0.878333
+0.665000
+0.469838
+0.256505
+0.916828
+0.703495
+0.431704
+0.349185
+0.954963
+0.610815
+0.562519
+0.218370
+0.824148
+0.741629
+0.372904
+0.373190
+1.013763
+0.586810
+0.586524
+0.159571
+0.800143
+0.800429
+0.615000
+0.295000
+0.985000
+0.665000
+0.576505
+0.256505
+1.023495
+0.703495
+0.538370
+0.349185
+1.061630
+0.610815
+0.669185
+0.218370
+0.930815
+0.741629
+0.479571
+0.373190
+1.120429
+0.586810
+0.693190
+0.159571
+0.906810
+0.800429
+0.721667
+0.295000
+1.091667
+0.665000
+0.683172
+0.256505
+1.130162
+0.703495
+0.645037
+0.349185
+1.168296
+0.610815
+0.775852
+0.218370
+1.037481
+0.741629
+0.586237
+0.373190
+1.227096
+0.586810
+0.799857
+0.159571
+1.013476
+0.800429
+0.828333
+0.295000
+1.198333
+0.665000
+0.789838
+0.256505
+1.236828
+0.703495
+0.751704
+0.349185
+1.274963
+0.610815
+0.882519
+0.218370
+1.144148
+0.741629
+0.692904
+0.373190
+1.333763
+0.586810
+0.906524
+0.159571
+1.120143
+0.800429
+-0.131667
+0.401667
+0.238333
+0.771667
+-0.170162
+0.363172
+0.276828
+0.810162
+-0.208296
+0.455852
+0.314963
+0.717481
+-0.077481
+0.325037
+0.184148
+0.848296
+-0.267096
+0.479857
+0.373763
+0.693476
+-0.053476
+0.266237
+0.160143
+0.907096
+-0.025000
+0.401667
+0.345000
+0.771667
+-0.063495
+0.363172
+0.383495
+0.810162
+-0.101630
+0.455852
+0.421630
+0.717481
+0.029185
+0.325037
+0.290815
+0.848296
+-0.160429
+0.479857
+0.480429
+0.693476
+0.053190
+0.266237
+0.266810
+0.907096
+0.081667
+0.401667
+0.451667
+0.771667
+0.043172
+0.363172
+0.490162
+0.810162
+0.005037
+0.455852
+0.528296
+0.717481
+0.135852
+0.325037
+0.397481
+0.848296
+-0.053763
+0.479857
+0.587096
+0.693476
+0.159857
+0.266237
+0.373476
+0.907096
+0.188333
+0.401667
+0.558333
+0.771667
+0.149838
+0.363172
+0.596828
+0.810162
+0.111704
+0.455852
+0.634963
+0.717481
+0.242519
+0.325037
+0.504148
+0.848296
+0.052904
+0.479857
+0.693763
+0.693476
+0.266524
+0.266237
+0.480143
+0.907096
+0.295000
+0.401667
+0.665000
+0.771667
+0.256505
+0.363172
+0.703495
+0.810162
+0.218370
+0.455852
+0.741629
+0.717481
+0.349185
+0.325037
+0.610815
+0.848296
+0.159571
+0.479857
+0.800429
+0.693476
+0.373190
+0.266237
+0.586810
+0.907096
+0.401667
+0.401667
+0.771667
+0.771667
+0.363172
+0.363172
+0.810162
+0.810162
+0.325037
+0.455852
+0.848296
+0.717481
+0.455852
+0.325037
+0.717481
+0.848296
+0.266237
+0.479857
+0.907096
+0.693476
+0.479857
+0.266237
+0.693476
+0.907096
+0.508333
+0.401667
+0.878333
+0.771667
+0.469838
+0.363172
+0.916828
+0.810162
+0.431704
+0.455852
+0.954963
+0.717481
+0.562519
+0.325037
+0.824148
+0.848296
+0.372904
+0.479857
+1.013763
+0.693476
+0.586524
+0.266237
+0.800143
+0.907096
+0.615000
+0.401667
+0.985000
+0.771667
+0.576505
+0.363172
+1.023495
+0.810162
+0.538370
+0.455852
+1.061630
+0.717481
+0.669185
+0.325037
+0.930815
+0.848296
+0.479571
+0.479857
+1.120429
+0.693476
+0.693190
+0.266237
+0.906810
+0.907096
+0.721667
+0.401667
+1.091667
+0.771667
+0.683172
+0.363172
+1.130162
+0.810162
+0.645037
+0.455852
+1.168296
+0.717481
+0.775852
+0.325037
+1.037481
+0.848296
+0.586237
+0.479857
+1.227096
+0.693476
+0.799857
+0.266237
+1.013476
+0.907096
+0.828333
+0.401667
+1.198333
+0.771667
+0.789838
+0.363172
+1.236828
+0.810162
+0.751704
+0.455852
+1.274963
+0.717481
+0.882519
+0.325037
+1.144148
+0.848296
+0.692904
+0.479857
+1.333763
+0.693476
+0.906524
+0.266237
+1.120143
+0.907096
+-0.131667
+0.508333
+0.238333
+0.878333
+-0.170162
+0.469838
+0.276828
+0.916828
+-0.208296
+0.562519
+0.314963
+0.824148
+-0.077481
+0.431704
+0.184148
+0.954963
+-0.267096
+0.586524
+0.373763
+0.800143
+-0.053476
+0.372904
+0.160143
+1.013763
+-0.025000
+0.508333
+0.345000
+0.878333
+-0.063495
+0.469838
+0.383495
+0.916828
+-0.101630
+0.562519
+0.421630
+0.824148
+0.029185
+0.431704
+0.290815
+0.954963
+-0.160429
+0.586524
+0.480429
+0.800143
+0.053190
+0.372904
+0.266810
+1.013763
+0.081667
+0.508333
+0.451667
+0.878333
+0.043172
+0.469838
+0.490162
+0.916828
+0.005037
+0.562519
+0.528296
+0.824148
+0.135852
+0.431704
+0.397481
+0.954963
+-0.053763
+0.586524
+0.587096
+0.800143
+0.159857
+0.372904
+0.373476
+1.013763
+0.188333
+0.508333
+0.558333
+0.878333
+0.149838
+0.469838
+0.596828
+0.916828
+0.111704
+0.562519
+0.634963
+0.824148
+0.242519
+0.431704
+0.504148
+0.954963
+0.052904
+0.586524
+0.693763
+0.800143
+0.266524
+0.372904
+0.480143
+1.013763
+0.295000
+0.508333
+0.665000
+0.878333
+0.256505
+0.469838
+0.703495
+0.916828
+0.218370
+0.562519
+0.741629
+0.824148
+0.349185
+0.431704
+0.610815
+0.954963
+0.159571
+0.586524
+0.800429
+0.800143
+0.373190
+0.372904
+0.586810
+1.013763
+0.401667
+0.508333
+0.771667
+0.878333
+0.363172
+0.469838
+0.810162
+0.916828
+0.325037
+0.562519
+0.848296
+0.824148
+0.455852
+0.431704
+0.717481
+0.954963
+0.266237
+0.586524
+0.907096
+0.800143
+0.479857
+0.372904
+0.693476
+1.013763
+0.508333
+0.508333
+0.878333
+0.878333
+0.469838
+0.469838
+0.916828
+0.916828
+0.431704
+0.562519
+0.954963
+0.824148
+0.562519
+0.431704
+0.824148
+0.954963
+0.372904
+0.586524
+1.013763
+0.800143
+0.586524
+0.372904
+0.800143
+1.013763
+0.615000
+0.508333
+0.985000
+0.878333
+0.576505
+0.469838
+1.023495
+0.916828
+0.538370
+0.562519
+1.061630
+0.824148
+0.669185
+0.431704
+0.930815
+0.954963
+0.479571
+0.586524
+1.120429
+0.800143
+0.693190
+0.372904
+0.906810
+1.013763
+0.721667
+0.508333
+1.091667
+0.878333
+0.683172
+0.469838
+1.130162
+0.916828
+0.645037
+0.562519
+1.168296
+0.824148
+0.775852
+0.431704
+1.037481
+0.954963
+0.586237
+0.586524
+1.227096
+0.800143
+0.799857
+0.372904
+1.013476
+1.013763
+0.828333
+0.508333
+1.198333
+0.878333
+0.789838
+0.469838
+1.236828
+0.916828
+0.751704
+0.562519
+1.274963
+0.824148
+0.882519
+0.431704
+1.144148
+0.954963
+0.692904
+0.586524
+1.333763
+0.800143
+0.906524
+0.372904
+1.120143
+1.013763
+-0.131667
+0.615000
+0.238333
+0.985000
+-0.170162
+0.576505
+0.276828
+1.023495
+-0.208296
+0.669185
+0.314963
+0.930815
+-0.077481
+0.538370
+0.184148
+1.061630
+-0.267096
+0.693190
+0.373763
+0.906810
+-0.053476
+0.479571
+0.160143
+1.120429
+-0.025000
+0.615000
+0.345000
+0.985000
+-0.063495
+0.576505
+0.383495
+1.023495
+-0.101630
+0.669185
+0.421630
+0.930815
+0.029185
+0.538370
+0.290815
+1.061630
+-0.160429
+0.693190
+0.480429
+0.906810
+0.053190
+0.479571
+0.266810
+1.120429
+0.081667
+0.615000
+0.451667
+0.985000
+0.043172
+0.576505
+0.490162
+1.023495
+0.005037
+0.669185
+0.528296
+0.930815
+0.135852
+0.538370
+0.397481
+1.061630
+-0.053763
+0.693190
+0.587096
+0.906810
+0.159857
+0.479571
+0.373476
+1.120429
+0.188333
+0.615000
+0.558333
+0.985000
+0.149838
+0.576505
+0.596828
+1.023495
+0.111704
+0.669185
+0.634963
+0.930815
+0.242519
+0.538370
+0.504148
+1.061630
+0.052904
+0.693190
+0.693763
+0.906810
+0.266524
+0.479571
+0.480143
+1.120429
+0.295000
+0.615000
+0.665000
+0.985000
+0.256505
+0.576505
+0.703495
+1.023495
+0.218370
+0.669185
+0.741629
+0.930815
+0.349185
+0.538370
+0.610815
+1.061630
+0.159571
+0.693190
+0.800429
+0.906810
+0.373190
+0.479571
+0.586810
+1.120429
+0.401667
+0.615000
+0.771667
+0.985000
+0.363172
+0.576505
+0.810162
+1.023495
+0.325037
+0.669185
+0.848296
+0.930815
+0.455852
+0.538370
+0.717481
+1.061630
+0.266237
+0.693190
+0.907096
+0.906810
+0.479857
+0.479571
+0.693476
+1.120429
+0.508333
+0.615000
+0.878333
+0.985000
+0.469838
+0.576505
+0.916828
+1.023495
+0.431704
+0.669185
+0.954963
+0.930815
+0.562519
+0.538370
+0.824148
+1.061630
+0.372904
+0.693190
+1.013763
+0.906810
+0.586524
+0.479571
+0.800143
+1.120429
+0.615000
+0.615000
+0.985000
+0.985000
+0.576505
+0.576505
+1.023495
+1.023495
+0.538370
+0.669185
+1.061630
+0.930815
+0.669185
+0.538370
+0.930815
+1.061630
+0.479571
+0.693190
+1.120429
+0.906810
+0.693190
+0.479571
+0.906810
+1.120429
+0.721667
+0.615000
+1.091667
+0.985000
+0.683172
+0.576505
+1.130162
+1.023495
+0.645037
+0.669185
+1.168296
+0.930815
+0.775852
+0.538370
+1.037481
+1.061630
+0.586237
+0.693190
+1.227096
+0.906810
+0.799857
+0.479571
+1.013476
+1.120429
+0.828333
+0.615000
+1.198333
+0.985000
+0.789838
+0.576505
+1.236828
+1.023495
+0.751704
+0.669185
+1.274963
+0.930815
+0.882519
+0.538370
+1.144148
+1.061630
+0.692904
+0.693190
+1.333763
+0.906810
+0.906524
+0.479571
+1.120143
+1.120429
+-0.131667
+0.721667
+0.238333
+1.091667
+-0.170162
+0.683172
+0.276828
+1.130162
+-0.208296
+0.775852
+0.314963
+1.037481
+-0.077481
+0.645037
+0.184148
+1.168296
+-0.267096
+0.799857
+0.373763
+1.013476
+-0.053476
+0.586237
+0.160143
+1.227096
+-0.025000
+0.721667
+0.345000
+1.091667
+-0.063495
+0.683172
+0.383495
+1.130162
+-0.101630
+0.775852
+0.421630
+1.037481
+0.029185
+0.645037
+0.290815
+1.168296
+-0.160429
+0.799857
+0.480429
+1.013476
+0.053190
+0.586237
+0.266810
+1.227096
+0.081667
+0.721667
+0.451667
+1.091667
+0.043172
+0.683172
+0.490162
+1.130162
+0.005037
+0.775852
+0.528296
+1.037481
+0.135852
+0.645037
+0.397481
+1.168296
+-0.053763
+0.799857
+0.587096
+1.013476
+0.159857
+0.586237
+0.373476
+1.227096
+0.188333
+0.721667
+0.558333
+1.091667
+0.149838
+0.683172
+0.596828
+1.130162
+0.111704
+0.775852
+0.634963
+1.037481
+0.242519
+0.645037
+0.504148
+1.168296
+0.052904
+0.799857
+0.693763
+1.013476
+0.266524
+0.586237
+0.480143
+1.227096
+0.295000
+0.721667
+0.665000
+1.091667
+0.256505
+0.683172
+0.703495
+1.130162
+0.218370
+0.775852
+0.741629
+1.037481
+0.349185
+0.645037
+0.610815
+1.168296
+0.159571
+0.799857
+0.800429
+1.013476
+0.373190
+0.586237
+0.586810
+1.227096
+0.401667
+0.721667
+0.771667
+1.091667
+0.363172
+0.683172
+0.810162
+1.130162
+0.325037
+0.775852
+0.848296
+1.037481
+0.455852
+0.645037
+0.717481
+1.168296
+0.266237
+0.799857
+0.907096
+1.013476
+0.479857
+0.586237
+0.693476
+1.227096
+0.508333
+0.721667
+0.878333
+1.091667
+0.469838
+0.683172
+0.916828
+1.130162
+0.431704
+0.775852
+0.954963
+1.037481
+0.562519
+0.645037
+0.824148
+1.168296
+0.372904
+0.799857
+1.013763
+1.013476
+0.586524
+0.586237
+0.800143
+1.227096
+0.615000
+0.721667
+0.985000
+1.091667
+0.576505
+0.683172
+1.023495
+1.130162
+0.538370
+0.775852
+1.061630
+1.037481
+0.669185
+0.645037
+0.930815
+1.168296
+0.479571
+0.799857
+1.120429
+1.013476
+0.693190
+0.586237
+0.906810
+1.227096
+0.721667
+0.721667
+1.091667
+1.091667
+0.683172
+0.683172
+1.130162
+1.130162
+0.645037
+0.775852
+1.168296
+1.037481
+0.775852
+0.645037
+1.037481
+1.168296
+0.586237
+0.799857
+1.227096
+1.013476
+0.799857
+0.586237
+1.013476
+1.227096
+0.828333
+0.721667
+1.198333
+1.091667
+0.789838
+0.683172
+1.236828
+1.130162
+0.751704
+0.775852
+1.274963
+1.037481
+0.882519
+0.645037
+1.144148
+1.168296
+0.692904
+0.799857
+1.333763
+1.013476
+0.906524
+0.586237
+1.120143
+1.227096
+-0.131667
+0.828333
+0.238333
+1.198333
+-0.170162
+0.789838
+0.276828
+1.236828
+-0.208296
+0.882519
+0.314963
+1.144148
+-0.077481
+0.751704
+0.184148
+1.274963
+-0.267096
+0.906524
+0.373763
+1.120143
+-0.053476
+0.692904
+0.160143
+1.333763
+-0.025000
+0.828333
+0.345000
+1.198333
+-0.063495
+0.789838
+0.383495
+1.236828
+-0.101630
+0.882519
+0.421630
+1.144148
+0.029185
+0.751704
+0.290815
+1.274963
+-0.160429
+0.906524
+0.480429
+1.120143
+0.053190
+0.692904
+0.266810
+1.333763
+0.081667
+0.828333
+0.451667
+1.198333
+0.043172
+0.789838
+0.490162
+1.236828
+0.005037
+0.882519
+0.528296
+1.144148
+0.135852
+0.751704
+0.397481
+1.274963
+-0.053763
+0.906524
+0.587096
+1.120143
+0.159857
+0.692904
+0.373476
+1.333763
+0.188333
+0.828333
+0.558333
+1.198333
+0.149838
+0.789838
+0.596828
+1.236828
+0.111704
+0.882519
+0.634963
+1.144148
+0.242519
+0.751704
+0.504148
+1.274963
+0.052904
+0.906524
+0.693763
+1.120143
+0.266524
+0.692904
+0.480143
+1.333763
+0.295000
+0.828333
+0.665000
+1.198333
+0.256505
+0.789838
+0.703495
+1.236828
+0.218370
+0.882519
+0.741629
+1.144148
+0.349185
+0.751704
+0.610815
+1.274963
+0.159571
+0.906524
+0.800429
+1.120143
+0.373190
+0.692904
+0.586810
+1.333763
+0.401667
+0.828333
+0.771667
+1.198333
+0.363172
+0.789838
+0.810162
+1.236828
+0.325037
+0.882519
+0.848296
+1.144148
+0.455852
+0.751704
+0.717481
+1.274963
+0.266237
+0.906524
+0.907096
+1.120143
+0.479857
+0.692904
+0.693476
+1.333763
+0.508333
+0.828333
+0.878333
+1.198333
+0.469838
+0.789838
+0.916828
+1.236828
+0.431704
+0.882519
+0.954963
+1.144148
+0.562519
+0.751704
+0.824148
+1.274963
+0.372904
+0.906524
+1.013763
+1.120143
+0.586524
+0.692904
+0.800143
+1.333763
+0.615000
+0.828333
+0.985000
+1.198333
+0.576505
+0.789838
+1.023495
+1.236828
+0.538370
+0.882519
+1.061630
+1.144148
+0.669185
+0.751704
+0.930815
+1.274963
+0.479571
+0.906524
+1.120429
+1.120143
+0.693190
+0.692904
+0.906810
+1.333763
+0.721667
+0.828333
+1.091667
+1.198333
+0.683172
+0.789838
+1.130162
+1.236828
+0.645037
+0.882519
+1.168296
+1.144148
+0.775852
+0.751704
+1.037481
+1.274963
+0.586237
+0.906524
+1.227096
+1.120143
+0.799857
+0.692904
+1.013476
+1.333763
+0.828333
+0.828333
+1.198333
+1.198333
+0.789838
+0.789838
+1.236828
+1.236828
+0.751704
+0.882519
+1.274963
+1.144148
+0.882519
+0.751704
+1.144148
+1.274963
+0.692904
+0.906524
+1.333763
+1.120143
+0.906524
+0.692904
+1.120143
+1.333763
+-0.163333
+-0.163333
+0.376667
+0.376667
+-0.202930
+-0.202930
+0.416263
+0.416263
+-0.275171
+-0.084252
+0.488504
+0.297585
+-0.084252
+-0.275171
+0.297585
+0.488504
+-0.360987
+-0.049218
+0.574320
+0.262551
+-0.049218
+-0.360987
+0.262551
+0.574320
+0.050000
+-0.163333
+0.590000
+0.376667
+0.010403
+-0.202930
+0.629597
+0.416263
+-0.061838
+-0.084252
+0.701838
+0.297585
+0.129081
+-0.275171
+0.510919
+0.488504
+-0.147654
+-0.049218
+0.787654
+0.262551
+0.164115
+-0.360987
+0.475885
+0.574320
+0.263333
+-0.163333
+0.803333
+0.376667
+0.223737
+-0.202930
+0.842930
+0.416263
+0.151496
+-0.084252
+0.915171
+0.297585
+0.342414
+-0.275171
+0.724252
+0.488504
+0.065680
+-0.049218
+1.000987
+0.262551
+0.377449
+-0.360987
+0.689218
+0.574320
+0.476667
+-0.163333
+1.016667
+0.376667
+0.437070
+-0.202930
+1.056263
+0.416263
+0.364829
+-0.084252
+1.128504
+0.297585
+0.555748
+-0.275171
+0.937585
+0.488504
+0.279013
+-0.049218
+1.214320
+0.262551
+0.590782
+-0.360987
+0.902551
+0.574320
+0.690000
+-0.163333
+1.230000
+0.376667
+0.650403
+-0.202930
+1.269596
+0.416263
+0.578162
+-0.084252
+1.341838
+0.297585
+0.769081
+-0.275171
+1.150919
+0.488504
+0.492346
+-0.049218
+1.427654
+0.262551
+0.804115
+-0.360987
+1.115885
+0.574320
+-0.163333
+0.050000
+0.376667
+0.590000
+-0.202930
+0.010403
+0.416263
+0.629597
+-0.275171
+0.129081
+0.488504
+0.510919
+-0.084252
+-0.061838
+0.297585
+0.701838
+-0.360987
+0.164115
+0.574320
+0.475885
+-0.049218
+-0.147654
+0.262551
+0.787654
+0.050000
+0.050000
+0.590000
+0.590000
+0.010403
+0.010403
+0.629597
+0.629597
+-0.061838
+0.129081
+0.701838
+0.510919
+0.129081
+-0.061838
+0.510919
+0.701838
+-0.147654
+0.164115
+0.787654
+0.475885
+0.164115
+-0.147654
+0.475885
+0.787654
+0.263333
+0.050000
+0.803333
+0.590000
+0.223737
+0.010403
+0.842930
+0.629597
+0.151496
+0.129081
+0.915171
+0.510919
+0.342414
+-0.061838
+0.724252
+0.701838
+0.065680
+0.164115
+1.000987
+0.475885
+0.377449
+-0.147654
+0.689218
+0.787654
+0.476667
+0.050000
+1.016667
+0.590000
+0.437070
+0.010403
+1.056263
+0.629597
+0.364829
+0.129081
+1.128504
+0.510919
+0.555748
+-0.061838
+0.937585
+0.701838
+0.279013
+0.164115
+1.214320
+0.475885
+0.590782
+-0.147654
+0.902551
+0.787654
+0.690000
+0.050000
+1.230000
+0.590000
+0.650403
+0.010403
+1.269596
+0.629597
+0.578162
+0.129081
+1.341838
+0.510919
+0.769081
+-0.061838
+1.150919
+0.701838
+0.492346
+0.164115
+1.427654
+0.475885
+0.804115
+-0.147654
+1.115885
+0.787654
+-0.163333
+0.263333
+0.376667
+0.803333
+-0.202930
+0.223737
+0.416263
+0.842930
+-0.275171
+0.342414
+0.488504
+0.724252
+-0.084252
+0.151496
+0.297585
+0.915171
+-0.360987
+0.377449
+0.574320
+0.689218
+-0.049218
+0.065680
+0.262551
+1.000987
+0.050000
+0.263333
+0.590000
+0.803333
+0.010403
+0.223737
+0.629597
+0.842930
+-0.061838
+0.342414
+0.701838
+0.724252
+0.129081
+0.151496
+0.510919
+0.915171
+-0.147654
+0.377449
+0.787654
+0.689218
+0.164115
+0.065680
+0.475885
+1.000987
+0.263333
+0.263333
+0.803333
+0.803333
+0.223737
+0.223737
+0.842930
+0.842930
+0.151496
+0.342414
+0.915171
+0.724252
+0.342414
+0.151496
+0.724252
+0.915171
+0.065680
+0.377449
+1.000987
+0.689218
+0.377449
+0.065680
+0.689218
+1.000987
+0.476667
+0.263333
+1.016667
+0.803333
+0.437070
+0.223737
+1.056263
+0.842930
+0.364829
+0.342414
+1.128504
+0.724252
+0.555748
+0.151496
+0.937585
+0.915171
+0.279013
+0.377449
+1.214320
+0.689218
+0.590782
+0.065680
+0.902551
+1.000987
+0.690000
+0.263333
+1.230000
+0.803333
+0.650403
+0.223737
+1.269596
+0.842930
+0.578162
+0.342414
+1.341838
+0.724252
+0.769081
+0.151496
+1.150919
+0.915171
+0.492346
+0.377449
+1.427654
+0.689218
+0.804115
+0.065680
+1.115885
+1.000987
+-0.163333
+0.476667
+0.376667
+1.016667
+-0.202930
+0.437070
+0.416263
+1.056263
+-0.275171
+0.555748
+0.488504
+0.937585
+-0.084252
+0.364829
+0.297585
+1.128504
+-0.360987
+0.590782
+0.574320
+0.902551
+-0.049218
+0.279013
+0.262551
+1.214320
+0.050000
+0.476667
+0.590000
+1.016667
+0.010403
+0.437070
+0.629597
+1.056263
+-0.061838
+0.555748
+0.701838
+0.937585
+0.129081
+0.364829
+0.510919
+1.128504
+-0.147654
+0.590782
+0.787654
+0.902551
+0.164115
+0.279013
+0.475885
+1.214320
+0.263333
+0.476667
+0.803333
+1.016667
+0.223737
+0.437070
+0.842930
+1.056263
+0.151496
+0.555748
+0.915171
+0.937585
+0.342414
+0.364829
+0.724252
+1.128504
+0.065680
+0.590782
+1.000987
+0.902551
+0.377449
+0.279013
+0.689218
+1.214320
+0.476667
+0.476667
+1.016667
+1.016667
+0.437070
+0.437070
+1.056263
+1.056263
+0.364829
+0.555748
+1.128504
+0.937585
+0.555748
+0.364829
+0.937585
+1.128504
+0.279013
+0.590782
+1.214320
+0.902551
+0.590782
+0.279013
+0.902551
+1.214320
+0.690000
+0.476667
+1.230000
+1.016667
+0.650403
+0.437070
+1.269596
+1.056263
+0.578162
+0.555748
+1.341838
+0.937585
+0.769081
+0.364829
+1.150919
+1.128504
+0.492346
+0.590782
+1.427654
+0.902551
+0.804115
+0.279013
+1.115885
+1.214320
+-0.163333
+0.690000
+0.376667
+1.230000
+-0.202930
+0.650403
+0.416263
+1.269596
+-0.275171
+0.769081
+0.488504
+1.150919
+-0.084252
+0.578162
+0.297585
+1.341838
+-0.360987
+0.804115
+0.574320
+1.115885
+-0.049218
+0.492346
+0.262551
+1.427654
+0.050000
+0.690000
+0.590000
+1.230000
+0.010403
+0.650403
+0.629597
+1.269596
+-0.061838
+0.769081
+0.701838
+1.150919
+0.129081
+0.578162
+0.510919
+1.341838
+-0.147654
+0.804115
+0.787654
+1.115885
+0.164115
+0.492346
+0.475885
+1.427654
+0.263333
+0.690000
+0.803333
+1.230000
+0.223737
+0.650403
+0.842930
+1.269596
+0.151496
+0.769081
+0.915171
+1.150919
+0.342414
+0.578162
+0.724252
+1.341838
+0.065680
+0.804115
+1.000987
+1.115885
+0.377449
+0.492346
+0.689218
+1.427654
+0.476667
+0.690000
+1.016667
+1.230000
+0.437070
+0.650403
+1.056263
+1.269596
+0.364829
+0.769081
+1.128504
+1.150919
+0.555748
+0.578162
+0.937585
+1.341838
+0.279013
+0.804115
+1.214320
+1.115885
+0.590782
+0.492346
+0.902551
+1.427654
+0.690000
+0.690000
+1.230000
+1.230000
+0.650403
+0.650403
+1.269596
+1.269596
+0.578162
+0.769081
+1.341838
+1.150919
+0.769081
+0.578162
+1.150919
+1.341838
+0.492346
+0.804115
+1.427654
+1.115885
+0.804115
+0.492346
+1.115885
+1.427654
+-0.188333
+-0.188333
+0.521667
+0.521667
+-0.228555
+-0.228555
+0.561888
+0.561888
+-0.335379
+-0.084356
+0.668712
+0.417690
+-0.084356
+-0.335379
+0.417690
+0.668712
+0.145000
+-0.188333
+0.855000
+0.521667
+0.104779
+-0.228555
+0.895221
+0.561888
+-0.002046
+-0.084356
+1.002046
+0.417690
+0.248977
+-0.335379
+0.751023
+0.668712
+0.478333
+-0.188333
+1.188333
+0.521667
+0.438112
+-0.228555
+1.228555
+0.561888
+0.331288
+-0.084356
+1.335379
+0.417690
+0.582310
+-0.335379
+1.084356
+0.668712
+-0.188333
+0.145000
+0.521667
+0.855000
+-0.228555
+0.104779
+0.561888
+0.895221
+-0.335379
+0.248977
+0.668712
+0.751023
+-0.084356
+-0.002046
+0.417690
+1.002046
+0.145000
+0.145000
+0.855000
+0.855000
+0.104779
+0.104779
+0.895221
+0.895221
+-0.002046
+0.248977
+1.002046
+0.751023
+0.248977
+-0.002046
+0.751023
+1.002046
+0.478333
+0.145000
+1.188333
+0.855000
+0.438112
+0.104779
+1.228555
+0.895221
+0.331288
+0.248977
+1.335379
+0.751023
+0.582310
+-0.002046
+1.084356
+1.002046
+-0.188333
+0.478333
+0.521667
+1.188333
+-0.228555
+0.438112
+0.561888
+1.228555
+-0.335379
+0.582310
+0.668712
+1.084356
+-0.084356
+0.331288
+0.417690
+1.335379
+0.145000
+0.478333
+0.855000
+1.188333
+0.104779
+0.438112
+0.895221
+1.228555
+-0.002046
+0.582310
+1.002046
+1.084356
+0.248977
+0.331288
+0.751023
+1.335379
+0.478333
+0.478333
+1.188333
+1.188333
+0.438112
+0.438112
+1.228555
+1.228555
+0.331288
+0.582310
+1.335379
+1.084356
+0.582310
+0.331288
+1.084356
+1.335379
+0.060000
+0.060000
+0.940000
+0.940000
+0.019375
+0.019375
+0.980625
+0.980625
+-0.122254
+0.188873
+1.122254
+0.811127
+0.188873
+-0.122254
+0.811127
+1.122254
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
+0.100000
+0.100000
+0.200000
+0.200000
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/model_config.yml b/rknn-toolkit2/examples/caffe/vgg-ssd/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..c630e37f0a5f4b72c2786f559996fa09889d4eba
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/model_config.yml
@@ -0,0 +1,14 @@
+models:
+ name: deploy_rm_detection_output # 模型输出名称
+ platform: caffe # 原始模型使用的框架
+ prototxt_file_path: ./deploy_rm_detection_output.prototxt # caffe的prototxt文件
+ caffemodel_file_path: ./VGG_VOC0712_SSD_300x300_iter_120000.caffemodel # caffe的caffemode文件
+ quantize: true # 是否量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ quantized_dtype: asymmetric_quantized-8 # 量化类型
+ mean_values: [103.94, 116.78, 123.68] # rknn.config的mean_values参数
+ std_values: [1, 1, 1] # rknn.config的std_values参数
+ quant_img_RGB2BGR: true # 进行RGB2BGR转换
+ quantized_algorithm: normal # 量化算法
+ quantized_method: channel # 量化方法
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/result_truth.jpg b/rknn-toolkit2/examples/caffe/vgg-ssd/result_truth.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8410eec972d7f076e68248827c6765118a2a1dd7
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/result_truth.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:666110fe2ff4b430feeb26d5f7ae81ffa1e89e0476aee1bc584cd7b15bc3f604
+size 58894
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/road_300x300.jpg b/rknn-toolkit2/examples/caffe/vgg-ssd/road_300x300.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c4f34763ae6b96776fc34141854c4f3f148776e8
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/road_300x300.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8cbf222148e95c001336ef65ad69749460547f03e1255384b4cc7fa960cb60a1
+size 47291
diff --git a/rknn-toolkit2/examples/caffe/vgg-ssd/test.py b/rknn-toolkit2/examples/caffe/vgg-ssd/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..fb33da7c230ae67bdf2699e0d3439ef6ad04e7b4
--- /dev/null
+++ b/rknn-toolkit2/examples/caffe/vgg-ssd/test.py
@@ -0,0 +1,229 @@
+import os
+import math
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+import PIL.Image as Image
+import PIL.ImageDraw as ImageDraw
+import PIL.ImageFont as ImageFont
+
+np.set_printoptions(threshold=np.inf)
+
+CLASSES = ('__background__',
+ 'aeroplane', 'bicycle', 'bird', 'boat',
+ 'bottle', 'bus', 'car', 'cat', 'chair',
+ 'cow', 'diningtable', 'dog', 'horse',
+ 'motorbike', 'person', 'pottedplant',
+ 'sheep', 'sofa', 'train', 'tvmonitor')
+
+NUM_CLS = 21
+
+CONF_THRESH = 0.5
+NMS_THRESH = 0.45
+
+
+def IntersectBBox(box1, box2):
+ if box1[0] > box2[2] or box1[2] < box2[0] or box1[1] > box2[3] or box1[3] < box2[1]:
+ return 0
+ else:
+ area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])
+ area2 = (box2[2] - box2[0]) * (box2[3] - box2[1])
+
+ xx1 = max(box1[0], box2[0])
+ yy1 = max(box1[1], box2[1])
+ xx2 = min(box1[2], box2[2])
+ yy2 = min(box1[3], box2[3])
+
+ w = max(0, xx2-xx1)
+ h = max(0, yy2-yy1)
+
+ ovr = w*h / (area1 + area2 - w*h)
+ return ovr
+
+
+def ssd_post_process(conf_data, loc_data):
+ prior_data = np.loadtxt('mbox_priorbox_97.txt', dtype=np.float32)
+
+ prior_bboxes = prior_data[:len(loc_data)]
+ prior_variances = prior_data[len(loc_data):]
+
+ prior_num = int(len(loc_data) / 4) # 8732
+
+ conf_data = conf_data.reshape(-1, 21)
+
+ idx_class_conf = []
+ bboxes = []
+
+ # conf
+ for prior_idx in range(0, prior_num):
+ max_val = np.max(conf_data[prior_idx])
+ max_idx = np.argmax(conf_data[prior_idx])
+ if max_val > CONF_THRESH and max_idx != 0:
+ idx_class_conf.append([prior_idx, max_idx, max_val])
+
+ # print(len(idx_class_conf))
+
+ # boxes
+ for i in range(0, prior_num):
+ prior_w = prior_bboxes[4*i+2] - prior_bboxes[4*i]
+ prior_h = prior_bboxes[4*i+3] - prior_bboxes[4*i+1]
+ prior_center_x = (prior_bboxes[4*i+2] + prior_bboxes[4*i]) / 2
+ prior_center_y = (prior_bboxes[4*i+3] + prior_bboxes[4*i+1]) / 2
+
+ bbox_center_x = prior_variances[4*i+0] * loc_data[4*i+0][0] * prior_w + prior_center_x
+ bbox_center_y = prior_variances[4*i+1] * loc_data[4*i+1][0] * prior_h + prior_center_y
+ bbox_w = math.exp(prior_variances[4*i+2] * loc_data[4*i+2][0]) * prior_w
+ bbox_h = math.exp(prior_variances[4*i+3] * loc_data[4*i+3][0]) * prior_h
+
+ tmp = []
+ tmp.append(max(min(bbox_center_x - bbox_w / 2., 1), 0))
+ tmp.append(max(min(bbox_center_y - bbox_h / 2., 1), 0))
+ tmp.append(max(min(bbox_center_x + bbox_w / 2., 1), 0))
+ tmp.append(max(min(bbox_center_y + bbox_h / 2., 1), 0))
+ bboxes.append(tmp)
+
+ # print(len(idx_class_conf))
+
+ # nms
+ cur_class_num = 0
+ idx_class_conf_ = []
+ for i in range(0, len(idx_class_conf)):
+ keep = True
+ k = 0
+ while k < cur_class_num:
+ if keep:
+ ovr = IntersectBBox(bboxes[idx_class_conf[i][0]], bboxes[idx_class_conf_[k][0]])
+ if idx_class_conf_[k][1] == idx_class_conf[i][1] and ovr > NMS_THRESH:
+ if idx_class_conf_[k][2] < idx_class_conf[i][2]:
+ idx_class_conf_.pop(k)
+ idx_class_conf_.append(idx_class_conf[i])
+ keep = False
+ break
+ k += 1
+ else:
+ break
+ if keep:
+ idx_class_conf_.append(idx_class_conf[i])
+ cur_class_num += 1
+
+ # print(idx_class_conf_)
+
+ box_class_score = []
+
+ for i in range(0, len(idx_class_conf_)):
+ bboxes[idx_class_conf_[i][0]].append(idx_class_conf_[i][1])
+ bboxes[idx_class_conf_[i][0]].append(idx_class_conf_[i][2])
+ box_class_score.append(bboxes[idx_class_conf_[i][0]])
+
+ img = cv2.imread('./road_300x300.jpg')
+ img_pil = Image.fromarray(img)
+ draw = ImageDraw.Draw(img_pil)
+
+ font = ImageFont.load_default()
+
+ if len(box_class_score) != 0:
+ print("{:^12} {:^12} {}".format('class', 'score', 'xmin, ymin, xmax, ymax'))
+ print('-' * 50)
+
+ for i in range(0, len(box_class_score)):
+ x1 = int(box_class_score[i][0]*img.shape[1])
+ y1 = int(box_class_score[i][1]*img.shape[0])
+ x2 = int(box_class_score[i][2]*img.shape[1])
+ y2 = int(box_class_score[i][3]*img.shape[0])
+ color = (0, int(box_class_score[i][4]/20.0*255), 255)
+ draw.line([(x1, y1), (x1, y2), (x2, y2),
+ (x2, y1), (x1, y1)], width=2, fill=color)
+ display_str = CLASSES[box_class_score[i][4]] + ":" + str(box_class_score[i][5])
+ try:
+ display_str_height = np.ceil((1 + 2 * 0.05) * font.getbbox(display_str)[3])+1
+ except:
+ display_str_height = np.ceil((1 + 2 * 0.05) * font.getsize(display_str)[1])+1
+
+ if y1 > display_str_height:
+ text_bottom = y1
+ else:
+ text_bottom = y1 + display_str_height
+
+ try:
+ _, _, text_width, text_height = font.getbbox(display_str)
+ except:
+ text_width, text_height = font.getsize(display_str)
+ margin = np.ceil(0.05 * text_height)
+ draw.rectangle([(x1, text_bottom-text_height-2*margin), (x1+text_width, text_bottom)], fill=color)
+ draw.text((x1+margin, text_bottom-text_height-margin), display_str, fill='black', font=font)
+
+ print("{:^12} {:^12.3f} [{:>4}, {:>4}, {:>4}, {:>4}]".format(CLASSES[box_class_score[i][4]], box_class_score[i][5],
+ x1, y1, x2, y2))
+
+ np.copyto(img, np.array(img_pil))
+ cv2.imwrite("result.jpg", img)
+ print('Save results to result.jpg!')
+
+
+if __name__ == '__main__':
+
+ if not os.path.exists('./VGG_VOC0712_SSD_300x300_iter_120000.caffemodel'):
+ print('!!! Missing VGG_VOC0712_SSD_300x300_iter_120000.caffemodel !!!\n'
+ '1. Download models_VGGNet_VOC0712_SSD_300x300.tar.gz from https://drive.google.com/file/d/0BzKzrI_SkD1_WVVTSmQxU0dVRzA/view\n'
+ '2. Extract the VGG_VOC0712_SSD_300x300_iter_120000.caffemodel from models_VGGNet_VOC0712_SSD_300x300.tar.gz\n'
+ '3. Or you can also download caffemodel from https://ftzr.zbox.filez.com/v2/delivery/data/95f00b0fc900458ba134f8b180b3f7a1/asset/vgg-ssd/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel\n')
+ exit(-1)
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[1, 1, 1], quant_img_RGB2BGR=True, target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_caffe(model='./deploy_rm_detection_output.prototxt',
+ blobs='./VGG_VOC0712_SSD_300x300_iter_120000.caffemodel')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./deploy_rm_detection_output.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./road_300x300.jpg')
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ print('done')
+
+ outputs[0] = outputs[0].reshape((-1, 1))
+ outputs[1] = outputs[1].reshape((-1, 1))
+ np.save('./caffe_vgg-ssd_0.npy', outputs[0])
+ np.save('./caffe_vgg-ssd_1.npy', outputs[1])
+ ssd_post_process(outputs[1], outputs[0])
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/README.md b/rknn-toolkit2/examples/darknet/yolov3_416x416/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..29b2a0c066e24b05ccae69a9b7b7bbbcd371af0f
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/README.md
@@ -0,0 +1,24 @@
+# Darknet YOLO V3
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://pjreddie.com/darknet/yolo/
+The 'yolov3.cfg' changed the width & height from 608 to 416 on the basis of https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will save the result of object detection to the 'result.jpg', as follows:
+
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/dataset.txt b/rknn-toolkit2/examples/darknet/yolov3_416x416/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..adb6857c5bff8e1d810cf6b0925a00147a193c9b
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/dataset.txt
@@ -0,0 +1 @@
+dog_bike_car_416x416.jpg
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/dog_bike_car_416x416.jpg b/rknn-toolkit2/examples/darknet/yolov3_416x416/dog_bike_car_416x416.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e7231e80a6727f62cdebeb673975c827b55f15cf
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/dog_bike_car_416x416.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd1a3ffbd7d938aac30b64ed523e6512aeee8dc8671abadc2206a0b821903b72
+size 85898
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/model_config.yml b/rknn-toolkit2/examples/darknet/yolov3_416x416/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..0bb3c025568af48448620679553927d700d279bf
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/model_config.yml
@@ -0,0 +1,14 @@
+models:
+ name: yolov3_416 # 模型输出名称
+ platform: darknet # 原始模型使用的框架
+ darknet_cfg_path: ./yolov3.cfg # darknet cfg文件
+ darknet_weights_path: ./yolov3.weights # darknet weights文件
+ quantize: true # 是否量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ quantized_dtype: asymmetric_quantized-8 # 量化类型
+ mean_values: [0, 0, 0] # rknn.config的mean_values参数
+ std_values: [255, 255, 255] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
+ quantized_algorithm: normal # 量化算法
+ quantized_method: channel # 量化方法
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/result_truth.jpg b/rknn-toolkit2/examples/darknet/yolov3_416x416/result_truth.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6242d5ce2cca26e8cb552b24bb5d354861c3a7ca
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/result_truth.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47ac9fb7206b0469cbe7244c15b094b2edbb8c1b2573159262c666fe850ca16f
+size 90033
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/test.py b/rknn-toolkit2/examples/darknet/yolov3_416x416/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..e1560512453c20301c8d37b608fae82016c7b22a
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/test.py
@@ -0,0 +1,102 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+from yolov3_utils import yolov3_post_process, draw, download_yolov3_weight
+
+GRID0 = 13
+GRID1 = 26
+GRID2 = 52
+LISTSIZE = 85
+SPAN = 3
+
+if __name__ == '__main__':
+
+ # Model from https://pjreddie.com/darknet/yolo/
+ # The yolov3.cfg changed the width & height from 608 to 416 on the basis of
+ # https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg
+ MODEL_PATH = './yolov3.cfg'
+ WEIGHT_PATH = './yolov3.weights'
+ RKNN_MODEL_PATH = './yolov3_416.rknn'
+ im_file = './dog_bike_car_416x416.jpg'
+ DATASET = './dataset.txt'
+
+ # Download yolov3.weight
+ download_yolov3_weight(WEIGHT_PATH)
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[0, 0, 0], std_values=[255, 255, 255], target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_darknet(model=MODEL_PATH, weight=WEIGHT_PATH)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset=DATASET)
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn(RKNN_MODEL_PATH)
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread(im_file)
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ print('done')
+
+ input0_data = outputs[0]
+ np.save('./darknet_yolov3_416x416_0.npy', input0_data)
+ input1_data = outputs[1]
+ np.save('./darknet_yolov3_416x416_1.npy', input1_data)
+ input2_data = outputs[2]
+ np.save('./darknet_yolov3_416x416_2.npy', input1_data)
+
+ input0_data = input0_data.reshape(SPAN, LISTSIZE, GRID0, GRID0)
+ input1_data = input1_data.reshape(SPAN, LISTSIZE, GRID1, GRID1)
+ input2_data = input2_data.reshape(SPAN, LISTSIZE, GRID2, GRID2)
+
+ input_data = []
+ input_data.append(np.transpose(input0_data, (2, 3, 0, 1)))
+ input_data.append(np.transpose(input1_data, (2, 3, 0, 1)))
+ input_data.append(np.transpose(input2_data, (2, 3, 0, 1)))
+
+ boxes, classes, scores = yolov3_post_process(input_data)
+
+ image = cv2.imread(im_file)
+ if boxes is not None:
+ draw(image, boxes, scores, classes)
+
+ print('Save results to result.jpg!')
+ cv2.imwrite('result.jpg', image)
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/yolov3.cfg b/rknn-toolkit2/examples/darknet/yolov3_416x416/yolov3.cfg
new file mode 100755
index 0000000000000000000000000000000000000000..cb4c8695bc2e7584b62f95fed03d1b3e239aeaf8
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/yolov3.cfg
@@ -0,0 +1,789 @@
+[net]
+# Testing
+# batch=1
+# subdivisions=1
+# Training
+batch=64
+subdivisions=16
+width=416
+height=416
+channels=3
+momentum=0.9
+decay=0.0005
+angle=0
+saturation = 1.5
+exposure = 1.5
+hue=.1
+
+learning_rate=0.001
+burn_in=1000
+max_batches = 500200
+policy=steps
+steps=400000,450000
+scales=.1,.1
+
+[convolutional]
+batch_normalize=1
+filters=32
+size=3
+stride=1
+pad=1
+activation=leaky
+
+# Downsample
+
+[convolutional]
+batch_normalize=1
+filters=64
+size=3
+stride=2
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=32
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=64
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+# Downsample
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=3
+stride=2
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=64
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=64
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+# Downsample
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=2
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+# Downsample
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=2
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+# Downsample
+
+[convolutional]
+batch_normalize=1
+filters=1024
+size=3
+stride=2
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=1024
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=1024
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=1024
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=1024
+size=3
+stride=1
+pad=1
+activation=leaky
+
+[shortcut]
+from=-3
+activation=linear
+
+######################
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=1024
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=1024
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=512
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=1024
+activation=leaky
+
+[convolutional]
+size=1
+stride=1
+pad=1
+filters=255
+activation=linear
+
+
+[yolo]
+mask = 6,7,8
+anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
+classes=80
+num=9
+jitter=.3
+ignore_thresh = .7
+truth_thresh = 1
+random=1
+
+
+[route]
+layers = -4
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[upsample]
+stride=2
+
+[route]
+layers = -1, 61
+
+
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=512
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=512
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=256
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=512
+activation=leaky
+
+[convolutional]
+size=1
+stride=1
+pad=1
+filters=255
+activation=linear
+
+
+[yolo]
+mask = 3,4,5
+anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
+classes=80
+num=9
+jitter=.3
+ignore_thresh = .7
+truth_thresh = 1
+random=1
+
+
+
+[route]
+layers = -4
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[upsample]
+stride=2
+
+[route]
+layers = -1, 36
+
+
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=256
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=256
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+filters=128
+size=1
+stride=1
+pad=1
+activation=leaky
+
+[convolutional]
+batch_normalize=1
+size=3
+stride=1
+pad=1
+filters=256
+activation=leaky
+
+[convolutional]
+size=1
+stride=1
+pad=1
+filters=255
+activation=linear
+
+
+[yolo]
+mask = 0,1,2
+anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
+classes=80
+num=9
+jitter=.3
+ignore_thresh = .7
+truth_thresh = 1
+random=1
+
diff --git a/rknn-toolkit2/examples/darknet/yolov3_416x416/yolov3_utils.py b/rknn-toolkit2/examples/darknet/yolov3_416x416/yolov3_utils.py
new file mode 100755
index 0000000000000000000000000000000000000000..d612e088ecb99b0860f8db267219e19a5040c9de
--- /dev/null
+++ b/rknn-toolkit2/examples/darknet/yolov3_416x416/yolov3_utils.py
@@ -0,0 +1,202 @@
+import numpy as np
+import cv2
+import os
+import urllib.request
+
+NUM_CLS = 80
+MAX_BOXES = 500
+OBJ_THRESH = 0.5
+NMS_THRESH = 0.6
+
+CLASSES = ("person", "bicycle", "car","motorbike ","aeroplane ","bus ","train","truck ","boat","traffic light",
+ "fire hydrant","stop sign ","parking meter","bench","bird","cat","dog ","horse ","sheep","cow","elephant",
+ "bear","zebra ","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite",
+ "baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife ",
+ "spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza ","donut","cake","chair","sofa",
+ "pottedplant","bed","diningtable","toilet ","tvmonitor","laptop ","mouse ","remote ","keyboard ","cell phone","microwave ",
+ "oven ","toaster","sink","refrigerator ","book","clock","vase","scissors ","teddy bear ","hair drier", "toothbrush ")
+
+def sigmoid(x):
+ return 1 / (1 + np.exp(-x))
+
+def process(input, mask, anchors):
+
+ anchors = [anchors[i] for i in mask]
+ grid_h, grid_w = map(int, input.shape[0:2])
+
+ box_confidence = sigmoid(input[..., 4])
+ box_confidence = np.expand_dims(box_confidence, axis=-1)
+
+ box_class_probs = sigmoid(input[..., 5:])
+
+ box_xy = sigmoid(input[..., :2])
+ box_wh = np.exp(input[..., 2:4])
+ box_wh = box_wh * anchors
+
+ col = np.tile(np.arange(0, grid_w), grid_w).reshape(-1, grid_w)
+ row = np.tile(np.arange(0, grid_h).reshape(-1, 1), grid_h)
+
+ col = col.reshape(grid_h, grid_w, 1, 1).repeat(3, axis=-2)
+ row = row.reshape(grid_h, grid_w, 1, 1).repeat(3, axis=-2)
+ grid = np.concatenate((col, row), axis=-1)
+
+ box_xy += grid
+ box_xy /= (grid_w, grid_h)
+ box_wh /= (416, 416)
+ box_xy -= (box_wh / 2.)
+ box = np.concatenate((box_xy, box_wh), axis=-1)
+
+ return box, box_confidence, box_class_probs
+
+def filter_boxes(boxes, box_confidences, box_class_probs):
+ """Filter boxes with object threshold.
+
+ # Arguments
+ boxes: ndarray, boxes of objects.
+ box_confidences: ndarray, confidences of objects.
+ box_class_probs: ndarray, class_probs of objects.
+
+ # Returns
+ boxes: ndarray, filtered boxes.
+ classes: ndarray, classes for boxes.
+ scores: ndarray, scores for boxes.
+ """
+ box_scores = box_confidences * box_class_probs
+ box_classes = np.argmax(box_scores, axis=-1)
+ box_class_scores = np.max(box_scores, axis=-1)
+ pos = np.where(box_class_scores >= OBJ_THRESH)
+
+ boxes = boxes[pos]
+ classes = box_classes[pos]
+ scores = box_class_scores[pos]
+
+ return boxes, classes, scores
+
+def nms_boxes(boxes, scores):
+ """Suppress non-maximal boxes.
+
+ # Arguments
+ boxes: ndarray, boxes of objects.
+ scores: ndarray, scores of objects.
+
+ # Returns
+ keep: ndarray, index of effective boxes.
+ """
+ x = boxes[:, 0]
+ y = boxes[:, 1]
+ w = boxes[:, 2]
+ h = boxes[:, 3]
+
+ areas = w * h
+ order = scores.argsort()[::-1]
+
+ keep = []
+ while order.size > 0:
+ i = order[0]
+ keep.append(i)
+
+ xx1 = np.maximum(x[i], x[order[1:]])
+ yy1 = np.maximum(y[i], y[order[1:]])
+ xx2 = np.minimum(x[i] + w[i], x[order[1:]] + w[order[1:]])
+ yy2 = np.minimum(y[i] + h[i], y[order[1:]] + h[order[1:]])
+
+ w1 = np.maximum(0.0, xx2 - xx1 + 0.00001)
+ h1 = np.maximum(0.0, yy2 - yy1 + 0.00001)
+ inter = w1 * h1
+
+ ovr = inter / (areas[i] + areas[order[1:]] - inter)
+ inds = np.where(ovr <= NMS_THRESH)[0]
+ order = order[inds + 1]
+ keep = np.array(keep)
+ return keep
+
+def yolov3_post_process(input_data):
+ # yolov3
+ masks = [[6, 7, 8], [3, 4, 5], [0, 1, 2]]
+ anchors = [[10, 13], [16, 30], [33, 23], [30, 61], [62, 45],
+ [59, 119], [116, 90], [156, 198], [373, 326]]
+ # yolov3-tiny
+ # masks = [[3, 4, 5], [0, 1, 2]]
+ # anchors = [[10, 14], [23, 27], [37, 58], [81, 82], [135, 169], [344, 319]]
+
+ boxes, classes, scores = [], [], []
+ for input,mask in zip(input_data, masks):
+ b, c, s = process(input, mask, anchors)
+ b, c, s = filter_boxes(b, c, s)
+ boxes.append(b)
+ classes.append(c)
+ scores.append(s)
+
+ boxes = np.concatenate(boxes)
+ classes = np.concatenate(classes)
+ scores = np.concatenate(scores)
+
+ nboxes, nclasses, nscores = [], [], []
+ for c in set(classes):
+ inds = np.where(classes == c)
+ b = boxes[inds]
+ c = classes[inds]
+ s = scores[inds]
+
+ keep = nms_boxes(b, s)
+
+ nboxes.append(b[keep])
+ nclasses.append(c[keep])
+ nscores.append(s[keep])
+
+ if not nclasses and not nscores:
+ return None, None, None
+
+ boxes = np.concatenate(nboxes)
+ classes = np.concatenate(nclasses)
+ scores = np.concatenate(nscores)
+
+ return boxes, classes, scores
+
+def draw(image, boxes, scores, classes):
+ """Draw the boxes on the image.
+
+ # Argument:
+ image: original image.
+ boxes: ndarray, boxes of objects.
+ classes: ndarray, classes of objects.
+ scores: ndarray, scores of objects.
+ all_classes: all classes name.
+ """
+ print("{:^12} {:^12} {}".format('class', 'score', 'xmin, ymin, xmax, ymax'))
+ print('-' * 50)
+ for box, score, cl in zip(boxes, scores, classes):
+ x, y, w, h = box
+ x *= image.shape[1]
+ y *= image.shape[0]
+ w *= image.shape[1]
+ h *= image.shape[0]
+ top = max(0, np.floor(x + 0.5).astype(int))
+ left = max(0, np.floor(y + 0.5).astype(int))
+ right = min(image.shape[1], np.floor(x + w + 0.5).astype(int))
+ bottom = min(image.shape[0], np.floor(y + h + 0.5).astype(int))
+
+ cv2.rectangle(image, (top, left), (right, bottom), (255, 0, 0), 2)
+ cv2.putText(image, '{0} {1:.2f}'.format(CLASSES[cl], score),
+ (top, left - 6),
+ cv2.FONT_HERSHEY_SIMPLEX,
+ 0.6, (0, 0, 255), 2)
+
+ print("{:^12} {:^12.3f} [{:>4}, {:>4}, {:>4}, {:>4}]".format(CLASSES[cl], score, top, left, right, bottom))
+
+def download_yolov3_weight(dst_path):
+ if os.path.exists(dst_path):
+ print('yolov3.weight exist.')
+ return
+ print('Downloading yolov3.weights...')
+ url = 'https://pjreddie.com/media/files/yolov3.weights'
+ try:
+ urllib.request.urlretrieve(url, dst_path)
+ except urllib.error.HTTPError as e:
+ print('HTTPError code: ', e.code)
+ print('HTTPError reason: ', e.reason)
+ exit(-1)
+ except urllib.error.URLError as e:
+ print('URLError reason: ', e.reason)
+ else:
+ print('Download yolov3.weight success.')
diff --git a/rknn-toolkit2/examples/functions/accuracy_analysis/README.md b/rknn-toolkit2/examples/functions/accuracy_analysis/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..493056647580f82fc8eceae7afc9619f41bc7e5d
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/accuracy_analysis/README.md
@@ -0,0 +1,39 @@
+# How to use accuracy-analysis function
+
+## Model Source
+The model used in this example come from:
+https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.onnx
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.accuracy_analysis'.
+
+## Expected Results
+This example will outputs the results of the accuracy analysis and store all the results in the snapshot directory, as follows:
+```
+# simulator_error: calculate the output error of each layer of the simulator (compared to the 'golden' value).
+# entire: output error of each layer between 'golden' and 'simulator', these errors will accumulate layer by layer.
+# single: single-layer output error between 'golden' and 'simulator', can better reflect the single-layer accuracy of the simulator.
+
+layer_name simulator_error
+ entire single
+ cos euc cos euc
+--------------------------------------------------------------------------------------------------
+[Input] data 1.00000 | 0.0 1.00000 | 0.0
+[exDataConvert] data_int8 0.99997 | 2.3275 0.99997 | 2.3275
+[BatchNormalization] resnetv24_batchnorm0_fwd 0.99995 | 2.4514 0.99995 | 2.4514
+
+...
+
+[Relu] resnetv24_relu1_fwd 0.98352 | 41.498 0.99989 | 3.3598
+[Conv] resnetv24_pool1_fwd 0.99545 | 2.2519 0.99999 | 0.1243
+[Conv] resnetv24_dense0_fwd_conv 0.99450 | 6.8046 0.99993 | 0.7382
+[Reshape] resnetv24_dense0_fwd_int8 0.99450 | 6.8046 0.99994 | 0.6719
+[exDataConvert] resnetv24_dense0_fwd 0.99450 | 6.8046 0.99994 | 0.6719
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/accuracy_analysis/dataset.txt b/rknn-toolkit2/examples/functions/accuracy_analysis/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9078c68db586a0251bdd41282d67f4d256b3abc3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/accuracy_analysis/dataset.txt
@@ -0,0 +1 @@
+dog_224x224.jpg
diff --git a/rknn-toolkit2/examples/functions/accuracy_analysis/dog_224x224.jpg b/rknn-toolkit2/examples/functions/accuracy_analysis/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/accuracy_analysis/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/functions/accuracy_analysis/labels.txt b/rknn-toolkit2/examples/functions/accuracy_analysis/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/accuracy_analysis/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/accuracy_analysis/test.py b/rknn-toolkit2/examples/functions/accuracy_analysis/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..10e008bd4060cd817bf7e76daf2aac59110d9a45
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/accuracy_analysis/test.py
@@ -0,0 +1,120 @@
+import os
+import urllib
+import traceback
+import time
+import sys
+import numpy as np
+import cv2
+from rknn.api import RKNN
+import urllib.request
+
+ONNX_MODEL = 'resnet50v2.onnx'
+RKNN_MODEL = 'resnet50v2.rknn'
+
+
+def show_outputs(outputs):
+ output = outputs
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'resnet50v2\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+def softmax(output):
+ return np.exp(output)/np.sum(np.exp(output))
+
+def readable_speed(speed):
+ speed_bytes = float(speed)
+ speed_kbytes = speed_bytes / 1024
+ if speed_kbytes > 1024:
+ speed_mbytes = speed_kbytes / 1024
+ if speed_mbytes > 1024:
+ speed_gbytes = speed_mbytes / 1024
+ return "{:.2f} GB/s".format(speed_gbytes)
+ else:
+ return "{:.2f} MB/s".format(speed_mbytes)
+ else:
+ return "{:.2f} KB/s".format(speed_kbytes)
+
+
+def show_progress(blocknum, blocksize, totalsize):
+ speed = (blocknum * blocksize) / (time.time() - start_time)
+ speed_str = " Speed: {}".format(readable_speed(speed))
+ recv_size = blocknum * blocksize
+
+ f = sys.stdout
+ progress = (recv_size / totalsize)
+ progress_str = "{:.2f}%".format(progress * 100)
+ n = round(progress * 50)
+ s = ('#' * n).ljust(50, '-')
+ f.write(progress_str.ljust(8, ' ') + '[' + s + ']' + speed_str)
+ f.flush()
+ f.write('\r\n')
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # If resnet50v2 does not exist, download it.
+ # Download address:
+ # https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.onnx
+ if not os.path.exists(ONNX_MODEL):
+ print('--> Download {}'.format(ONNX_MODEL))
+ url = 'https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.onnx'
+ download_file = ONNX_MODEL
+ try:
+ start_time = time.time()
+ urllib.request.urlretrieve(url, download_file, show_progress)
+ except:
+ print('Download {} failed.'.format(download_file))
+ print(traceback.format_exc())
+ exit(-1)
+ print('done')
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[123.68, 116.28, 103.53], std_values=[57.38, 57.38, 57.38], target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_onnx(model=ONNX_MODEL)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Accuracy analysis
+ print('--> Accuracy analysis')
+ ret = rknn.accuracy_analysis(inputs=['./dog_224x224.jpg'], output_dir='./snapshot')
+ if ret != 0:
+ print('Accuracy analysis failed!')
+ exit(ret)
+ print('done')
+
+ print('float32:')
+ output = np.genfromtxt('./snapshot/golden/resnetv24_dense0_fwd.txt')
+ show_outputs(softmax(output))
+
+ print('quantized:')
+ output = np.genfromtxt('./snapshot/simulator/resnetv24_dense0_fwd.txt')
+ show_outputs(softmax(output))
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/codegen/README.md b/rknn-toolkit2/examples/functions/codegen/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..bf462bb1c1c8f3b7eacc937063027f290b91ae91
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/codegen/README.md
@@ -0,0 +1,25 @@
+## Codegen
+
+### 1.Introduction
+
+RKNN-Toolkit2 support using `rknn.codegen` to generate cpp deploy demo.
+
+
+
+### 2.How to use
+
+1.After "**export_rknn**", calling "**codegen**" interface to generate cpp demo as followed:
+
+```python
+rknn.codegen(output_path='./rknn_app_demo', inputs=['./dog_224x224.jpg'], overwrite=False)
+```
+
+- If overwrite set False and './deploy_demo' already exists, skip generation.
+- Inputs feed a list of input file. File could be **jpg/png/bmp/npy**.
+
+
+
+2.After calling "**codegen**", a folder named "**./rknn_app_demo**" should be created. Then follow the introduction of "**./rknn_app_demo/README.md**" to execute the demo.
+
+
+
diff --git a/rknn-toolkit2/examples/functions/codegen/test.py b/rknn-toolkit2/examples/functions/codegen/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..06a0390c54bfc0198b1b0dbfb17ac923e0628e76
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/codegen/test.py
@@ -0,0 +1,64 @@
+import numpy as np
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ np.save('./caffe_mobilenet_v2_0.npy', outputs[0])
+ output = outputs[0].reshape(-1)
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'mobilenet_v2\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=False)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82], quant_img_RGB2BGR=True, target_platform='rk3562')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_caffe(model='../../caffe/mobilenet_v2/mobilenet_v2_deploy.prototxt',
+ blobs='../../caffe/mobilenet_v2/mobilenet_v2.caffemodel')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='../../caffe/mobilenet_v2/dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet_v2.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ print('--> Generate cpp demo')
+ ret = rknn.codegen(output_path='./rknn_app_demo', inputs=['../../caffe/mobilenet_v2/dog_224x224.jpg'], overwrite=True)
+ if ret != 0:
+ print('Generate cpp demo failed!')
+ exit(ret)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual.onnx b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual.onnx
new file mode 100644
index 0000000000000000000000000000000000000000..98222e21a73ecde75fc1c4142c65a64f666611a1
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual.onnx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c117a54d9166307face0cfcb34e31c3d66c8e5cfcb93ae82f03657bd519c6ba
+size 425
diff --git a/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_input_0.npy b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_input_0.npy
new file mode 100644
index 0000000000000000000000000000000000000000..e5ea5b74acc1dc79cf21e17aa2a95deadfd29261
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_input_0.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d406c365fe11c3c5bfaf0b97fcab0b28285ff3f7f1aef40abcdbab75e647a57f
+size 1328
diff --git a/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_input_1.npy b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_input_1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9ce97e44f947119b5bbf4ef9fb7be227ff21e3dc
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_input_1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2fc49f22db3826bbc907ec912b0d4bedd39237f718bc9a5478d22e96f8b2a4f
+size 1328
diff --git a/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_output_0.npy b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_output_0.npy
new file mode 100644
index 0000000000000000000000000000000000000000..60439b6f4a96f22d221c4533e572dc6f72ed329c
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_output_0.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:248263542ee11f6df0cd8f85641685ade840eb21df41b2a9d39bab5e4c6a985c
+size 1328
diff --git a/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_output_1.npy b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_output_1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..2343127a3a32f0c51b9cb3036972fada8a6656c4
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/dual_residual_output_1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40a42add9ad6c8f6057b913cc560441bac434e9b117adc92c61900a89d6aa244
+size 1328
diff --git a/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/test.py b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..28ce1b8a50f3bb759f074c3abebca56a77047a95
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/convert_custom_onnx_to_rknn/test.py
@@ -0,0 +1,91 @@
+import numpy as np
+from rknn.api import RKNN
+from rknn.api.custom_op import get_node_attr
+from scipy.spatial import distance
+
+
+class cstDualResidual:
+ # custom operator cstDualResidual
+ op_type = 'cstDualResidual'
+ def shape_infer(self, node, in_shapes, in_dtypes):
+ return in_shapes.copy(), in_dtypes.copy()
+ def compute(self, node, inputs):
+ x = inputs[0]
+ y = inputs[1]
+ alpha = get_node_attr(node, 'alpha')
+ tmp_1 = x*alpha - y
+ tmp_2 = y*alpha - x
+ return [tmp_1, tmp_2]
+
+
+if __name__ == '__main__':
+
+ custom_model_path = 'dual_residual.onnx'
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(target_platform='rk3588')
+ print('done')
+
+ # Register cstSigmoid op
+ print('--> Register cstDualResidual op')
+ ret = rknn.reg_custom_op(cstDualResidual())
+ if ret != 0:
+ print('Register cstDualResidual op failed!')
+ exit(ret)
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_onnx(model=custom_model_path)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=False)
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('dual_residual_custom.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Init runtime
+ print('--> Init runtime')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime failed!')
+ exit(ret)
+ print('done')
+
+ in_data_0 = np.load('dual_residual_input_0.npy')
+ in_data_1 = np.load('dual_residual_input_1.npy')
+
+ in_data_0 = np.transpose(in_data_0, (0,2,3,1))
+ in_data_1 = np.transpose(in_data_1, (0,2,3,1))
+
+ outputs = rknn.inference(inputs=[in_data_0, in_data_1])
+
+ # verifying
+ golden_data_0 = np.load('dual_residual_output_0.npy').astype(np.float32).ravel()
+ golden_data_1 = np.load('dual_residual_output_1.npy').astype(np.float32).ravel()
+
+ cosine_dst = 1 - distance.cosine(outputs[0].astype(np.float32).ravel(), golden_data_0)
+ print(f"cos distance for 0th output: {cosine_dst:.5f}")
+ cosine_dst = 1 - distance.cosine(outputs[1].astype(np.float32).ravel(), golden_data_1)
+ print(f"cos distance for 1th output: {cosine_dst:.5f}")
+
+ # Release
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/README.md b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..826222246c90ae9f19da1b52dc5b3b97427eaeff
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/README.md
@@ -0,0 +1,24 @@
+# 基于 Pytorch 导出带 custom op onnx 模型
+
+本示例主要说明如何在 Pytorch 的框架下,导出带有自定义op的ONNX模型
+
+
+
+## 适用场景
+
+1.解决Pytorch op无法转成 onnx op的问题,例如 torch.nn.threshold 算子
+
+2.为了性能,将多个零碎的Pytorch op转成单个 onnx op,并使用 neon/gpu 构建代码实现
+
+3.将任意函数转为单个 onnx op,例如将后处理转为 op
+
+
+
+## 原理介绍
+
+使用 torch.onnx.export 导出 onnx 模型时,会先对 model 做一次 torch.jit.trace 操作,转成 jit 模型,随后对 jit 格式定义的 op 进行映射,转成 onnx 模型。故实现自定义算子,存在以下两种情况:
+
+- **自定义 onnx op**。当 pytorch 已有的算子不支持转到 onnx,比如 torch.nn.threshold 算子,我们可以采取这种方式,此时只涉及 jit model -> onnx model 的链路,比较简单。请参考[文档](./register_onnx_symbolic/README.md)
+
+- **同时自定义 jit op 以及 onnx op**。正常情况下,由于 pytorch 算子的完备性很高,复杂操作都可以被拆成零碎的底层 op 进行支持,几乎不存在需要自己自定义 jit op 的情况。但缺点是模型有可能包含了非常多零碎的 jit op定义,性能较差,若想把某几个 jit op 合并成一个,并转为一个单一的 onnx op,请参考[文档](./register_pytorch_op/README.md)
+
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/README_EN.md b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/README_EN.md
new file mode 100644
index 0000000000000000000000000000000000000000..7fc67e7a3cbe640945bb5ef485babcd9a15da6d5
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/README_EN.md
@@ -0,0 +1,24 @@
+# Export custom onnx based on Pytorch
+
+This example mainly explains how to export an ONNX model with a custom op under the Pytorch framework.
+
+
+
+## Applicable scene
+
+1. Solve the problem that Pytorch op cannot be converted into onnx op, such as torch.nn.threshold operator
+
+2. For performance, convert multiple fragmented Pytorch ops into a single onnx op, and use neon/gpu to build the code implementation
+
+3. Convert any function into a single onnx op, such as converting post-processing into an onnx op
+
+
+
+## Introduction
+
+When using torch.onnx.export to export an onnx model, a torch.jit.trace operation will be performed on the model first to convert it into a jit model, and then the op defined in the jit format will be mapped and converted into an onnx model. Therefore, there are two situations when implementing a custom operator:
+
+- **Custom onnx op**. When the existing operators of pytorch do not support switching to onnx, such as the torch.nn.threshold operator, we can adopt this method. At this time, it only involves the process of converting jit model to onnx model, which is relatively simple. Please refer to [doc](./register_onnx_symbolic/README_EN.md)
+
+- **Custom jit op and onnx op both**. Under normal circumstances, due to the high completeness of pytorch operators, complex operations can be split into fragmented underlying ops for support. However, the disadvantage is that the model may contain a lot of fragmented jit op definitions, resulting in poor performance. If you want to merge several jit ops into one and convert them into a single onnx op, please refer to [doc](./register_pytorch_op/README_EN.md)
+
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/README.md b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..dd206d94dfa16271f3822f95c247209b47d71084
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/README.md
@@ -0,0 +1,139 @@
+# Register onnx symbolic
+
+本教程基于 pytorch-2.2.0,torchvision-0.16.0 版本进行测试验证。使用不同的版本可能会有差异。
+
+
+
+## 1.使用场景
+
+当 pytorch 已有算子转 onnx 失败时,例如 torch.nn.threshold(https://pytorch.org/docs/stable/generated/torch.nn.Threshold.html#torch.nn.Threshold),可以参考本例程,为 pytorch op 添加转 onnx 的支持。
+
+若需要自定义 pytorch op,请参考[文档](../register_pytorch_op/README.md)。
+
+
+
+## 2.执行例子
+
+```
+python test.py
+```
+
+
+
+## 3. 代码解释
+
+当模型存在 torch.nn.Threshold 算子,尝试导出onnx模型时会报错,具体情况如下:
+
+```python
+import torch
+
+class Model(torch.nn.Module):
+ def __init__(self, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+ self.m = torch.nn.Threshold(0.1, 20)
+
+ def forward(self, x):
+ y = self.m(x)
+ return y
+
+#导出 onnx 模型
+x = torch.randn(1, 3, 10, 10)
+m = Model()
+torch.onnx.export(m, (x,), "threshold.onnx", opset_version=12)
+```
+
+此时会碰到报错:
+
+```python
+raise errors.SymbolicValueError(
+torch.onnx.errors.SymbolicValueError: Unsupported: ONNX export of operator threshold, non-zero threshold. Please feel free to request support or submit a pull request on PyTorch GitHub: https://github.com/pytorch/pytorch/issues
+```
+
+
+
+可以看到当前 torch2onnx 不支持 **threshold** 算子到 onnx 导出,导致转模型失败。对于这种情况,可以在 torch.onnx.export 前,注册 onnx 的导出规则。
+
+- 首先我们找到 **torch.nn.threshold** 的输入定义,后续需要使用 parse_args 为每个输入配置对应的数据类型。
+
+```python
+# 在 torch.nn.functional.py 文件可以找到 threshold 的输入定义
+result = _VF.threshold(input, threshold, value)
+return result
+```
+
+- 定义一个 op 映射函数(对应下面代码中的 threshold_symbolic),构建 pytorch、onnx 算子输入的对应关系,以下代码分别展示了三种注册方式,以及对应的区别
+
+```python
+from torch.onnx.symbolic_helper import parse_args
+
+'''
+需要注意,该op映射函数必须使用 parse_args 进行修饰,修饰每一个输入的数据类型,根据torch的代码,有以下定义:
+Args:
+ arg_descriptors: list of str, where each element is
+ a string that specifies the type to convert to. Valid descriptors:
+ "v": no conversion, keep torch._C.Value.
+ "i": int
+ "is": list of int
+ "f": float
+ "fs": list of float
+ "b": bool
+ "s": str
+ "t": torch.Tensor
+ "none": the variable is unused
+'''
+
+'''
+自定义op的命名规范为: <生成组织>:<自定义op的名称>,例如以下例子是 rknn_cst::cst_threshold
+'''
+
+'''
+例子一
+不需要记录op属性时,可以忽略这些输入,在 g.op 函数中只记录 tensor输入
+'''
+@parse_args('v', 'f', 'f')
+def threshold_symbolic(g, x, threshold, value):
+ output = g.op("rknn_cst::cstThreshold", x)
+ return output
+
+
+'''
+例子二
+当需要记录op属性时,必须在 g.op 中声明,声明方式为添加参数关键字,请注意参数关键字的结尾需要用 _{type} 声明数据类型,这里由于每一个参数都是浮点型,故末尾加上 _f 的数据类型声明
+'''
+@parse_args('v', 'f', 'f')
+def threshold_symbolic(g, x, threshold, value):
+ output = g.op("rknn_cst::cstThreshold", x, threshold_f=threshold, value_f=value)
+ return output
+
+'''
+例子三
+若想要将属性记录为list,而不是单值,可采用下面方式
+'''
+@parse_args('v', 'f', 'f')
+def threshold_symbolic(g, x, threshold, value):
+ output = g.op("rknn_cst::cstThreshold", x, param_f=[threshold,value])
+ return output
+```
+
+- 声明以上函数后,将此函数注册到 torch2onnx 功能
+
+```python
+register_custom_op_symbolic("aten::threshold", threshold_symbolic, 12)
+#第一个参数,"aten::threshold" ,必须和pytorch已有的定义匹配上,不可以随意变更
+#第二个参数是前面定义的op映射函数
+#第三个参数是配置的 onnx-opset 版本,目前可不管,填入常用的 opset version 即可
+```
+
+
+
+## 4.拓展
+
+目前 torch2onnx 的自定义功能,不仅支持定义单个 torch op 到 单个 onnx op 的映射,理论上也支持下面形式
+
+- 覆盖已有的 torch2onnx 导出规则
+- 导出带有子图形式的自定义op
+
+由于使用场景较少,该教程暂不提供这类复杂用法,若有需要请参考 onnx 的官方文档自行实现
+
+
+
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/README_EN.md b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/README_EN.md
new file mode 100644
index 0000000000000000000000000000000000000000..ecb192b5f000094ccbc71b85b959f492786e85f2
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/README_EN.md
@@ -0,0 +1,138 @@
+# Register onnx symbolic
+
+This tutorial is based on pytorch-2.2.0 and torchvision-0.16.0 versions for testing and verification. There may be differences using different versions.
+
+
+
+## 1.Usage scenarios
+
+When pytorch fails to convert existing operators to onnx, such as torch.nn.threshold (https://pytorch.org/docs/stable/generated/torch.nn.Threshold.html#torch.nn.Threshold), you can refer to this tutorial, adds support for converting pytorch op to onnx op.
+
+If you need to customize pytorch op, please refer to [doc](../register_pytorch_op/README_EN.md).
+
+
+
+## 2.Usage
+
+```
+python test.py
+```
+
+
+
+## 3.Code explanation
+
+When the model has the torch.nn.Threshold operator, an error will be reported when trying to export the onnx model. The specific situation is as follows:
+
+```python
+import torch
+
+class Model(torch.nn.Module):
+ def __init__(self, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+ self.m = torch.nn.Threshold(0.1, 20)
+
+ def forward(self, x):
+ y = self.m(x)
+ return y
+
+x = torch.randn(1, 3, 10, 10)
+m = Model()
+torch.onnx.export(m, (x,), "threshold.onnx", opset_version=12)
+```
+
+At this time we encounter an error:
+
+```python
+raise errors.SymbolicValueError(
+torch.onnx.errors.SymbolicValueError: Unsupported: ONNX export of operator threshold, non-zero threshold. Please feel free to request support or submit a pull request on PyTorch GitHub: https://github.com/pytorch/pytorch/issues
+```
+
+
+
+It can be seen that currently torch2onnx does not support the export of the **threshold** operator to onnx, causing the model transfer to fail. For this case, you can register the export rules of onnx before torch.onnx.export.
+
+- First we find the input definition of **torch.nn.threshold**, and then we need to use parse_args to configure the corresponding data type for each input.
+
+```python
+# The input definition of threshold can be found in the torch.nn.functional.py
+result = _VF.threshold(input, threshold, value)
+return result
+```
+
+- Define an op mapping function (corresponding to threshold_symbolic in the code below) and construct the corresponding relationship between pytorch and onnx operator input. The following code shows the three registration methods and the corresponding differences.
+
+```python
+from torch.onnx.symbolic_helper import parse_args
+
+'''
+It should be noted that the op mapping function must be modified with parse_args to modify each input data type. According to the torch code, it has the following definition:
+Args:
+ arg_descriptors: list of str, where each element is
+ a string that specifies the type to convert to. Valid descriptors:
+ "v": no conversion, keep torch._C.Value.
+ "i": int
+ "is": list of int
+ "f": float
+ "fs": list of float
+ "b": bool
+ "s": str
+ "t": torch.Tensor
+ "none": the variable is unused
+'''
+
+'''
+The naming convention for custom ops is: :, for example, the following example is rknn_cst::cst_threshold
+'''
+
+'''
+Case-1
+When you do not need to record the op attribute, you can ignore these inputs and only record the tensor input in the g.op function.
+'''
+@parse_args('v', 'f', 'f')
+def threshold_symbolic(g, x, threshold, value):
+ output = g.op("rknn_cst::cstThreshold", x)
+ return output
+
+
+'''
+Case-2
+When the op attribute needs to be recorded, it must be declared in g.op. The declaration method is to add the parameter keyword. Please note that the data type needs to be declared with _{type} at the end of the parameter keyword. Since each parameter is a floating point type , so the data type declaration of _f is added at the end
+'''
+@parse_args('v', 'f', 'f')
+def threshold_symbolic(g, x, threshold, value):
+ output = g.op("rknn_cst::cstThreshold", x, threshold_f=threshold, value_f=value)
+ return output
+
+'''
+Case-3
+If you want to record attributes as a list instead of a single value, you can use the following method
+'''
+@parse_args('v', 'f', 'f')
+def threshold_symbolic(g, x, threshold, value):
+ output = g.op("rknn_cst::cstThreshold", x, param_f=[threshold,value])
+ return output
+```
+
+- After declaring the above function, register this function to the torch2onnx function
+
+```python
+register_custom_op_symbolic("aten::threshold", threshold_symbolic, 12)
+#The first parameter, "aten::threshold", must match the existing op definition of pytorch and cannot be changed at will.
+#The second parameter is the op mapping function defined earlier
+#The third parameter is the configured onnx-opset version. You can ignore it for now. Just fill in the commonly used opset version.
+```
+
+
+
+## 4.Extra
+
+Currently, the custom function of torch2onnx not only supports defining the mapping from a single torch op to a single onnx op, but also theoretically supports the following forms
+
+- Overwrite existing torch2onnx export rules
+- Export custom ops with subgraph form
+
+Due to the small number of usage scenarios, this tutorial does not provide such complex usage. If necessary, please refer to the official documentation of onnx to implement it yourself.
+
+
+
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/test.py b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..257e1e7320696c93c41c7c2c178d9b5581fa4868
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_onnx_symbolic/test.py
@@ -0,0 +1,32 @@
+import torch
+import numpy as np
+
+torch.manual_seed(0)
+
+class Model(torch.nn.Module):
+ def __init__(self, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+ self.m = torch.nn.Threshold(0.1, 20)
+
+ def forward(self, x):
+ y = self.m(x)
+ return y
+
+from torch.onnx import register_custom_op_symbolic
+from torch.onnx.symbolic_helper import parse_args
+
+@parse_args('v', 'f', 'f')
+def threshold_symbolic(g, x, threshold, value):
+ # output = g.op("rknn_cst::cst_threshold", x) # ignore threshold and value definition
+ output = g.op("rknn_cst::cstThreshold", x, threshold_f=threshold, value_f=value) # define threshold and value individually
+ # output = g.op("rknn_cst::cst_threshold", x, param_f=[threshold,value]) # combine threshold and value into a list
+ return output
+register_custom_op_symbolic("aten::threshold", threshold_symbolic, 12)
+
+x = torch.randn(1, 3, 10, 10)
+m = Model()
+result = m(x)
+torch.onnx.export(m, (x,), "threshold.onnx", opset_version=12)
+
+np.save("threshold_input.npy", x.numpy())
+np.save("threshold_output.npy", result.numpy())
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/README.md b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..54a313f036c4b1dde6f554bfc8afb17182a3974a
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/README.md
@@ -0,0 +1,114 @@
+# Register Pytorch op
+
+建议使用 Pytorch 1.13 或 2.x 版本执行本示例,且 python 环境中安装有 ninja 库
+
+
+
+## 1.使用场景
+
+当我们需要把模型中的一整块结构/复杂函数进行合并,并转换成 ONNX 的一个 op 时,可以参考本示例实现。
+
+- 此功能的实现依赖于 torch.utils.cpp_extension 模块,目前参考文档较少,可以参考
+ - 自定义op的文档: https://github.com/pytorch/pytorch/blob/main/aten/src/ATen/core/op_registration/README.md
+ - 自定义op单元测试:https://github.com/pytorch/pytorch/blob/main/test/test_cpp_extensions_jit.py
+- 请注意,pytorch 自定义 op 有多种实现方式,这里仅介绍其中一种较为方便的实现方式
+
+
+
+完整使用流程如下:
+
+1)定义算子的 cpp 代码(若只用于导出模型,不在推理/反向传播中使用自定义功能,则cpp代码的计算结果正确与否不影响后续流程,只要输入输出的定义、shape能正确即可)
+
+2)使用 torch.utils.cpp_extension 加载 cpp 定义的自定义算子
+
+3)使用自定义算子构造模型(或替换原模型中对应的结构)
+
+4)添加算子到 onnx 的映射函数
+
+5)导出 onnx 模型
+
+
+
+## 2.执行例子
+
+```
+python test.py
+```
+
+
+
+## 3.代码解释
+
+1)定义算子的 cpp 代码
+
+假设有 tensor A 和 tensor B,它们的 shape 相同,构建一个自定义 op ,其输入为(A,B,alpha),输出为(A*alpha -B,B\*alpha - A),此时 cpp 定义代码如下
+
+```cpp
+cpp_source = """
+#include
+std::tuple dual_residual(torch::Tensor x, torch::Tensor y, double_t alpha) {
+ torch::Tensor tmp1 = x* alpha - y;
+ torch::Tensor tmp2 = y* alpha - x;
+ return std::tuple(tmp1, tmp2);}
+static auto registry = torch::RegisterOperators()
+ .op("cst::dual_residual", &dual_residual);
+"""
+```
+
+其中的`static auto registry = torch::RegisterOperators().op("cst::dual_residual", &dual_residual);` 语句,作用是声明自定义op在 python 接口中的名称,例如示例代码执行后,对应的 python 接口为 torch.ops.cst.dual_residual
+
+
+
+2)使用 torch.utils.cpp_extension 接口加载上一步骤定义的 cpp 代码
+
+```python
+torch.utils.cpp_extension.load_inline(
+ name="test",
+ cpp_sources=cpp_source,
+ functions="dual_residual",
+ verbose=True,
+ is_python_module=True,
+ )
+# functions的字符串输入 dual_residual 需要和 cpp 定义中的函数名字一致
+```
+
+
+
+3)使用自定义算子构造模型
+
+```python
+class Fake_model(torch.nn.Module):
+ def __init__(self, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+ self.const = .5
+
+ def forward(self, x, y):
+ r1, r2 = torch.ops.cst.dual_residual(x, y, self.const)
+ return r1, r2
+```
+
+
+
+4)参考[文档](../register_onnx_symbolic/README.md),添加自定义 torch op 到 onnx op 的映射
+
+```python
+from torch.onnx import register_custom_op_symbolic
+from torch.onnx.symbolic_helper import parse_args
+
+@parse_args('v', 'v', 'f')
+def dual_residual_symbolic(g, x, y, alpha):
+ output = g.op("rknn_cst::cstDualResidual", x, y, alpha_f=alpha,
+ outputs=2)
+ return output
+
+register_custom_op_symbolic("cst::dual_residual", dual_residual_symbolic, 12)
+```
+
+
+
+5)导出模型
+
+```python
+torch.onnx.export(m, (x, y), "dual_residual.onnx", opset_version=12)
+```
+
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/README_EN.md b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/README_EN.md
new file mode 100644
index 0000000000000000000000000000000000000000..91985cb6abd7b35e5b92222e2db85cbd106bb71f
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/README_EN.md
@@ -0,0 +1,114 @@
+# Register Pytorch op
+
+It is recommended to use Pytorch 1.13 or 2.x version to execute this example, and the ninja library is installed in the python environment
+
+
+
+## 1.Usage scenarios
+
+When we need to merge an entire structure/complex function in the model and convert it into an ONNX op, we can refer to this example implementation.
+
+- The implementation of this function depends on the torch.utils.cpp_extension module. There are currently few reference documents, so you can refer to
+ - Custom op documentation: https://github.com/pytorch/pytorch/blob/main/aten/src/ATen/core/op_registration/README.md
+ - Custom op unit test: https://github.com/pytorch/pytorch/blob/main/test/test_cpp_extensions_jit.py
+- Please note that there are many ways to implement pytorch custom op. Here we only introduce one of the more convenient ways to implement it.
+
+
+
+The complete usage process is as follows:
+
+1) Define the cpp code of the operator (if it is only used to export the model and does not use custom functions in inference/backpropagation, the correctness of the calculation results of the cpp code will not affect the subsequent process, as long as the definition and shape of the input and output are correct)
+
+2) Use torch.utils.cpp_extension to load the custom operator defined in cpp
+
+3) Use custom operators to construct the model (or replace the corresponding structure in the original model)
+
+4) Add operator to onnx mapping function
+
+5) Export onnx model
+
+
+
+## 2.Usage
+
+```
+python test.py
+```
+
+
+
+## 3.Code explanation
+
+1)Define operator in cpp code.
+
+Assume that there are tensor A and tensor B with the same shape. Build a custom op wiht input as (A, B, alpha) and the output as (A*alpha -B, B\*alpha - A). The definition code is as follows
+
+```cpp
+cpp_source = """
+#include
+std::tuple dual_residual(torch::Tensor x, torch::Tensor y, double_t alpha) {
+ torch::Tensor tmp1 = x* alpha - y;
+ torch::Tensor tmp2 = y* alpha - x;
+ return std::tuple(tmp1, tmp2);}
+static auto registry = torch::RegisterOperators()
+ .op("cst::dual_residual", &dual_residual);
+"""
+```
+
+The `static auto registry = torch::RegisterOperators().op("cst::dual_residual", &dual_residual);` statement is used to declare the name of the custom op in the python interface. For example, after the example code is executed, the corresponding The python interface is torch.ops.cst.dual_residual
+
+
+
+2)Use the torch.utils.cpp_extension interface to load the cpp code defined in the previous step
+
+```python
+torch.utils.cpp_extension.load_inline(
+ name="test",
+ cpp_sources=cpp_source,
+ functions="dual_residual",
+ verbose=True,
+ is_python_module=True,
+ )
+# The string input dual_residual of functions needs to be consistent with the function name in the cpp definition
+```
+
+
+
+3)Construct a model using custom operators
+
+```python
+class Model(torch.nn.Module):
+ def __init__(self, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+ self.const = .5
+
+ def forward(self, x, y):
+ r1, r2 = torch.ops.cst.dual_residual(x, y, self.const)
+ return r1, r2
+```
+
+
+
+4)Refer to [doc](../register_onnx_symbolic/README_EN.md) to add a custom torch op to onnx op mapping
+
+```python
+from torch.onnx import register_custom_op_symbolic
+from torch.onnx.symbolic_helper import parse_args
+
+@parse_args('v', 'v', 'f')
+def dual_residual_symbolic(g, x, y, alpha):
+ output = g.op("rknn_cst::cstDualResidual", x, y, alpha_f=alpha,
+ outputs=2)
+ return output
+
+register_custom_op_symbolic("cst::dual_residual", dual_residual_symbolic, 12)
+```
+
+
+
+5)export onnx model
+
+```python
+torch.onnx.export(m, (x, y), "dual_residual.onnx", opset_version=12)
+```
+
diff --git a/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/test.py b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..52b1df13473145e72ee7cb61023851593cb2847d
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/gen_custom_onnx_from_pytorch/register_pytorch_op/test.py
@@ -0,0 +1,60 @@
+import torch
+import torch.utils.cpp_extension
+import numpy as np
+
+cpp_source = """
+#include
+std::tuple dual_residual(torch::Tensor x, torch::Tensor y, double_t alpha) {
+ torch::Tensor tmp1 = x* alpha - y;
+ torch::Tensor tmp2 = y* alpha - x;
+ return std::tuple(tmp1, tmp2);}
+static auto registry = torch::RegisterOperators()
+ .op("cst::dual_residual", &dual_residual);
+"""
+
+torch.utils.cpp_extension.load_inline(
+ name="test",
+ cpp_sources=cpp_source,
+ functions="dual_residual",
+ verbose=True,
+ is_python_module=True,
+)
+
+class Model(torch.nn.Module):
+ def __init__(self, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+ self.const = .5
+
+ def forward(self, x, y):
+ r1, r2 = torch.ops.cst.dual_residual(x, y, self.const)
+ return r1, r2
+
+x = torch.randn(1, 3, 10, 10)
+y = torch.randn(1, 3, 10, 10)
+m = Model()
+z = m(x, y)
+
+# target_result1 = x * .5 - y
+# target_result2 = y * .5 - x
+# print('result1 is equal:', torch.equal(z[0], target_result1))
+# print('result2 is equal:', torch.equal(z[1], target_result2))
+
+# jit_m = torch.jit.trace(m, (x, y))
+# jit_m.save("dual_residual.pt")
+
+from torch.onnx import register_custom_op_symbolic
+from torch.onnx.symbolic_helper import parse_args
+
+@parse_args('v', 'v', 'f')
+def dual_residual_symbolic(g, x, y, alpha):
+ output = g.op("rknn_cst::cstDualResidual", x, y, alpha_f=alpha,
+ outputs=2)
+ return output
+
+register_custom_op_symbolic("cst::dual_residual", dual_residual_symbolic, 12)
+torch.onnx.export(m, (x, y), "dual_residual.onnx", opset_version=12)
+
+np.save("dual_residual_input_0.npy", x.numpy())
+np.save("dual_residual_input_1.npy", y.numpy())
+np.save("dual_residual_output_0.npy", z[0].numpy())
+np.save("dual_residual_output_1.npy", z[1].numpy())
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/README.md b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..bdace5b098021891c0e756e9070919a7ff2ece99
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/README.md
@@ -0,0 +1,32 @@
+# How to use custom OP function
+
+## Model Source
+The model and YOLOX version used in this example come from the following open source project: https://github.com/airockchip/YOLOX
+
+Yolox_s Download link: [yolox_s.onnx](https://ftrg.zbox.filez.com/v2/delivery/data/ec1c6f44f8c24155875ac5bce7aa6b3c/examples/yolox/yolox_s.onnx)
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'RK3588', please modify the 'target_platform' parameter of 'rknn.config()' according to the actual platform.
+
+## Processes
+The process of this example is as follows:
+1. Edit the original ONNX model and save the custom ONNX model. Take Sigmoid OP as an example. Users can replace any OP with their own custom OP in ONNX model.
+2. Init RKNN.
+3. Register custom OP cstSigmoid.
+4. Convert custom ONNX model to RKNN model.
+5. Infer RKNN model in simulator.
+6. Save the picture of results.
+7. Release RKNN resource.
+
+## Expected Results
+1. Get an ONNX model named yolox_s_custom.onnx with cstSigmiod OP.
+2. Get a RKNN model named yolox_s_custom.rknn.
+3. Get a picture of detection results named result.jpg.
+
+
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/bus.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/bus.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..19172b78dbbcf34de2b875ac72eb0b4b0651ee66
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/bus.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb4914d123d97c440cd127ef0e98d4bdc68cd88e2683657528928b4a34014e16
+size 181374
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset.txt b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c32354e18fb66d7fcb2e031729a6f064823f3ba3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset.txt
@@ -0,0 +1,10 @@
+dataset/000000001296.jpg
+dataset/000000000776.jpg
+dataset/000000000724.jpg
+dataset/000000000785.jpg
+dataset/000000000632.jpg
+dataset/000000000139.jpg
+dataset/000000000872.jpg
+dataset/000000001268.jpg
+dataset/000000000285.jpg
+dataset/000000001000.jpg
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000139.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000139.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fcc0ee640f200f4557b4b77fd2fd010cf1d1bc2c
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000139.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffe0f0cec3b2e27aab1967229cdf0a0d7751dcdd5800322f0b8ac0dffb3b8a8d
+size 161811
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000285.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000285.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d6fac3296dfd30328248b229bcea70f1d6691119
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000285.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f3a2974ce3686332609124c70e3e6a2e3aca43fccf1cd1bd7c5c03820977f57d
+size 335861
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000632.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000632.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8a13832dd7305067b5d33cfa7ce6d695c3972347
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000632.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4cd7f45ac1ce27eaafb254b23af7c0b18a064be08870ceaaf03b2147f2ce550
+size 155667
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000724.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000724.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5c43ddad3428ab43630dea7797807454e64f6d80
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000724.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5c0e559c75d3969c8e3e297b61f61063f78045c9d4802b526ba616361f3823fd
+size 130107
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000776.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000776.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5138e0a56d766e85e4a40578a2908e1731154c3e
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000776.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1dd31e9059c491992be2f562624eb4093e17aee08b4f7baf5ff9ea24543b0a33
+size 176410
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000785.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000785.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d1d462ab49b9ec885e390c8c84a5c5e4527ef141
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000785.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83981537a7baeafbeb9c8cb67b3484dc26433f574b3685d021fa537e277e4726
+size 133674
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000872.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000872.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a2c7e4a2a048db3163173011ccb93c49b1de483f
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000000872.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2aa138ee3a59b057a7ba6fc5a6a18e62af531aa7dab78a7bfd33c1cd7e55eb6
+size 317669
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001000.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001000.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4d2aa4b1ac4940208a8e42cd490ab5bb32429109
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001000.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24bb77a31928404e45a0454b06f6a0bd54a8db103590c9d7917288a1e0269f05
+size 321136
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001268.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001268.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c6ddf5be5f14536c46129b3444e430531163a4ea
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001268.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8e85a2e71ee512fe748a3a3be9bb40b8591e8c501c0f3896efcb5be5999ec236
+size 180751
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001296.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001296.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d28461589ff55ec552d4833770fc547fa66f3c1e
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/dataset/000000001296.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34a98da7c11bc8811e6eec445145bb16f3d5f4338945ba116edcc1fe554d181b
+size 204829
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/result_truth.jpg b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/result_truth.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e90e812e48614acac0870a254a876e5628c88492
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/result_truth.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e957f233798900e9aa2fda0109da10a5acccd0264c2f40a206e06ed084023262
+size 192334
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/test.py b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..daed81563927915bec03384615cb475c0e0153c3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/test.py
@@ -0,0 +1,302 @@
+import numpy as np
+from rknn.api import RKNN
+
+OBJ_THRESH = 0.25
+NMS_THRESH = 0.45
+MODEL_IN_SIZE = (640, 640)
+
+CLASSES = ("person", "bicycle", "car","motorbike ","aeroplane ","bus ","train","truck ","boat","traffic light",
+ "fire hydrant","stop sign ","parking meter","bench","bird","cat","dog ","horse ","sheep","cow","elephant",
+ "bear","zebra ","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite",
+ "baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife ",
+ "spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza ","donut","cake","chair","sofa",
+ "pottedplant","bed","diningtable","toilet ","tvmonitor","laptop ","mouse ","remote ","keyboard ","cell phone","microwave ",
+ "oven ","toaster","sink","refrigerator ","book","clock","vase","scissors ","teddy bear ","hair drier", "toothbrush ")
+
+coco_id_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90]
+
+class cstSigmoid:
+ # custom operator cstSigmoid
+ op_type = 'cstSigmoid'
+ def shape_infer(self, node, in_shapes, in_dtypes):
+ return in_shapes.copy(), in_dtypes.copy()
+ def compute(self, node, inputs):
+ return [1.0 / (1.0 + np.exp(np.negative(inputs[0])))]
+
+class Letter_Box_Info():
+ def __init__(self, shape, new_shape, w_ratio, h_ratio, dw, dh, pad_color) -> None:
+ self.origin_shape = shape
+ self.new_shape = new_shape
+ self.w_ratio = w_ratio
+ self.h_ratio = h_ratio
+ self.dw = dw
+ self.dh = dh
+ self.pad_color = pad_color
+
+def filter_boxes(boxes, box_confidences, box_class_probs):
+ """Filter boxes with object threshold.
+ """
+ box_confidences = box_confidences.reshape(-1)
+ candidate, class_num = box_class_probs.shape
+
+ class_max_score = np.max(box_class_probs, axis=-1)
+ classes = np.argmax(box_class_probs, axis=-1)
+
+ _class_pos = np.where(class_max_score* box_confidences >= OBJ_THRESH)
+ scores = (class_max_score* box_confidences)[_class_pos]
+
+ boxes = boxes[_class_pos]
+ classes = classes[_class_pos]
+
+ return boxes, classes, scores
+
+def nms_boxes(boxes, scores):
+ """Suppress non-maximal boxes.
+ # Returns
+ keep: ndarray, index of effective boxes.
+ """
+ x = boxes[:, 0]
+ y = boxes[:, 1]
+ w = boxes[:, 2] - boxes[:, 0]
+ h = boxes[:, 3] - boxes[:, 1]
+
+ areas = w * h
+ order = scores.argsort()[::-1]
+
+ keep = []
+ while order.size > 0:
+ i = order[0]
+ keep.append(i)
+
+ xx1 = np.maximum(x[i], x[order[1:]])
+ yy1 = np.maximum(y[i], y[order[1:]])
+ xx2 = np.minimum(x[i] + w[i], x[order[1:]] + w[order[1:]])
+ yy2 = np.minimum(y[i] + h[i], y[order[1:]] + h[order[1:]])
+
+ w1 = np.maximum(0.0, xx2 - xx1 + 0.00001)
+ h1 = np.maximum(0.0, yy2 - yy1 + 0.00001)
+ inter = w1 * h1
+
+ ovr = inter / (areas[i] + areas[order[1:]] - inter)
+ inds = np.where(ovr <= NMS_THRESH)[0]
+ order = order[inds + 1]
+ keep = np.array(keep)
+ return keep
+
+def box_process(position):
+ grid_h, grid_w = position.shape[2:4]
+ col, row = np.meshgrid(np.arange(0, grid_w), np.arange(0, grid_h))
+ col = col.reshape(1, 1, grid_h, grid_w)
+ row = row.reshape(1, 1, grid_h, grid_w)
+ grid = np.concatenate((col, row), axis=1)
+ stride = np.array([MODEL_IN_SIZE[1]//grid_h, MODEL_IN_SIZE[0]//grid_w]).reshape(1,2,1,1)
+
+ box_xy = position[:,:2,:,:]
+ box_wh = np.exp(position[:,2:4,:,:]) * stride
+
+ box_xy += grid
+ box_xy *= stride
+ box = np.concatenate((box_xy, box_wh), axis=1)
+
+ # Convert [c_x, c_y, w, h] to [x1, y1, x2, y2]
+ xyxy = np.copy(box)
+ xyxy[:, 0, :, :] = box[:, 0, :, :] - box[:, 2, :, :]/ 2 # top left x
+ xyxy[:, 1, :, :] = box[:, 1, :, :] - box[:, 3, :, :]/ 2 # top left y
+ xyxy[:, 2, :, :] = box[:, 0, :, :] + box[:, 2, :, :]/ 2 # bottom right x
+ xyxy[:, 3, :, :] = box[:, 1, :, :] + box[:, 3, :, :]/ 2 # bottom right y
+
+ return xyxy
+
+def post_process(input_data):
+ boxes, scores, classes_conf = [], [], []
+
+ input_data = [_in.reshape([1, -1]+list(_in.shape[-2:])) for _in in input_data]
+ for i in range(len(input_data)):
+ boxes.append(box_process(input_data[i][:,:4,:,:]))
+ scores.append(input_data[i][:,4:5,:,:])
+ classes_conf.append(input_data[i][:,5:,:,:])
+
+ def sp_flatten(_in):
+ ch = _in.shape[1]
+ _in = _in.transpose(0,2,3,1)
+ return _in.reshape(-1, ch)
+
+ boxes = [sp_flatten(_v) for _v in boxes]
+ classes_conf = [sp_flatten(_v) for _v in classes_conf]
+ scores = [sp_flatten(_v) for _v in scores]
+
+ boxes = np.concatenate(boxes)
+ classes_conf = np.concatenate(classes_conf)
+ scores = np.concatenate(scores)
+
+ # filter according to threshold
+ boxes, classes, scores = filter_boxes(boxes, scores, classes_conf)
+
+ # nms
+ nboxes, nclasses, nscores = [], [], []
+ keep = nms_boxes(boxes, scores)
+ if len(keep) != 0:
+ nboxes.append(boxes[keep])
+ nclasses.append(classes[keep])
+ nscores.append(scores[keep])
+
+ if not nclasses and not nscores:
+ return None, None, None
+
+ boxes = np.concatenate(nboxes)
+ classes = np.concatenate(nclasses)
+ scores = np.concatenate(nscores)
+
+ return boxes, classes, scores
+
+def draw(image, boxes, scores, classes):
+ for box, score, cl in zip(boxes, scores, classes):
+ top, left, right, bottom = [int(_b) for _b in box]
+ print('class: {}, score: {}'.format(CLASSES[cl], score))
+ print('box coordinate left,top,right,down: [{}, {}, {}, {}]'.format(top, left, right, bottom))
+
+ cv2.rectangle(image, (top, left), (right, bottom), (255, 0, 0), 2)
+ cv2.putText(image, '{0} {1:.2f}'.format(CLASSES[cl], score),
+ (top, left - 6),
+ cv2.FONT_HERSHEY_SIMPLEX,
+ 0.6, (0, 0, 255), 2)
+
+def letter_box(im, new_shape, pad_color=(0,0,0)):
+ # Resize and pad image while meeting stride-multiple constraints
+ shape = im.shape[:2] # current shape [height, width]
+ if isinstance(new_shape, int):
+ new_shape = (new_shape, new_shape)
+
+ # Scale ratio
+ h_ratio = new_shape[0] / shape[0]
+ w_ratio = new_shape[1] / shape[1]
+ r = min(h_ratio, w_ratio)
+
+ # Compute padding
+ new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r))
+ dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding
+
+ dw /= 2 # divide padding into 2 sides
+ dh /= 2
+
+ if shape[::-1] != new_unpad: # resize
+ im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR)
+ top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))
+ left, right = int(round(dw - 0.1)), int(round(dw + 0.1))
+ im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=pad_color) # add border
+
+ letter_box_info = Letter_Box_Info(shape, new_shape, w_ratio, h_ratio, dw, dh, pad_color)
+ return im, letter_box_info
+
+def get_real_box(box, letter_box_info, in_format='xyxy'):
+ from copy import copy
+ bbox = copy(box)
+ # unletter_box result
+ bbox[:,0] -= letter_box_info.dw
+ bbox[:,0] /= letter_box_info.w_ratio
+ bbox[:,0] = np.clip(bbox[:,0], 0, letter_box_info.origin_shape[1])
+
+ bbox[:,1] -= letter_box_info.dh
+ bbox[:,1] /= letter_box_info.h_ratio
+ bbox[:,1] = np.clip(bbox[:,1], 0, letter_box_info.origin_shape[0])
+
+ bbox[:,2] -= letter_box_info.dw
+ bbox[:,2] /= letter_box_info.w_ratio
+ bbox[:,2] = np.clip(bbox[:,2], 0, letter_box_info.origin_shape[1])
+
+ bbox[:,3] -= letter_box_info.dh
+ bbox[:,3] /= letter_box_info.h_ratio
+ bbox[:,3] = np.clip(bbox[:,3], 0, letter_box_info.origin_shape[0])
+
+ return bbox
+
+def edit_onnx(in_model, output_model):
+ # Here, take OP Sigmoid as an example. Users can replace any OP with their own custom OP in ONNX model.
+ import onnx
+ model = onnx.load(in_model)
+ for node in model.graph.node:
+ if node.op_type == "Sigmoid":
+ node.op_type = "cstSigmoid"
+ onnx.save(model, output_model)
+
+
+if __name__ == '__main__':
+
+ model_path = 'yolox_s.onnx'
+ custom_model_path = 'yolox_s_custom.onnx'
+ edit_onnx(model_path, custom_model_path)
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[[0, 0, 0]], std_values=[[1, 1, 1]], target_platform='rk3588')
+ print('done')
+
+ # Register cstSigmoid op
+ print('--> Register cstSigmoid op')
+ ret = rknn.reg_custom_op(cstSigmoid())
+ if ret != 0:
+ print('Register cstSigmoid op failed!')
+ exit(ret)
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_onnx(model=custom_model_path, input_size_list=[[1, 3, MODEL_IN_SIZE[1], MODEL_IN_SIZE[0]]])
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('yolox_s_custom.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Init runtime
+ print('--> Init runtime')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime failed!')
+ exit(ret)
+ print('done')
+
+ # Get input data
+ import cv2
+ img_src = cv2.imread('bus.jpg')
+ img, letter_box_info = letter_box(im=img_src.copy(), new_shape=(MODEL_IN_SIZE[1], MODEL_IN_SIZE[0]))
+ print(letter_box_info)
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+
+ # Simulator inference
+ print('--> Inference model')
+ outputs = rknn.inference(inputs=[img])
+ np.save('./functions_custom_op_non-onnx_standard_0.npy', outputs[0])
+ np.save('./functions_custom_op_non-onnx_standard_1.npy', outputs[1])
+ np.save('./functions_custom_op_non-onnx_standard_2.npy', outputs[2])
+
+ boxes, classes, scores = post_process(outputs)
+
+ img_p = img_src.copy()
+ if boxes is not None:
+ draw(img_p, get_real_box(boxes, letter_box_info), scores, classes)
+ cv2.imwrite('result.jpg', img_p)
+ print('Save results to result.jpg!')
+
+ # Release
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/yolox_s.onnx b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/yolox_s.onnx
new file mode 100644
index 0000000000000000000000000000000000000000..be02d3b39fc9241b2b5b3317256895c2bd8bf5e3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/custom_op/non-onnx_standard/yolox_s.onnx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc7f06de8ea114a58ef2eca91d0595277adc92062f12d8055fd676e39f7ac1bf
+size 35859274
diff --git a/rknn-toolkit2/examples/functions/dynamic_shape/README.md b/rknn-toolkit2/examples/functions/dynamic_shape/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e24b2026c9e6b94f6a1634d2836157d310608487
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/dynamic_shape/README.md
@@ -0,0 +1,56 @@
+# How to use dynamic shape function
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/shicai/MobileNet-Caffe
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+- The 'dynamic_input' parameter of 'rknn.config' is set to:
+ ```
+ dynamic_input = [
+ [[1,3,256,256]], # set 1: [input0_256]
+ [[1,3,160,160]], # set 2: [input0_160]
+ [[1,3,224,224]], # set 3: [input0_224]
+ ]
+ ```
+ to simulate models with dynamic input shapes.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results for each different input shape, as follows:
+```
+--> Running model with input shape [1,3,224,224]
+GraphPreparing : 100%|██████████████████████████████████████████| 104/104 [00:00<00:00, 4764.33it/s]
+SessionPreparing : 100%|█████████████████████████████████████████| 104/104 [00:00<00:00, 366.73it/s]
+-----TOP 5-----
+[155] score:0.993652 class:"Shih-Tzu"
+[154] score:0.002277 class:"Pekinese, Pekingese, Peke"
+[204] score:0.002277 class:"Lhasa, Lhasa apso"
+[283] score:0.000673 class:"Persian cat"
+[196] score:0.000109 class:"miniature schnauzer"
+--> Running model with input shape [1,3,160,160]
+GraphPreparing : 100%|██████████████████████████████████████████| 104/104 [00:00<00:00, 9800.88it/s]
+SessionPreparing : 100%|████████████████████████████████████████| 104/104 [00:00<00:00, 1296.61it/s]
+-----TOP 5-----
+[155] score:0.963867 class:"Shih-Tzu"
+[154] score:0.029099 class:"Pekinese, Pekingese, Peke"
+[204] score:0.006393 class:"Lhasa, Lhasa apso"
+[194] score:0.000415 class:"Dandie Dinmont, Dandie Dinmont terrier"
+[219] score:0.000090 class:"cocker spaniel, English cocker spaniel, cocker"
+--> Running model with input shape [1,3,256,256]
+GraphPreparing : 100%|██████████████████████████████████████████| 104/104 [00:00<00:00, 8788.48it/s]
+SessionPreparing : 100%|████████████████████████████████████████| 104/104 [00:00<00:00, 1404.91it/s]
+-----TOP 5-----
+[155] score:0.981445 class:"Shih-Tzu"
+[154] score:0.008896 class:"Pekinese, Pekingese, Peke"
+[204] score:0.004169 class:"Lhasa, Lhasa apso"
+[193] score:0.000783 class:"Australian terrier"
+[283] score:0.000783 class:"Persian cat"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/dynamic_shape/dog_224x224.jpg b/rknn-toolkit2/examples/functions/dynamic_shape/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/dynamic_shape/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/functions/dynamic_shape/labels.txt b/rknn-toolkit2/examples/functions/dynamic_shape/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/dynamic_shape/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/dynamic_shape/test.py b/rknn-toolkit2/examples/functions/dynamic_shape/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..25841b3deeb2bec35af2114999c4125b6fcebe37
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/dynamic_shape/test.py
@@ -0,0 +1,109 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ output_ = outputs[0].reshape((-1, 1000))
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ for output in output_:
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ top5_str = '-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+def show_perfs(perfs):
+ perfs = 'perfs: {}\n'.format(outputs)
+ print(perfs)
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # The multiple sets of input shapes specified by the user, to simulate the function of dynamic input.
+ # Please make sure the model can be dynamic when enable 'config.dynamic_input', and shape in dynamic_input are correctly!
+ dynamic_input = [
+ [[1,3,256,256]], # set 1: [input0_256]
+ [[1,3,160,160]], # set 2: [input0_160]
+ [[1,3,224,224]], # set 3: [input0_224]
+ ]
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82], quant_img_RGB2BGR=True, target_platform='rk3566', dynamic_input=dynamic_input)
+ print('done')
+
+ # Load model (from https://github.com/shicai/MobileNet-Caffe)
+ print('--> Loading model')
+ ret = rknn.load_caffe(model='../../caffe/mobilenet_v2/mobilenet_v2_deploy.prototxt',
+ blobs='../../caffe/mobilenet_v2/mobilenet_v2.caffemodel')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='../../caffe/mobilenet_v2/dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet_v2.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+
+ # Inference
+ print('\n--> Running model with input shape [1,3,224,224]')
+ img2 = cv2.resize(img, (224,224))
+ img2 = np.expand_dims(img2, 0)
+ img2 = np.transpose(img2, (0,3,1,2)) # [1,3,224,224]
+ outputs = rknn.inference(inputs=[img2], data_format=['nchw'])
+ np.save('./functions_dynamic_shape_0.npy', outputs[0])
+ show_outputs(outputs)
+
+ print('--> Running model with input shape [1,3,160,160]')
+ img3 = cv2.resize(img, (160,160))
+ img3 = np.expand_dims(img3, 0)
+ img3 = np.transpose(img3, (0,3,1,2)) # [1,3,160,160]
+ outputs = rknn.inference(inputs=[img3], data_format=['nchw'])
+ np.save('./functions_dynamic_shape_1.npy', outputs[0])
+ show_outputs(outputs)
+
+ print('--> Running model with input shape [1,3,256,256]')
+ img4 = cv2.resize(img, (256,256))
+ img4 = np.expand_dims(img4, 0)
+ img4 = np.transpose(img4, (0,3,1,2)) # [1,3,256,256]
+ outputs = rknn.inference(inputs=[img4], data_format=['nchw'])
+ np.save('./functions_dynamic_shape_2.npy', outputs[0])
+ show_outputs(outputs)
+
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/README.md b/rknn-toolkit2/examples/functions/hybrid_quant/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..5f88bc0ab5f63157bc3bba118d29a2a77b7a42e3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/README.md
@@ -0,0 +1,40 @@
+# How to use hybrid-quantization function
+
+## Model Source
+The model used in this example come from:
+https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md ssd_mobilenet_v2_coco
+
+## Script Usage
+*Usage:*
+```
+1. python step1.py
+2. modify ssd_mobilenet_v2.quantization.cfg according to the prompt of step1.py
+3. python step2.py
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will outputs the results of the accuracy analysis and save the result of object detection to the 'result.jpg', as follows:
+```
+layer_name simulator_error
+ entire single
+ cos euc cos euc
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+[Input] FeatureExtractor/MobilenetV2/MobilenetV2/input:0 1.00000 | 0.0 1.00000 | 0.0
+[exDataConvert] FeatureExtractor/MobilenetV2/MobilenetV2/input:0_int8 0.99996 | 2.0377 0.99996 | 2.0377
+[Conv] Conv__350:0
+[Clip] FeatureExtractor/MobilenetV2/Conv/Relu6:0 0.99998 | 9.5952 0.99998 | 9.5952
+[Conv] FeatureExtractor/MobilenetV2/expanded_conv/depthwise/BatchNorm/batchnorm/add_1:0
+[Clip] FeatureExtractor/MobilenetV2/expanded_conv/depthwise/Relu6:0 0.99951 | 65.269 0.99957 | 61.673
+
+....
+
+[Concat] concat:0_before_conv 0.99817 | 9.3381 1.00000 | 0.0317
+[exDataConvert] concat:0_before_conv__int8 0.99812 | 9.4634 0.99994 | 1.6116
+[Conv] concat:0_int8 0.99812 | 9.4634 0.99994 | 1.6115
+[exDataConvert] concat:0 0.99812 | 9.4634 0.99994 | 1.6115
+```
+
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/box_priors.txt b/rknn-toolkit2/examples/functions/hybrid_quant/box_priors.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7246b073fe7fd8b1d1340536457c8aeac24cd5a3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/box_priors.txt
@@ -0,0 +1,5 @@
+ 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.16666667 0.16666667 0.16666666 0.16666667 0.16666669 0.16666667 0.16666667 0.16666667 0.16666666 0.16666667 0.16666669 0.16666667 0.16666667 0.16666667 0.16666666 0.16666667 0.16666669 0.16666667 0.5 0.5 0.49999997 0.5 0.5 0.5 0.5 0.5 0.49999997 0.5 0.5 0.5 0.5 0.5 0.49999997 0.5 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.25 0.25 0.25 0.24999999 0.25 0.25 0.25 0.25 0.25 0.24999999 0.25 0.25 0.75 0.75 0.75 0.75 0.74999994 0.75 0.75 0.75 0.75 0.75 0.74999994 0.75 0.5 0.5 0.5 0.5 0.5 0.5
+ 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.16666667 0.16666669 0.16666667 0.16666669 0.16666667 0.16666667 0.49999997 0.5 0.5 0.50000006 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333333 0.8333334 0.8333334 0.16666667 0.16666669 0.16666667 0.16666669 0.16666667 0.16666667 0.49999997 0.5 0.5 0.50000006 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333333 0.8333334 0.8333334 0.16666667 0.16666669 0.16666667 0.16666669 0.16666667 0.16666667 0.49999997 0.5 0.5 0.50000006 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333333 0.8333334 0.8333334 0.25 0.25 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 0.75 0.75 0.25 0.25 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 0.75 0.75 0.5 0.5 0.5 0.5 0.5 0.5
+ 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.65000004 0.45961943 0.91923887 0.37527767 1.1258893 0.7211102 0.65000004 0.45961943 0.91923887 0.37527767 1.1258893 0.7211102 0.65000004 0.45961943 0.91923887 0.37527767 1.1258893 0.7211102 0.6500001 0.4596194 0.9192388 0.37527764 1.1258893 0.7211102 0.6500001 0.4596194 0.9192388 0.37527764 1.1258893 0.7211102 0.6500001 0.4596194 0.9192388 0.37527764 1.1258893 0.7211102 0.6500001 0.45961946 0.9192388 0.3752777 1.1258893 0.72111017 0.6500001 0.45961946 0.9192388 0.3752777 1.1258893 0.72111017 0.6500001 0.45961946 0.9192388 0.3752777 1.1258893 0.72111017 0.8000001 0.5656855 1.131371 0.4618802 1.3857099 0.8717798 0.8000001 0.5656855 1.131371 0.4618802 1.3857099 0.8717798 0.80000013 0.5656855 1.131371 0.4618802 1.3857098 0.87177986 0.80000013 0.5656855 1.131371 0.4618802 1.3857098 0.87177986 0.95000005 0.6717515 1.343503 0.5484828 1.6455305 0.97467947
+ 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.6499999 0.9192387 0.45961934 1.1258329 0.3752589 0.7211102 0.64999986 0.9192387 0.4596193 1.125833 0.37525892 0.7211102 0.64999986 0.91923875 0.45961928 1.1258328 0.37525892 0.72111017 0.6499999 0.9192387 0.45961934 1.1258329 0.3752589 0.7211102 0.64999986 0.9192387 0.4596193 1.125833 0.37525892 0.7211102 0.64999986 0.91923875 0.45961928 1.1258328 0.37525892 0.72111017 0.6499999 0.9192387 0.45961934 1.1258329 0.3752589 0.7211102 0.64999986 0.9192387 0.4596193 1.125833 0.37525892 0.7211102 0.64999986 0.91923875 0.45961928 1.1258328 0.37525892 0.72111017 0.79999995 1.1313708 0.5656854 1.3856406 0.46185714 0.8717798 0.79999995 1.1313708 0.56568533 1.3856406 0.46185708 0.87177986 0.79999995 1.1313708 0.5656854 1.3856406 0.46185714 0.8717798 0.79999995 1.1313708 0.56568533 1.3856406 0.46185708 0.87177986 0.9499999 1.3435028 0.6717514 1.6454482 0.54845536 0.97467947
+
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/dataset.txt b/rknn-toolkit2/examples/functions/hybrid_quant/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..28fe4c85a2ec80cd5001d18a993621bda1f2d0d6
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/dataset.txt
@@ -0,0 +1 @@
+./dog_bike_car_300x300.jpg
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/dog_bike_car_300x300.jpg b/rknn-toolkit2/examples/functions/hybrid_quant/dog_bike_car_300x300.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..66de31b966efb351e587b68a62b27bfa229f563e
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/dog_bike_car_300x300.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dfbb9952a01786f18adc1aea83915556d3762292d790e223bf73aa9a006b337d
+size 50078
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/result_truth.jpg b/rknn-toolkit2/examples/functions/hybrid_quant/result_truth.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..07f81949262f9da550bc4850e0295de894c59191
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/result_truth.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:79bd5cb0c6fa01cbf8c3b003f095377014cfca3d15cf714d0f1720cfb15c5d5c
+size 48869
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/ssd_mobilenet_v2.pb b/rknn-toolkit2/examples/functions/hybrid_quant/ssd_mobilenet_v2.pb
new file mode 100755
index 0000000000000000000000000000000000000000..0b2a1bacddfd1344020aab892d2c0030d2521c8d
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/ssd_mobilenet_v2.pb
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a8d8a89d695842e60d8c6d144181100555563e21acf2fa1e8f561fec5c3c6ad
+size 69688296
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/ssd_post_process.py b/rknn-toolkit2/examples/functions/hybrid_quant/ssd_post_process.py
new file mode 100755
index 0000000000000000000000000000000000000000..c0036f65a4cf21ad762027c21a977855999dd588
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/ssd_post_process.py
@@ -0,0 +1,184 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+import math
+import PIL.Image as Image
+import PIL.ImageDraw as ImageDraw
+import PIL.ImageFont as ImageFont
+import re
+
+np.set_printoptions(threshold=np.inf)
+
+CLASSES = ('__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat',
+ 'traffic light', 'fire hydrant', '???', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse',
+ 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', '???', 'backpack', 'umbrella', '???', '???',
+ 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat',
+ 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', '???', 'wine glass', 'cup', 'fork',
+ 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
+ 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', '???', 'dining table', '???', '???', 'toilet',
+ '???', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink',
+ 'refrigerator', '???', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush')
+
+NUM_CLS = 91
+
+CONF_THRESH = 0.5
+NMS_THRESH = 0.45
+TOP_BOXES = 100
+max_boxes_to_draw = 100
+
+Y_SCALE = 10.0
+X_SCALE = 10.0
+H_SCALE = 5.0
+W_SCALE = 5.0
+
+prior_file = './box_priors.txt'
+
+box_priors_ = []
+fp = open(prior_file, 'r')
+ls = fp.readlines()
+for s in ls:
+ aList = re.findall('([-+]?\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?', s)
+ for ss in aList:
+ aNum = float((ss[0] + ss[2]))
+ box_priors_.append(aNum)
+fp.close()
+
+
+def softmax(x):
+ return np.exp(x) / np.sum(np.exp(x), axis=0)
+
+
+def IntersectBBox(box1, box2):
+ if box1[0] > box2[2] or box1[2] < box2[0] or box1[1] > box2[3] or box1[3] < box2[1]:
+ return 0
+ else:
+ area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])
+ area2 = (box2[2] - box2[0]) * (box2[3] - box2[1])
+
+ xx1 = max(box1[0], box2[0])
+ yy1 = max(box1[1], box2[1])
+ xx2 = min(box1[2], box2[2])
+ yy2 = min(box1[3], box2[3])
+
+ w = max(0, xx2 - xx1)
+ h = max(0, yy2 - yy1)
+
+ ovr = w * h / (area1 + area2 - w * h + 0.000001)
+ return ovr
+
+
+def ssd_post_process(conf_data, loc_data, imgpath, output_dir='.'):
+ prior_num = int(len(loc_data) / 4) # num prior boxes
+
+ prior_bboxes = np.array(box_priors_)
+ prior_bboxes = prior_bboxes.reshape(4, prior_num)
+
+ conf_data = conf_data.reshape(-1, NUM_CLS)
+
+ for i in range(prior_num):
+ conf_data[i] = softmax(conf_data[i])
+
+ idx_class_conf = []
+ bboxes = []
+
+ # conf
+ for prior_idx in range(0, prior_num):
+ conf_data[prior_idx][0] = 0
+ max_val = np.max(conf_data[prior_idx])
+ max_idx = np.argmax(conf_data[prior_idx])
+ if max_val > CONF_THRESH:
+ idx_class_conf.append([prior_idx, max_idx, max_val])
+
+ idx_class_conf_sorted = sorted(idx_class_conf, key=lambda x: x[2], reverse=True)
+
+ idx_class_conf = idx_class_conf_sorted[:min(TOP_BOXES, len(idx_class_conf_sorted))]
+
+ # boxes
+ for i in range(0, prior_num):
+ bbox_center_x = loc_data[4 * i + 1] / X_SCALE * prior_bboxes[3][i] + prior_bboxes[1][i]
+ bbox_center_y = loc_data[4 * i + 0] / Y_SCALE * prior_bboxes[2][i] + prior_bboxes[0][i]
+ bbox_w = math.exp(loc_data[4 * i + 3] / W_SCALE) * prior_bboxes[3][i]
+ bbox_h = math.exp(loc_data[4 * i + 2] / H_SCALE) * prior_bboxes[2][i]
+
+ tmp = []
+ tmp.append(max(min(bbox_center_x - bbox_w / 2., 1), 0))
+ tmp.append(max(min(bbox_center_y - bbox_h / 2., 1), 0))
+ tmp.append(max(min(bbox_center_x + bbox_w / 2., 1), 0))
+ tmp.append(max(min(bbox_center_y + bbox_h / 2., 1), 0))
+ bboxes.append(tmp)
+
+ # nms
+ cur_class_num = 0
+ idx_class_conf_ = []
+ for i in range(0, len(idx_class_conf)):
+ keep = True
+ k = 0
+ while k < cur_class_num:
+ if keep:
+ ovr = IntersectBBox(bboxes[idx_class_conf[i][0]], bboxes[idx_class_conf_[k][0]])
+ if idx_class_conf_[k][1] == idx_class_conf[i][1] and ovr > NMS_THRESH:
+ keep = False
+ break
+ k += 1
+ else:
+ break
+ if keep:
+ idx_class_conf_.append(idx_class_conf[i])
+ cur_class_num += 1
+ idx_class_conf_ = idx_class_conf_[:min(len(idx_class_conf_), max_boxes_to_draw)]
+
+ box_class_score = []
+
+ for i in range(0, len(idx_class_conf_)):
+ bboxes[idx_class_conf_[i][0]].append(idx_class_conf_[i][1])
+ bboxes[idx_class_conf_[i][0]].append(idx_class_conf_[i][2])
+ box_class_score.append(bboxes[idx_class_conf_[i][0]])
+
+ img = cv2.imread(imgpath)
+ img_pil = Image.fromarray(img)
+ draw = ImageDraw.Draw(img_pil)
+
+ font = ImageFont.load_default()
+
+ name = imgpath.split("/")[-1][:-4]
+
+ if len(box_class_score) != 0:
+ print("{:^12} {:^12} {}".format('class', 'score', 'xmin, ymin, xmax, ymax'))
+ print('-' * 50)
+
+ for i in range(0, len(box_class_score)):
+ x1 = box_class_score[i][0] * img.shape[1]
+ y1 = box_class_score[i][1] * img.shape[0]
+ x2 = box_class_score[i][2] * img.shape[1]
+ y2 = box_class_score[i][3] * img.shape[0]
+
+ # draw rect
+ color = (0, int(box_class_score[i][4] / 20.0 * 255), 255)
+ draw.line([(x1, y1), (x1, y2), (x2, y2),
+ (x2, y1), (x1, y1)], width=2, fill=color)
+
+ display_str = CLASSES[box_class_score[i][4]] + ":" + str('%.2f' % box_class_score[i][5])
+ try:
+ display_str_height = np.ceil((1 + 2 * 0.05) * font.getbbox(display_str)[3]) + 1
+ except:
+ display_str_height = np.ceil((1 + 2 * 0.05) * font.getsize(display_str)[1]) + 1
+
+ if y1 > display_str_height:
+ text_bottom = y1
+ else:
+ text_bottom = y1 + display_str_height
+
+ try:
+ _, _, text_width, text_height = font.getbbox(display_str)
+ except:
+ text_width, text_height = font.getsize(display_str)
+ margin = np.ceil(0.05 * text_height)
+ draw.rectangle([(x1, text_bottom - text_height - 2 * margin), (x1 + text_width, text_bottom)], fill=color)
+ draw.text((x1 + margin, text_bottom - text_height - margin), display_str, fill='black', font=font)
+
+ print("{:^12} {:^12.3f} [{:>4}, {:>4}, {:>4}, {:>4}]".format(CLASSES[box_class_score[i][4]], box_class_score[i][5],
+ int(x1), int(y1), int(x2), int(y2)))
+
+ np.copyto(img, np.array(img_pil))
+ cv2.imwrite("result.jpg", img)
+ print('Save results to result.jpg!')
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/step1.py b/rknn-toolkit2/examples/functions/hybrid_quant/step1.py
new file mode 100755
index 0000000000000000000000000000000000000000..d395d9a94c68df0f76f23e799e09aaf98393f4ac
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/step1.py
@@ -0,0 +1,60 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[127.5, 127.5, 127.5], std_values=[127.5, 127.5, 127.5], target_platform='rk3566')
+ print('done')
+
+ # Load model (from https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md ssd_mobilenet_v2_coco)
+ print('--> Loading model')
+ ret = rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v2.pb',
+ inputs=['FeatureExtractor/MobilenetV2/MobilenetV2/input'],
+ outputs=['concat_1', 'concat'],
+ input_size_list=[[1,300,300,3]])
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> hybrid_quantization_step1')
+ ret = rknn.hybrid_quantization_step1(dataset='./dataset.txt', proposal=False)
+ if ret != 0:
+ print('hybrid_quantization_step1 failed!')
+ exit(ret)
+ print('done')
+
+ # Tips
+ print("======================================== Tips ==========================================================")
+ print("After the execution of 'rknn.hybrid_quantization_step1' is completed, a configuration file")
+ print("'ssd_mobilenet_v2.quantization.cfg' will be generated. This configuration file is used to set the layer")
+ print("that needs to be hybrid quantized. ")
+ print("")
+ print("Users can set the 'output name' and 'data type' of the layer that needs to be configured into")
+ print("'custom_quantize_layers', as follows:")
+ print("")
+ print(" custom_quantize_layers:")
+ print(" FeatureExtractor/MobilenetV2/expanded_conv/depthwise/BatchNorm/batchnorm/add_1:0: float16")
+ print(" FeatureExtractor/MobilenetV2/expanded_conv/depthwise/Relu6:0: float16")
+ print("")
+ print("Currently supported data types are: 'int8', 'int16', 'float16'.")
+ print("")
+ print("In addition, the configuration file will automatically fill in some layers that may cause a decrease in")
+ print("accuracy (may be inaccurate). Users can consider these layers together with the results of accuracy")
+ print("analysis to obtain the layers that actually cause a decrease in accuracy and set them into")
+ print("'custom_quantize_layers'.")
+ print("")
+ print("After modifying 'ssd_mobilenet_v2.quantization.cfg', you can continue to execute 'step2.py' to complete")
+ print("the model conversion.")
+ print("========================================================================================================")
+ print("")
+
+ rknn.release()
+
diff --git a/rknn-toolkit2/examples/functions/hybrid_quant/step2.py b/rknn-toolkit2/examples/functions/hybrid_quant/step2.py
new file mode 100755
index 0000000000000000000000000000000000000000..920f7096298d480a0d087069ea04179210764dac
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/hybrid_quant/step2.py
@@ -0,0 +1,59 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+from ssd_post_process import ssd_post_process
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Build model
+ print('--> hybrid_quantization_step2')
+ ret = rknn.hybrid_quantization_step2(model_input='./ssd_mobilenet_v2.model',
+ data_input='./ssd_mobilenet_v2.data',
+ model_quantization_cfg='./ssd_mobilenet_v2.quantization.cfg')
+ if ret != 0:
+ print('hybrid_quantization_step2 failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./ssd_mobilenet_v2.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Accuracy analysis
+ print('--> Accuracy analysis')
+ ret = rknn.accuracy_analysis(inputs=['./dog_bike_car_300x300.jpg'], output_dir=None)
+ if ret != 0:
+ print('Accuracy analysis failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_bike_car_300x300.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ print('done')
+
+ np.save('./functions_hybrid_quant_0.npy', outputs[0])
+ np.save('./functions_hybrid_quant_1.npy', outputs[1])
+ ssd_post_process(np.reshape(outputs[0], (-1)), np.reshape(outputs[1], (-1)), './dog_bike_car_300x300.jpg', './')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/model_pruning/README.md b/rknn-toolkit2/examples/functions/model_pruning/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0d49aa734fc0ebe315e68a081e9b8e56f0650de2
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/model_pruning/README.md
@@ -0,0 +1,38 @@
+# How to use model_pruning function
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/shicai/MobileNet-Caffe
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+- The 'model_pruning' parameter of 'rknn.config' is set to True.
+- When verbose is set to True, the following similar prompts will appear during the build process,
+indicating that model pruning has been effective for this model. (This means that approximately 6.9%
+of the weights have been removed, resulting in a saving of about 13.4% of the computational workload.)
+Please note that not all models can be pruned, only models with sparse weights are likely to benefit from pruning.
+ ```
+ I model_pruning ...
+ I model_pruning results:
+ I -1.12144 MB (-6.9%)
+ I -0.00016 T (-13.4%)
+ I model_pruning done.
+ ```
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[155] score:0.734863 class:"Shih-Tzu"
+[154] score:0.180176 class:"Pekinese, Pekingese, Peke"
+[204] score:0.051605 class:"Lhasa, Lhasa apso"
+[284] score:0.004234 class:"Siamese cat, Siamese"
+[252] score:0.003918 class:"affenpinscher, monkey pinscher, monkey dog"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/model_pruning/dataset.txt b/rknn-toolkit2/examples/functions/model_pruning/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..aa215cb4c2477015b3288893d9afb73f0e7905a3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/model_pruning/dataset.txt
@@ -0,0 +1 @@
+dog_224x224.jpg
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/model_pruning/dog_224x224.jpg b/rknn-toolkit2/examples/functions/model_pruning/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/model_pruning/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/functions/model_pruning/labels.txt b/rknn-toolkit2/examples/functions/model_pruning/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/model_pruning/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/model_pruning/mobilenet.caffemodel b/rknn-toolkit2/examples/functions/model_pruning/mobilenet.caffemodel
new file mode 100755
index 0000000000000000000000000000000000000000..9c7c739d6dfc2d33c870a2f3d19a46c80fcc24a8
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/model_pruning/mobilenet.caffemodel
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d6edcd3dbd1356f2f19dd220c362c2ba8f44233a9b6c12ca6d0351cb0c446b6
+size 17027058
diff --git a/rknn-toolkit2/examples/functions/model_pruning/mobilenet_deploy.prototxt b/rknn-toolkit2/examples/functions/model_pruning/mobilenet_deploy.prototxt
new file mode 100755
index 0000000000000000000000000000000000000000..f8c906f5175e0d591998342341656f4ed9c5ab20
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/model_pruning/mobilenet_deploy.prototxt
@@ -0,0 +1,1996 @@
+name: "MOBILENET"
+# transform_param {
+# scale: 0.017
+# mirror: false
+# crop_size: 224
+# mean_value: [103.94,116.78,123.68]
+# }
+input: "data"
+input_dim: 1
+input_dim: 3
+input_dim: 224
+input_dim: 224
+layer {
+ name: "conv1"
+ type: "Convolution"
+ bottom: "data"
+ top: "conv1"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv1/bn"
+ type: "BatchNorm"
+ bottom: "conv1"
+ top: "conv1"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv1/scale"
+ type: "Scale"
+ bottom: "conv1"
+ top: "conv1"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu1"
+ type: "ReLU"
+ bottom: "conv1"
+ top: "conv1"
+}
+layer {
+ name: "conv2_1/dw"
+ type: "Convolution"
+ bottom: "conv1"
+ top: "conv2_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 32
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 32
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_1/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv2_1/dw"
+ top: "conv2_1/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_1/dw/scale"
+ type: "Scale"
+ bottom: "conv2_1/dw"
+ top: "conv2_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu2_1/dw"
+ type: "ReLU"
+ bottom: "conv2_1/dw"
+ top: "conv2_1/dw"
+}
+layer {
+ name: "conv2_1/sep"
+ type: "Convolution"
+ bottom: "conv2_1/dw"
+ top: "conv2_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 64
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_1/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv2_1/sep"
+ top: "conv2_1/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_1/sep/scale"
+ type: "Scale"
+ bottom: "conv2_1/sep"
+ top: "conv2_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu2_1/sep"
+ type: "ReLU"
+ bottom: "conv2_1/sep"
+ top: "conv2_1/sep"
+}
+layer {
+ name: "conv2_2/dw"
+ type: "Convolution"
+ bottom: "conv2_1/sep"
+ top: "conv2_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 64
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 64
+ engine: CAFFE
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_2/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv2_2/dw"
+ top: "conv2_2/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_2/dw/scale"
+ type: "Scale"
+ bottom: "conv2_2/dw"
+ top: "conv2_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu2_2/dw"
+ type: "ReLU"
+ bottom: "conv2_2/dw"
+ top: "conv2_2/dw"
+}
+layer {
+ name: "conv2_2/sep"
+ type: "Convolution"
+ bottom: "conv2_2/dw"
+ top: "conv2_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 128
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv2_2/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv2_2/sep"
+ top: "conv2_2/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv2_2/sep/scale"
+ type: "Scale"
+ bottom: "conv2_2/sep"
+ top: "conv2_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu2_2/sep"
+ type: "ReLU"
+ bottom: "conv2_2/sep"
+ top: "conv2_2/sep"
+}
+layer {
+ name: "conv3_1/dw"
+ type: "Convolution"
+ bottom: "conv2_2/sep"
+ top: "conv3_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 128
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 128
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_1/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv3_1/dw"
+ top: "conv3_1/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_1/dw/scale"
+ type: "Scale"
+ bottom: "conv3_1/dw"
+ top: "conv3_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu3_1/dw"
+ type: "ReLU"
+ bottom: "conv3_1/dw"
+ top: "conv3_1/dw"
+}
+layer {
+ name: "conv3_1/sep"
+ type: "Convolution"
+ bottom: "conv3_1/dw"
+ top: "conv3_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 128
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_1/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv3_1/sep"
+ top: "conv3_1/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_1/sep/scale"
+ type: "Scale"
+ bottom: "conv3_1/sep"
+ top: "conv3_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu3_1/sep"
+ type: "ReLU"
+ bottom: "conv3_1/sep"
+ top: "conv3_1/sep"
+}
+layer {
+ name: "conv3_2/dw"
+ type: "Convolution"
+ bottom: "conv3_1/sep"
+ top: "conv3_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 128
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 128
+ engine: CAFFE
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_2/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv3_2/dw"
+ top: "conv3_2/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_2/dw/scale"
+ type: "Scale"
+ bottom: "conv3_2/dw"
+ top: "conv3_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu3_2/dw"
+ type: "ReLU"
+ bottom: "conv3_2/dw"
+ top: "conv3_2/dw"
+}
+layer {
+ name: "conv3_2/sep"
+ type: "Convolution"
+ bottom: "conv3_2/dw"
+ top: "conv3_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 256
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv3_2/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv3_2/sep"
+ top: "conv3_2/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv3_2/sep/scale"
+ type: "Scale"
+ bottom: "conv3_2/sep"
+ top: "conv3_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu3_2/sep"
+ type: "ReLU"
+ bottom: "conv3_2/sep"
+ top: "conv3_2/sep"
+}
+layer {
+ name: "conv4_1/dw"
+ type: "Convolution"
+ bottom: "conv3_2/sep"
+ top: "conv4_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 256
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 256
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_1/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv4_1/dw"
+ top: "conv4_1/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_1/dw/scale"
+ type: "Scale"
+ bottom: "conv4_1/dw"
+ top: "conv4_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu4_1/dw"
+ type: "ReLU"
+ bottom: "conv4_1/dw"
+ top: "conv4_1/dw"
+}
+layer {
+ name: "conv4_1/sep"
+ type: "Convolution"
+ bottom: "conv4_1/dw"
+ top: "conv4_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 256
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_1/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv4_1/sep"
+ top: "conv4_1/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_1/sep/scale"
+ type: "Scale"
+ bottom: "conv4_1/sep"
+ top: "conv4_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu4_1/sep"
+ type: "ReLU"
+ bottom: "conv4_1/sep"
+ top: "conv4_1/sep"
+}
+layer {
+ name: "conv4_2/dw"
+ type: "Convolution"
+ bottom: "conv4_1/sep"
+ top: "conv4_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 256
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 256
+ engine: CAFFE
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_2/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv4_2/dw"
+ top: "conv4_2/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_2/dw/scale"
+ type: "Scale"
+ bottom: "conv4_2/dw"
+ top: "conv4_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu4_2/dw"
+ type: "ReLU"
+ bottom: "conv4_2/dw"
+ top: "conv4_2/dw"
+}
+layer {
+ name: "conv4_2/sep"
+ type: "Convolution"
+ bottom: "conv4_2/dw"
+ top: "conv4_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv4_2/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv4_2/sep"
+ top: "conv4_2/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv4_2/sep/scale"
+ type: "Scale"
+ bottom: "conv4_2/sep"
+ top: "conv4_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu4_2/sep"
+ type: "ReLU"
+ bottom: "conv4_2/sep"
+ top: "conv4_2/sep"
+}
+layer {
+ name: "conv5_1/dw"
+ type: "Convolution"
+ bottom: "conv4_2/sep"
+ top: "conv5_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 512
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_1/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv5_1/dw"
+ top: "conv5_1/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_1/dw/scale"
+ type: "Scale"
+ bottom: "conv5_1/dw"
+ top: "conv5_1/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_1/dw"
+ type: "ReLU"
+ bottom: "conv5_1/dw"
+ top: "conv5_1/dw"
+}
+layer {
+ name: "conv5_1/sep"
+ type: "Convolution"
+ bottom: "conv5_1/dw"
+ top: "conv5_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_1/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv5_1/sep"
+ top: "conv5_1/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_1/sep/scale"
+ type: "Scale"
+ bottom: "conv5_1/sep"
+ top: "conv5_1/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_1/sep"
+ type: "ReLU"
+ bottom: "conv5_1/sep"
+ top: "conv5_1/sep"
+}
+layer {
+ name: "conv5_2/dw"
+ type: "Convolution"
+ bottom: "conv5_1/sep"
+ top: "conv5_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 512
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_2/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv5_2/dw"
+ top: "conv5_2/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_2/dw/scale"
+ type: "Scale"
+ bottom: "conv5_2/dw"
+ top: "conv5_2/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_2/dw"
+ type: "ReLU"
+ bottom: "conv5_2/dw"
+ top: "conv5_2/dw"
+}
+layer {
+ name: "conv5_2/sep"
+ type: "Convolution"
+ bottom: "conv5_2/dw"
+ top: "conv5_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_2/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv5_2/sep"
+ top: "conv5_2/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_2/sep/scale"
+ type: "Scale"
+ bottom: "conv5_2/sep"
+ top: "conv5_2/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_2/sep"
+ type: "ReLU"
+ bottom: "conv5_2/sep"
+ top: "conv5_2/sep"
+}
+layer {
+ name: "conv5_3/dw"
+ type: "Convolution"
+ bottom: "conv5_2/sep"
+ top: "conv5_3/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 512
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_3/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv5_3/dw"
+ top: "conv5_3/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_3/dw/scale"
+ type: "Scale"
+ bottom: "conv5_3/dw"
+ top: "conv5_3/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_3/dw"
+ type: "ReLU"
+ bottom: "conv5_3/dw"
+ top: "conv5_3/dw"
+}
+layer {
+ name: "conv5_3/sep"
+ type: "Convolution"
+ bottom: "conv5_3/dw"
+ top: "conv5_3/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_3/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv5_3/sep"
+ top: "conv5_3/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_3/sep/scale"
+ type: "Scale"
+ bottom: "conv5_3/sep"
+ top: "conv5_3/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_3/sep"
+ type: "ReLU"
+ bottom: "conv5_3/sep"
+ top: "conv5_3/sep"
+}
+layer {
+ name: "conv5_4/dw"
+ type: "Convolution"
+ bottom: "conv5_3/sep"
+ top: "conv5_4/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 512
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_4/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv5_4/dw"
+ top: "conv5_4/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_4/dw/scale"
+ type: "Scale"
+ bottom: "conv5_4/dw"
+ top: "conv5_4/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_4/dw"
+ type: "ReLU"
+ bottom: "conv5_4/dw"
+ top: "conv5_4/dw"
+}
+layer {
+ name: "conv5_4/sep"
+ type: "Convolution"
+ bottom: "conv5_4/dw"
+ top: "conv5_4/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_4/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv5_4/sep"
+ top: "conv5_4/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_4/sep/scale"
+ type: "Scale"
+ bottom: "conv5_4/sep"
+ top: "conv5_4/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_4/sep"
+ type: "ReLU"
+ bottom: "conv5_4/sep"
+ top: "conv5_4/sep"
+}
+layer {
+ name: "conv5_5/dw"
+ type: "Convolution"
+ bottom: "conv5_4/sep"
+ top: "conv5_5/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 512
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_5/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv5_5/dw"
+ top: "conv5_5/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_5/dw/scale"
+ type: "Scale"
+ bottom: "conv5_5/dw"
+ top: "conv5_5/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_5/dw"
+ type: "ReLU"
+ bottom: "conv5_5/dw"
+ top: "conv5_5/dw"
+}
+layer {
+ name: "conv5_5/sep"
+ type: "Convolution"
+ bottom: "conv5_5/dw"
+ top: "conv5_5/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_5/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv5_5/sep"
+ top: "conv5_5/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_5/sep/scale"
+ type: "Scale"
+ bottom: "conv5_5/sep"
+ top: "conv5_5/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_5/sep"
+ type: "ReLU"
+ bottom: "conv5_5/sep"
+ top: "conv5_5/sep"
+}
+layer {
+ name: "conv5_6/dw"
+ type: "Convolution"
+ bottom: "conv5_5/sep"
+ top: "conv5_6/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 512
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 512
+ engine: CAFFE
+ stride: 2
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_6/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv5_6/dw"
+ top: "conv5_6/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_6/dw/scale"
+ type: "Scale"
+ bottom: "conv5_6/dw"
+ top: "conv5_6/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_6/dw"
+ type: "ReLU"
+ bottom: "conv5_6/dw"
+ top: "conv5_6/dw"
+}
+layer {
+ name: "conv5_6/sep"
+ type: "Convolution"
+ bottom: "conv5_6/dw"
+ top: "conv5_6/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 1024
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv5_6/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv5_6/sep"
+ top: "conv5_6/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv5_6/sep/scale"
+ type: "Scale"
+ bottom: "conv5_6/sep"
+ top: "conv5_6/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu5_6/sep"
+ type: "ReLU"
+ bottom: "conv5_6/sep"
+ top: "conv5_6/sep"
+}
+layer {
+ name: "conv6/dw"
+ type: "Convolution"
+ bottom: "conv5_6/sep"
+ top: "conv6/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 1024
+ bias_term: false
+ pad: 1
+ kernel_size: 3
+ group: 1024
+ engine: CAFFE
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6/dw/bn"
+ type: "BatchNorm"
+ bottom: "conv6/dw"
+ top: "conv6/dw"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6/dw/scale"
+ type: "Scale"
+ bottom: "conv6/dw"
+ top: "conv6/dw"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu6/dw"
+ type: "ReLU"
+ bottom: "conv6/dw"
+ top: "conv6/dw"
+}
+layer {
+ name: "conv6/sep"
+ type: "Convolution"
+ bottom: "conv6/dw"
+ top: "conv6/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ convolution_param {
+ num_output: 1024
+ bias_term: false
+ pad: 0
+ kernel_size: 1
+ stride: 1
+ weight_filler {
+ type: "msra"
+ }
+ }
+}
+layer {
+ name: "conv6/sep/bn"
+ type: "BatchNorm"
+ bottom: "conv6/sep"
+ top: "conv6/sep"
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 0
+ decay_mult: 0
+ }
+ batch_norm_param {
+ use_global_stats: true
+ eps: 1e-5
+ }
+}
+layer {
+ name: "conv6/sep/scale"
+ type: "Scale"
+ bottom: "conv6/sep"
+ top: "conv6/sep"
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ param {
+ lr_mult: 1
+ decay_mult: 0
+ }
+ scale_param {
+ filler {
+ value: 1
+ }
+ bias_term: true
+ bias_filler {
+ value: 0
+ }
+ }
+}
+layer {
+ name: "relu6/sep"
+ type: "ReLU"
+ bottom: "conv6/sep"
+ top: "conv6/sep"
+}
+layer {
+ name: "pool6"
+ type: "Pooling"
+ bottom: "conv6/sep"
+ top: "pool6"
+ pooling_param {
+ pool: AVE
+ global_pooling: true
+ }
+}
+layer {
+ name: "fc7"
+ type: "Convolution"
+ bottom: "pool6"
+ top: "fc7"
+ param {
+ lr_mult: 1
+ decay_mult: 1
+ }
+ param {
+ lr_mult: 2
+ decay_mult: 0
+ }
+ convolution_param {
+ num_output: 1000
+ kernel_size: 1
+ weight_filler {
+ type: "msra"
+ }
+ bias_filler {
+ type: "constant"
+ value: 0
+ }
+ }
+}
+layer {
+ name: "prob"
+ type: "Softmax"
+ bottom: "fc7"
+ top: "prob"
+}
diff --git a/rknn-toolkit2/examples/functions/model_pruning/test.py b/rknn-toolkit2/examples/functions/model_pruning/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..05e97c8cc203358c501faf0d475f341149f6f4de
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/model_pruning/test.py
@@ -0,0 +1,94 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ np.save('./functions_model_pruning_0.npy', outputs[0])
+ output = outputs[0].reshape(-1)
+ print(output.shape)
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'mobilenet\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82], quant_img_RGB2BGR=True, target_platform='rk3566', model_pruning=True)
+ print('done')
+
+ # Load model (from https://github.com/shicai/MobileNet-Caffe)
+ print('--> Loading model')
+ ret = rknn.load_caffe(model='./mobilenet_deploy.prototxt',
+ blobs='./mobilenet.caffemodel')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Tips
+ print('')
+ print('======================================== Tips =================================================================')
+ print('When verbose = True, the following similar prompts will appear during the build process, indicating that ')
+ print('model pruning has been effective for this model:')
+ print('')
+ print(' I model_pruning ...')
+ print(' I model_pruning results:')
+ print(' I Weight: -1.12145 MB (-6.9%)')
+ print(' I GFLOPs: -0.15563 (-13.4%)')
+ print(' I model_pruning done.')
+ print('')
+ print('The meaning of this prompts is that 6.9% of the weight was removed, and approximately 13.4% of computility were saved.')
+ print('Please note that not all models can be pruned, only models with sparse weights can be pruned.')
+ print('===============================================================================================================')
+ print('')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/multi_batch/README.md b/rknn-toolkit2/examples/functions/multi_batch/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2fa3d15b72e6b6f94794009688397e66cf8d6c07
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_batch/README.md
@@ -0,0 +1,45 @@
+# How to expand batch for use multi-batch function
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/shicai/MobileNet-Caffe
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, pl'ease add the 'target' parameter in 'rknn.init_runtime'.
+- You can modify the 'rknn_batch_size' parameter of 'rknn.build' to achieve the effect of multi-batch.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results for every batch, as follows:
+```
+----- Batch 0: TOP 5 -----
+[155] score:0.993652 class:"Shih-Tzu"
+[154] score:0.002834 class:"Pekinese, Pekingese, Peke"
+[204] score:0.002172 class:"Lhasa, Lhasa apso"
+[283] score:0.000571 class:"Persian cat"
+[284] score:0.000133 class:"Siamese cat, Siamese"
+----- Batch 1: TOP 5 -----
+[ 1] score:0.598145 class:"goldfish, Carassius auratus"
+[794] score:0.062073 class:"shower curtain"
+[996] score:0.062073 class:"hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa"
+[927] score:0.041687 class:"trifle"
+[115] score:0.027863 class:"sea slug, nudibranch"
+----- Batch 2: TOP 5 -----
+[812] score:0.999023 class:"space shuttle"
+[148] score:0.000293 class:"killer whale, killer, orca, grampus, sea wolf, Orcinus orca"
+[517] score:0.000132 class:"crane"
+[833] score:0.000132 class:"submarine, pigboat, sub, U-boat"
+[525] score:0.000089 class:"dam, dike, dyke"
+----- Batch 3: TOP 5 -----
+[155] score:0.993652 class:"Shih-Tzu"
+[154] score:0.002834 class:"Pekinese, Pekingese, Peke"
+[204] score:0.002172 class:"Lhasa, Lhasa apso"
+[283] score:0.000571 class:"Persian cat"
+[284] score:0.000133 class:"Siamese cat, Siamese"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/multi_batch/dataset.txt b/rknn-toolkit2/examples/functions/multi_batch/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c5e5388f906f59488dc7f0b25dd87a81048b468e
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_batch/dataset.txt
@@ -0,0 +1,3 @@
+dog_224x224.jpg
+goldfish_224x224.jpg
+space_shuttle_224.jpg
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/multi_batch/dog_224x224.jpg b/rknn-toolkit2/examples/functions/multi_batch/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_batch/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/functions/multi_batch/goldfish_224x224.jpg b/rknn-toolkit2/examples/functions/multi_batch/goldfish_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cc48ae72082b079027ce726a8e0fabfa65f538e0
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_batch/goldfish_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d3001d36c811f8d3c5cccbed3db00932eccac235e037b96dd303b95f13b61b1d
+size 61574
diff --git a/rknn-toolkit2/examples/functions/multi_batch/labels.txt b/rknn-toolkit2/examples/functions/multi_batch/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_batch/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/multi_batch/space_shuttle_224.jpg b/rknn-toolkit2/examples/functions/multi_batch/space_shuttle_224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..412a855c379648d80d5b4267ba1da58188cdee1c
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_batch/space_shuttle_224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a827cc9060d15cd34b1b5ac512f4d6d8366416a5874a2075951991cbacef78d4
+size 23472
diff --git a/rknn-toolkit2/examples/functions/multi_batch/test.py b/rknn-toolkit2/examples/functions/multi_batch/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..16095262bcad4e72d73dfb089478e6cac2d16a70
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_batch/test.py
@@ -0,0 +1,88 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ output_ = outputs[0].reshape((-1, 1000))
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ for batch, output in enumerate(output_):
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ top5_str = '----- Batch {}: TOP 5 -----\n'.format(batch)
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+def show_perfs(perfs):
+ perfs = 'perfs: {}\n'.format(outputs)
+ print(perfs)
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82], quant_img_RGB2BGR=True, target_platform='rk3566')
+ print('done')
+
+ # Load model (from https://github.com/shicai/MobileNet-Caffe)
+ print('--> Loading model')
+ ret = rknn.load_caffe(model='../../caffe/mobilenet_v2/mobilenet_v2_deploy.prototxt',
+ blobs='../../caffe/mobilenet_v2/mobilenet_v2.caffemodel')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt', rknn_batch_size=4)
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet_v2.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img_0 = cv2.imread('./dog_224x224.jpg')
+ img_0 = np.expand_dims(img_0, 0)
+ img_1 = cv2.imread('./goldfish_224x224.jpg')
+ img_1 = np.expand_dims(img_1, 0)
+ img_2 = cv2.imread('./space_shuttle_224.jpg')
+ img_2 = np.expand_dims(img_2, 0)
+
+ img = np.concatenate((img_0, img_1, img_2, img_0), axis=0) # the inputs data need to be merged together using np.concatenate.
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./functions_multi_batch_0.npy', outputs[0])
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/multi_input/README.md b/rknn-toolkit2/examples/functions/multi_input/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..963ae18a32465ae8e7f47656003c956fdff8f4f2
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/README.md
@@ -0,0 +1,28 @@
+# How to convert multi-input model
+
+## Model Source
+The model used in this example come from 'gen_pb.py'.
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+- The model has multiple inputs, so multiple input files need to be set in 'dataset.txt':
+ ```
+ dog_128x128.jpg input2.npy input3.npy dog_128x128_gray.png
+ ```
+- The 'inputs' and 'data_format' of 'rknn.inference' should also be set accordingly, as follows:
+ ```
+ rknn.inference(inputs=[img, input2, input3, img_gray], data_format=['nhwc', 'nchw', 'nchw', 'nhwc'])
+ ```
+## Expected Results
+This example will print outputs of inference, as follows:
+```
+inference result: [array([[ -3.1041162, -7.0548096, -5.361655 , ..., -14.391811 ,
+ -15.802773 , -11.287695 ]], dtype=float32)]
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/multi_input/conv_128.pb b/rknn-toolkit2/examples/functions/multi_input/conv_128.pb
new file mode 100755
index 0000000000000000000000000000000000000000..7a3f29afbe768e276e5ff80e542ca36a7f5b0702
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/conv_128.pb
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13d078cc43b0253d921f21e3137e9f3b9f387188fb885c41dd29dbce12586366
+size 2108
diff --git a/rknn-toolkit2/examples/functions/multi_input/dataset.txt b/rknn-toolkit2/examples/functions/multi_input/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3c075bb8435f15ca6afbf215f05d27614bd21ddf
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/dataset.txt
@@ -0,0 +1 @@
+dog_128x128.jpg input2.npy input3.npy dog_128x128_gray.png
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/multi_input/dog_128x128.jpg b/rknn-toolkit2/examples/functions/multi_input/dog_128x128.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1a2082b0f7c2dcb8766428644394fcbf5ca394e4
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/dog_128x128.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:edeaf387d7eef6e1b6338dc8bc4afead542f049cbd58b11aafc4ccd1e566f690
+size 7954
diff --git a/rknn-toolkit2/examples/functions/multi_input/dog_128x128_gray.png b/rknn-toolkit2/examples/functions/multi_input/dog_128x128_gray.png
new file mode 100755
index 0000000000000000000000000000000000000000..59a042379fd8c12b6e542c6298710f6881165cfb
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/dog_128x128_gray.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7241f3f207764b8d8e06299859fefd63b96a8567cf155ef08b8480204c70908
+size 7046
diff --git a/rknn-toolkit2/examples/functions/multi_input/gen_pb.py b/rknn-toolkit2/examples/functions/multi_input/gen_pb.py
new file mode 100755
index 0000000000000000000000000000000000000000..392f31dcf1e3b6dc4528b9fa5225cef66fa5c3f2
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/gen_pb.py
@@ -0,0 +1,112 @@
+#encoding=utf-8
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import tensorflow as tf
+import numpy as np
+from numpy import random as nr
+import cv2
+from tensorflow.python.framework import graph_util
+
+tf.logging.set_verbosity(tf.logging.INFO)
+
+
+
+outputShape={1:[8,8,3]}
+
+
+
+
+def newtork(x1, x2, x3, x4):
+ #weights = tf.get_variable("w1",shape=[3,3,3,1],initializer=tf.truncated_normal_initializer(stddev=1.0))
+ weights1 = tf.Variable(tf.ones([3, 3, 3, 1]))
+ conv1 = tf.nn.conv2d(x1,weights1,strides=[1, 1, 1, 1],padding='SAME')
+
+ weights2 = tf.Variable(tf.ones([3, 3, 3, 1]))
+ conv2 = tf.nn.conv2d(x2, weights2, strides=[1, 1, 1, 1], padding='SAME')
+
+ weights3 = tf.Variable(tf.ones([3, 3, 3, 1]))
+ conv3 = tf.nn.conv2d(x3, weights3, strides=[1, 1, 1, 1], padding='SAME')
+
+ weights4 = tf.Variable(tf.ones([3, 3, 1, 1]))
+ conv4 = tf.nn.conv2d(x4, weights4, strides=[1, 1, 1, 1], padding='SAME')
+
+ add2 = tf.add(conv1, conv2)
+ add3 = tf.add(add2, conv3)
+ add4 = tf.add(add3, conv4, name="output")
+ return add4
+
+
+def train():
+ inWidth = 128
+ inHeight = 128
+ inChannel = 3
+
+ img = cv2.imread('./dog_128x128.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+
+ img = img.astype(np.float32)
+ img[:,:,:] -= [127.5, 127.5, 127.5]
+ img[:,:,:] /= 128.0
+ img = img.reshape((1,128,128,3))
+
+ img_gray = cv2.imread('./dog_128x128_gray.png', cv2.IMREAD_GRAYSCALE)
+ img_gray = img_gray.astype(np.float32)
+ img_gray[:, :] -= [127.5]
+ img_gray[:, :] /= 128.0
+ img_gray = img_gray.reshape((1, 128, 128, 1))
+
+ x1 = tf.placeholder(tf.float32,[1,inHeight,inWidth,inChannel],name="input1")
+ my_input1 = img
+
+ x2 = tf.placeholder(tf.float32, [1, inHeight, inWidth, 3], name="input2")
+ #my_input2 = np.ones([1, inHeight, inWidth, 5],dtype=np.float)
+ #my_input2 = np.zeros([1, inHeight, inWidth, 5], dtype=np.float)
+ my_input2 = nr.rand(1, inHeight, inWidth, 3) # np.ones([1, inHeight, inWidth, 5],dtype=np.float)
+ my_input2 = (my_input2 - 0.5) * 2
+ np.save('input2.npy', my_input2)
+
+ x3 = tf.placeholder(tf.float32, [1, inHeight, inWidth, 3], name="input3")
+ #my_input3 = np.ones([1, inHeight, inWidth, 4], dtype=np.float)
+ #my_input3 = np.zeros([1, inHeight, inWidth, 4], dtype=np.float)
+ my_input3 = nr.rand(1, inHeight, inWidth, 3)
+ my_input3 = (my_input3 - 0.5) * 2
+ np.save('input3.npy', my_input3)
+
+ x4 = tf.placeholder(tf.float32,[1,inHeight,inWidth,1],name="input4")
+ my_input4 = img_gray
+
+ layerNum = 1
+ outShape=outputShape[layerNum]
+ y = tf.placeholder(tf.float32,[1,outShape[2],outShape[1],outShape[0]])
+ my_label = np.ones([1,outShape[2],outShape[1],outShape[0]],dtype=np.float)
+
+
+ predict_res = newtork(x1, x2, x3, x4)
+
+ #set loss func
+ # loss = tf.reduce_mean(predict_res-y)
+ # train_step = tf.train.AdamOptimizer(0.0005).minimize(loss)
+
+ #iterate for 10
+ pb_name='conv_128.pb'
+ with tf.Session() as sess:
+ sess.run(tf.global_variables_initializer())
+ print(sess.run(predict_res,feed_dict={x1:my_input1, x2:my_input2, x3:my_input3, x4:my_input4, y:my_label}))
+
+ print(predict_res)
+ print([n.name for n in tf.get_default_graph().as_graph_def().node])
+
+ constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def, output_node_names=['output'])
+ with tf.gfile.GFile(pb_name, mode='wb') as f:
+ f.write(constant_graph.SerializeToString())
+
+ tf.train.Saver().save(sess,"model.ckpt")
+
+def main():
+ train()
+
+if __name__=="__main__":
+ main()
+
diff --git a/rknn-toolkit2/examples/functions/multi_input/input2.npy b/rknn-toolkit2/examples/functions/multi_input/input2.npy
new file mode 100755
index 0000000000000000000000000000000000000000..368ff524179885f8cefa4d4c99247c68290fb275
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/input2.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a94af61a4f76910d7c281880bd2a88fcb939362797816ec7945df4a87f687e31
+size 393344
diff --git a/rknn-toolkit2/examples/functions/multi_input/input3.npy b/rknn-toolkit2/examples/functions/multi_input/input3.npy
new file mode 100755
index 0000000000000000000000000000000000000000..acd84eebb23f05351fa4fb428cb91df55ac7b17f
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/input3.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:885a1e0f9d7e50cb32d843dd38e7868ae4a4eff7985b2338e322ce21f24d6f2d
+size 393344
diff --git a/rknn-toolkit2/examples/functions/multi_input/test.py b/rknn-toolkit2/examples/functions/multi_input/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..213f75915a1c85325ed1524d4be2351144762ad7
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/multi_input/test.py
@@ -0,0 +1,72 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[[127.5, 127.5, 127.5], [0, 0, 0], [0, 0, 0], [127.5]],
+ std_values=[[128, 128, 128], [1, 1, 1], [1, 1, 1], [128]],
+ target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_tensorflow(tf_pb='./conv_128.pb',
+ inputs=['input1', 'input2', 'input3', 'input4'],
+ outputs=['output'],
+ input_size_list=[[1, 128, 128, 3], [1, 128, 128, 3], [1, 128, 128, 3], [1, 128, 128, 1]])
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./conv_128.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_128x128.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # nhwc
+ img = np.expand_dims(img, 0)
+
+ img_gray = cv2.imread('./dog_128x128_gray.png', cv2.IMREAD_GRAYSCALE)
+ img_gray = np.expand_dims(img_gray, -1) # nhwc
+
+ input2 = np.load('input2.npy').astype('float32') # nchw
+
+ input3 = np.load('input3.npy').astype('float32') # nchw
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img, input2, input3, img_gray], data_format=['nhwc', 'nchw', 'nchw', 'nhwc'])
+ np.save('./functions_multi_input_0.npy', outputs[0])
+ print('done')
+ outputs[0] = outputs[0].reshape((1, -1))
+ print('inference result: ', outputs)
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/npu_device_test/README.md b/rknn-toolkit2/examples/functions/npu_device_test/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a54a65af84f3567f69d5c6e39f5961cbbb7f64c6
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/npu_device_test/README.md
@@ -0,0 +1,116 @@
+# How to connect the board for debugging
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/shicai/MobileNet-Caffe
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'rk3588', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- The 'target' parameter in 'rknn.init_runtime'/'rknn.accuracy_analysis' is set to 'rk3588'.
+- The 'perf_debug' and 'eval_mem' parameter of 'rknn.config' is set to True.
+
+## Expected Results
+This example would output the following results:
+- Output encrypted rknn model: mobilenet_v2.crypt.rknn
+- List devices that connect to host
+ ```
+ *************************
+ all device(s) with adb mode:
+ rk3588
+ *************************
+ ```
+- Print version
+ ```
+ ==============================================
+ RKNN VERSION:
+ API: librknn_api version: 1.5.2 (8babfea build@2023-08-25T02:31:12)
+ DRV: rknn_server: 1.5.2 (8babfea build@2023-08-25T10:30:12)
+ rknnrt: 1.5.3b9 (ba0047cf1@2023-10-11T19:55:40)
+ ==============================================
+ ```
+- Print perf information
+ ```
+ ===================================================================================================================
+ Performance
+ #### The performance result is just for debugging, ####
+ #### may worse than actual performance! ####
+ ===================================================================================================================
+ ID OpType DataType Target InputShape OutputShape DDR Cycles NPU Cycles Total Cycles Time(us) MacUsage(%) WorkLoad(0/1/2)-ImproveTherical Task Number Lut Number RW(KB) FullName
+ 1 InputOperator UINT8 CPU \ (1,3,224,224) 0 0 0 7 \ 0.0%/0.0%/0.0% - Up:0.0% 0 0 147.00 InputOperator:data
+ 2 ConvRelu UINT8 NPU (1,3,224,224),(32,3,3,3),(32) (1,32,112,112) 94150 10584 94150 428 2.47 100.0%/0.0%/0.0% - Up:0.0% 3 0 543.75
+
+ ...
+
+ Total Operator Elapsed Time(us): 14147
+ Total Memory RW Amount(MB): 0
+ Operator Time-Consuming Ranking:
+ OpType Call Number CPU Time(us) NPU Time(us) Total Time(us) Time Ratio(%)
+ ConvRelu 36 0 9338 9338 66.0
+ ConvAdd 10 0 2155 2155 15.23
+ Conv 9 0 2097 2097 14.82
+ exDataConvert 1 0 269 269 1.9
+ Softmax 1 0 248 248 1.75
+ OutputOperator 1 33 0 33 0.23
+ InputOperator 1 7 0 7 0.04
+
+ ===================================================================================================================
+ ```
+- Print memory information
+ ```
+ ======================================================
+ Memory Profile Info Dump
+ ======================================================
+ NPU model memory detail(bytes):
+ Total Weight Memory: 3.53 MiB
+ Total Internal Tensor Memory: 1.67 MiB
+ Total Memory: 5.66 MiB
+
+ INFO: When evaluating memory usage, we need consider
+ the size of model, current model size is: 4.08 MiB
+ ======================================================
+ ```
+- Print the TOP5 labels and corresponding scores of the test image classification results
+ ```
+ -----TOP 5-----
+ [155] score:0.936523 class:"Shih-Tzu"
+ [154] score:0.002403 class:"Pekinese, Pekingese, Peke"
+ [204] score:0.002403 class:"Lhasa, Lhasa apso"
+ [283] score:0.000658 class:"Persian cat"
+ [284] score:0.000229 class:"Siamese cat, Siamese"
+ ```
+- Output the results of the accuracy analysis:
+ ```
+ # simulator_error: calculate the output error of each layer of the simulator (compared to the 'golden' value).
+ # entire: output error of each layer between 'golden' and 'simulator', these errors will accumulate layer by layer.
+ # single: single-layer output error between 'golden' and 'simulator', can better reflect the single-layer accuracy of the simulator.
+ # runtime_error: calculate the output error of each layer of the runtime.
+ # entire: output error of each layer between 'golden' and 'runtime', these errors will accumulate layer by layer.
+ # single_sim: single-layer output error between 'simulator' and 'runtime', can better reflect the single-layer accuracy of runtime.
+
+ layer_name simulator_error runtime_error
+ entire single entire single_sim
+ cos euc cos euc cos euc cos euc
+ -----------------------------------------------------------------------------------------------------------------
+ [Input] data 1.00000 | 0.0 1.00000 | 0.0
+ [exDataConvert] data_int8 0.99999 | 2.0599 0.99999 | 2.0599
+ [Conv] conv1/scale
+ [Relu] relu1 0.99997 | 4.7572 0.99997 | 4.7572 0.99996 | 5.2593 0.99994 | 6.3273
+ [Conv] conv2_1/expand/scale
+ [Relu] relu2_1/expand 0.99993 | 6.8963 0.99994 | 6.3494 0.99992 | 7.1564 1.00000 | 1.0312
+ [Conv] conv2_1/dwise/scale
+ [Relu] relu2_1/dwise 0.99949 | 22.639 0.99958 | 20.480 0.99949 | 22.665 1.00000 | 1.4891
+
+ ...
+
+ [Relu] relu6_4 0.97924 | 64.548 0.99989 | 4.7152 0.98151 | 60.976 1.00000 | 0.2890
+ [Conv] pool6 0.98537 | 4.8954 0.99997 | 0.2290 0.98766 | 4.5005 1.00000 | 0.0
+ [Conv] fc7 0.98323 | 21.938 0.99990 | 1.6519 0.98521 | 20.567 1.00000 | 0.0
+ [exDataConvert] fc7__float16 0.98323 | 21.939 0.99996 | 1.1046 0.98521 | 20.570 1.00000 | 0.0512
+ [Softmax] prob 1.00000 | 0.0010 1.00000 | 0.0001 1.00000 | 0.0569 1.00000 | 0.0566
+ ```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/npu_device_test/dataset.txt b/rknn-toolkit2/examples/functions/npu_device_test/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9078c68db586a0251bdd41282d67f4d256b3abc3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/npu_device_test/dataset.txt
@@ -0,0 +1 @@
+dog_224x224.jpg
diff --git a/rknn-toolkit2/examples/functions/npu_device_test/dog_224x224.jpg b/rknn-toolkit2/examples/functions/npu_device_test/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/npu_device_test/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/functions/npu_device_test/labels.txt b/rknn-toolkit2/examples/functions/npu_device_test/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/npu_device_test/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/npu_device_test/test.py b/rknn-toolkit2/examples/functions/npu_device_test/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..859bfcdd0229e6ef7be940babaaff4f0a2a0f111
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/npu_device_test/test.py
@@ -0,0 +1,118 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ output = outputs[0].reshape(-1)
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'mobilenet_v2\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[103.94, 116.78, 123.68], std_values=[58.82, 58.82, 58.82],
+ quant_img_RGB2BGR=True, target_platform='rk3588')
+ print('done')
+
+ # Load model (from https://github.com/shicai/MobileNet-Caffe)
+ print('--> Loading model')
+ ret = rknn.load_caffe(model='./../../caffe/mobilenet_v2/mobilenet_v2_deploy.prototxt',
+ blobs='./../../caffe/mobilenet_v2/mobilenet_v2.caffemodel')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Accuracy analysis
+ print('--> Accuracy analysis')
+ ret = rknn.accuracy_analysis(inputs=['./dog_224x224.jpg'], output_dir='./snapshot', target='rk3588')
+ if ret != 0:
+ print('Accuracy analysis failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet_v2.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Export encrypted RKNN model
+ print('--> Export encrypted rknn model')
+ ret = rknn.export_encrypted_rknn_model('./mobilenet_v2.rknn', None, 3)
+
+ rknn.release()
+
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # load rknn model
+ print('--> Load rknn model')
+ ret = rknn.load_rknn('./mobilenet_v2.rknn')
+ if ret != 0:
+ print('Load rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = np.expand_dims(img, 0)
+
+ print('--> List devices')
+ rknn.list_devices()
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime(target='rk3588', perf_debug=True, eval_mem=True)
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ print('--> Get sdk version')
+ sdk_version = rknn.get_sdk_version()
+ print(sdk_version)
+
+ # eval perf
+ print('--> Eval perf')
+ rknn.eval_perf()
+
+ # eval perf
+ print('--> Eval memory')
+ rknn.eval_memory()
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./functions_npu_device_test_0.npy', outputs[0])
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/functions/onnx_edit/README.md b/rknn-toolkit2/examples/functions/onnx_edit/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0b3103f5c0418219d38719c9cfb2459a42673630
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/onnx_edit/README.md
@@ -0,0 +1,72 @@
+# ONNX Edit
+
+rknn.utils.onnx_edit 是 RKNN-Toolkit2 的内置工具,用于调整onnx模型。对于一些具有特殊结构的onnx模型,调整后的模型在转换为RKNN后可以获得更好的推理性能。接口定义如下:
+
+```python
+from rknn.utils import onnx_edit
+onnx_edit(model: str,
+ export_path : str,
+ inputs_transform : dict = {},
+ outputs_transform : dict = {},
+ dataset: Optional[str] = None):
+"""
+ Args:
+ model: The path to the onnx file.
+ export_path: The path to the exported onnx file.
+ inputs_transform: The dictionary of inputs transform equation. Feed like {'input_0': 'a,b,c->1,ab,1,c', ...}
+ outputs_transform: The dictionary of outputs transform equation. Feed like {'output_2': 'a,b,c,->1,b,1,ac', ...}
+ dataset: The path to the dataset file. dataset file should meet rknn.build requirements. If given, transform of inputs will also apply on dataset and generate a new dataset on the same folder of export_path.
+"""
+```
+
+目前可以使用以下功能:
+
+- 对输入和输出进行 reshape 和 transpose 调整(目前暂不支持对动态shape进行修改)
+
+
+
+## 1.对输入和输出进行 reshape 和 transpose 调整
+
+如果某些模型在转换为 RKNN 之前,能够对输入输出进行特定的 reshape 和 transpose 操作,则可以利用 RKNN-Toolkit2 的图优化功能,使最终的 RKNN 模型更加简洁,具有更好的推理性能。例如,通过执行该目录下的 test.py 脚本,可以比较 onnx_edit 前后生成的 RKNN 模型的差异。
+
+变换方程书写规则:
+
+- 必须有两部分字符组成,并用 '->' 隔开,左边为原始字符shape,右边是变换后字符shape
+- 字符shape里面的符号只允许是 [a-z] 或 ',' '1',除了'1'以外,不支持其他数字shape字符,原因是相同数字字符无法判断 transpose 的前后关系
+- 字符[a-z]认为是独立的,没有顺序关系,即 `a,b->b,a` 和 `c,a->a,c` 表示的是一样的变换
+- 等式左边的原始字符shape,被 ',' 分隔成 n 份,n的个数必须和模型的维度匹配,例如原始输入定义是 [32,4,1,64], 输入字符可以是 'a,b,c,d' 或 'a,b,1,d'
+- 原始字符shape的每一个符号,除了'1',都必须存在于变换后字符shape,例如 `a,1,c,d->ac,d,1` 是有效的,`a,1,c,d->ac,1` 是无效的,缺了 'd'
+- 变换后字符shape,允许插入任意个数的 '1',达成扩维效果,例如 `a,b,c-> a,1,cb,1,1`
+- 原始字符shape,允许用多个字母以及赋值公式来表示对shape进行拆分,例如原始输入定义是 [32,4,1,64],`ab,c,d,qk[a=2,k=8]->aq,cd,1,kb`,表示将 32 拆分成 2x16,将 64 拆分成 8x8,再进行 transpose, reshape 操作。其中 '[ ]' 的部分称为赋值公式,多个公式用 ',' 符号分隔。此外,允许拆分中的某个字符没有赋值,此时会自动推断对应的shape,例如赋值公式只给了 a=2,已知在模型中 ab=32,则自动推断出 b=16;若推断出的shape异常会直接报错,比如 ab=32,若赋值 a=5,则 b=6.4,又维度必须是整数,此时会抛出异常错误。
+- 支持动态shape
+- 若对动态shape的维度进行拆分,拆分后的维度只允许其中一个是动态shape,假设有3维度动态shape,则 `ab,c,d->a,c,d,b` 是无效的,因为a,b均是未知维度,无法进行拆分操作。而 `ab,c,d[a=2]->a,c,d,b` 是有效的
+- 允许对动态shape的维度进行赋值,此时对应维度会变成固定shape。假设有3维度动态shape,`ab,c,d[a=2]->a,c,d,b` 会使变更后的维度为 [2,c,d,b],第一维为2,而 `ab,c,d[a=2,b=5,c=7,d=11]->a,c,d,b` 会使变更后的维度变成 [2,7,11,5]
+
+
+
+以下是一些变换例子:
+
+```shell
+1. Reshape 3D to 4D: 'a,b,c->a,b,1,c' or 'a,b,c->a,1,b,c'
+2. Reshape 5D to 4D: 'a,b,c,d,e->ab,c,d,e' or 'a,b,c,d,e->a,bce,1,1'
+3. Transpose(0,3,1,2): 'a,b,c,d->a,d,b,c'
+4. Transpose, merge dim: 'a,b,c,d->ad,c,b' or 'a,b,c,d->d,acb,1'
+5. Split dim, transpose, merge dim: 'a,bc,de,f[b=2,d=4]->ab,fe,dc,1', # 'c','e' will be auto infered
+6. Split dim, transpose, merge dim: 'a,bc,de,f[b=2,c=24,d=4]->ab,fe,dc,1', # 'bc' = 24 shuold be equal to tensor's 2nd-dim, 'e' will be auto infered
+```
+
+
+
+执行 `test.py` 后,onnx_edit 接口会打印出以下变换的公式:
+
+```shell
+I For 'k_cache.1':'a,b,c,d->1,ad,b,c'
+ Input:'k_cache.1' was reset as shape-[1, 32, 48, 1].(Origin shape is [4, 48, 1, 8])
+ Insert ops to transform [1, 32, 48, 1] to [4, 48, 1, 8]:
+ - Insert reshape op. [1, 32, 48, 1] reshape to [4, 8, 48, 1].
+ - Insert transpose op. [4, 8, 48, 1] transpose(0, 2, 3, 1) to [4, 48, 1, 8].
+I For 'k_cache':'a,b,c,d->1,ab,c,d'
+ Output:'k_cache' was reset as shape-[1, 32, 48, 1].(Origin shape is [4, 8, 48, 1])
+ Insert ops to transform [4, 8, 48, 1] to [1, 32, 48, 1]:
+ - Insert reshape op. [4, 8, 48, 1] reshape to [1, 32, 48, 1].
+```
diff --git a/rknn-toolkit2/examples/functions/onnx_edit/README_EN.md b/rknn-toolkit2/examples/functions/onnx_edit/README_EN.md
new file mode 100644
index 0000000000000000000000000000000000000000..730c98df6e762b85dd6259ef3172f3943a306ecf
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/onnx_edit/README_EN.md
@@ -0,0 +1,80 @@
+# ONNX Edit
+
+RKNN-Toolkit2 has a built-in `rknn.utils.onnx_edit` tool. Used to adjust the onnx model. For some **onnx models with special structures**, **better inference performance** can be obtained after the adjusted model is converted to RKNN. The interface is defined as follow:
+
+```python
+onnx_edit(model: str,
+ export_path : str,
+ inputs_transform : dict = {},
+ outputs_transform : dict = {},
+ dataset: Optional[str] = None):
+"""
+ Args:
+ model: The path to the onnx file.
+ export_path: The path to the exported onnx file.
+ inputs_transform: The dictionary of inputs transform equation.
+ outputs_transform: The dictionary of outputs transform equation.
+ dataset: The path to the dataset file. dataset file should meet rknn.build requirements. If given, transform of inputs will also apply on dataset and generate a new dataset on the same folder of export_path.
+"""
+```
+
+Currently the following functions are available:
+
+- Reshape and transpose adjustments to input and output(Modification of dynamic shapes is currently not supported.)
+
+
+
+## 1.Reshape and transpose adjustments to input and output
+
+If some models can reshape and transpose the input and output to a certain extent before converting to RKNN, the graph optimization function of RKNN-Toolkit2 can be used to make the final RKNN model more concise and **have better inference performance**. For example, by executing the `test.py` script in this directory, you can compare the differences in the RKNN models generated before and after onnx_edit.
+
+Transformation equation rules:
+
+- It must be composed of two parts of symbolic shape, separated by **'->'**. The **left side is the original input symbolic shape**, and the **right side is the transformed symbolic shape**.
+
+- The character in symbolic shape are only allowed to be **[a-z]** or **','** **'1'**. Other numeric shape characters are not supported except for '1'. The reason is that the same numeric characters cannot determine the context of transpose.
+
+- Characters **[a-z]** are considered independent and have no order relationship, that means, **'a,b->b,a'** and **'c,a->a,c'** represent the same transformation.
+
+- Separated by **','**, **original input symbolic shape** on the left side of the equation must **match the dimensions of the input**. For example, the original input definition is **[32,4,1,64]**, and the input characters can be **'a,b,c,d'** or **'a,b,1,d'**
+
+- **Every character** of the original input symbolic shape, except '1', **must exist in the transformed symbolic shape**. For example, **'a,1,c,d->ac,d,1'** is valid, **'a,1, c,d->ac,1'** is invalid because **'d'** is missing.
+
+- The transformed symbolic shape allows the insertion of **any number of '1'** to achieve a **dimension expansion**, such as **'a,b,c-> a,1,cb,1,1'**
+
+- The original input symbolic shape allows using **multiple characters** and **assignment formulas** to split the shape. For example, the original input definition is **[32,4,1,64]**, **'ab,c,d,qk[a=2,k =8]->aq,cd,1,kb'**, which means split 32 into 2x16, split 64 into 8x8, and then perform transpose and reshape operations. The part '[ ]' is called the assignment formula, and multiple formulas are separated by **','**. It is allowed that one character in the split is not assigned a value. At this time, the corresponding shape will be automatically inferred. For example, the assignment formula only gives **a=2**, and **ab=32** is known, **then b=16 is automatically inferred**; if the inferred shape is abnormal An error will be reported directly, for example, ab=32. If a=5 is assigned, then b=6.4. The dimension must be an integer, and an exception error will be thrown.
+
+- Support dynamic shape
+- If the dimensions of a dynamic shape are split, only one of the split dimensions is allowed to be a dynamic shape. Assuming there are 3-dimensional dynamic shapes, `ab,c,d->a,c,d,b` is invalid , because both a and b are unknown dimensions and cannot be split. And `ab,c,d[a=2]->a,c,d,b` is valid
+- Allows assignment of dimensions to dynamic shapes, in which case the corresponding dimensions will become fixed shapes. Assuming there is a 3-dimensional dynamic shape, `ab,c,d[a=2]->a,c,d,b` will cause the changed dimensions to be [2,c,d,b], and the first dimension will be 2, and `ab,c,d[a=2,b=5,c=7,d=11]->a,c,d,b` will make the dimension fixed to [2,7,11,5].
+
+
+
+
+Example of transform equation:
+
+```shell
+1. Reshape 3D to 4D: 'a,b,c->a,b,1,c' or 'a,b,c->a,1,b,c'
+2. Reshape 5D to 4D: 'a,b,c,d,e->ab,c,d,e' or 'a,b,c,d,e->a,bce,1,1'
+3. Transpose(0,3,1,2): 'a,b,c,d->a,d,b,c'
+4. Transpose, merge dim: 'a,b,c,d->ad,c,b' or 'a,b,c,d->d,acb,1'
+5. Split dim, transpose, merge dim: 'a,bc,de,f[b=2,d=4]->ab,fe,dc,1', # 'c','e' will be auto infered
+6. Split dim, transpose, merge dim: 'a,bc,de,f[b=2,c=24,d=4]->ab,fe,dc,1', # 'bc' = 24 shuold be equal to tensor's 2nd-dim, 'e' will be auto infered
+```
+
+
+
+After running `test.py`, onnx_edit interface will show transform log as follow:
+
+```shell
+I For 'k_cache.1':'a,b,c,d->1,ad,b,c'
+ Input:'k_cache.1' was reset as shape-[1, 32, 48, 1].(Origin shape is [4, 48, 1, 8])
+ Insert ops to transform [1, 32, 48, 1] to [4, 48, 1, 8]:
+ - Insert reshape op. [1, 32, 48, 1] reshape to [4, 8, 48, 1].
+ - Insert transpose op. [4, 8, 48, 1] transpose(0, 2, 3, 1) to [4, 48, 1, 8].
+I For 'k_cache':'a,b,c,d->1,ab,c,d'
+ Output:'k_cache' was reset as shape-[1, 32, 48, 1].(Origin shape is [4, 8, 48, 1])
+ Insert ops to transform [4, 8, 48, 1] to [1, 32, 48, 1]:
+ - Insert reshape op. [4, 8, 48, 1] reshape to [1, 32, 48, 1].
+```
+
diff --git a/rknn-toolkit2/examples/functions/onnx_edit/concat_block.onnx b/rknn-toolkit2/examples/functions/onnx_edit/concat_block.onnx
new file mode 100644
index 0000000000000000000000000000000000000000..98aeddccdc90c83c1ef63a2c4f63ba2c8645894a
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/onnx_edit/concat_block.onnx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4924f6503a98194a75a32adc82ac4b9ff3016ac7e6cffa798b627c9ab4a063d4
+size 1727
diff --git a/rknn-toolkit2/examples/functions/onnx_edit/concat_block_input_0.npy b/rknn-toolkit2/examples/functions/onnx_edit/concat_block_input_0.npy
new file mode 100644
index 0000000000000000000000000000000000000000..03038f8a0f7f09c311f672b6a898191b6680eba6
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/onnx_edit/concat_block_input_0.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56a2219543243e5d2222d6ae34b907c0bf492adc969ab07cbb6bcc1f539aa6e0
+size 12224
diff --git a/rknn-toolkit2/examples/functions/onnx_edit/concat_block_input_1.npy b/rknn-toolkit2/examples/functions/onnx_edit/concat_block_input_1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..04b10efcd4737a2edaf05cd1738a82527b9fb7e6
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/onnx_edit/concat_block_input_1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1682ec66e2802abefcda21edc301d0cd8336da995a301a5bd1ca6768cc931557
+size 6272
diff --git a/rknn-toolkit2/examples/functions/onnx_edit/dataset.txt b/rknn-toolkit2/examples/functions/onnx_edit/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..95d6e0afdeaf7f05be278a350f4fab5e4e413c42
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/onnx_edit/dataset.txt
@@ -0,0 +1 @@
+concat_block_input_0.npy concat_block_input_1.npy
diff --git a/rknn-toolkit2/examples/functions/onnx_edit/test.py b/rknn-toolkit2/examples/functions/onnx_edit/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..4c0ba26adfefa20554c1b9ad1ae69db357dbe77a
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/onnx_edit/test.py
@@ -0,0 +1,24 @@
+from rknn.api import RKNN
+
+# Test on the original onnx model
+rknn = RKNN(verbose=True)
+rknn.config(target_platform='rk3588')
+rknn.load_onnx("./concat_block.onnx")
+rknn.build(do_quantization=True, dataset='./dataset.txt')
+rknn.export_rknn('./concat_block.rknn')
+
+# use rknn.utils.onnx_edit to edit the onnx model
+from rknn.utils import onnx_edit
+ret = onnx_edit(model = './concat_block.onnx',
+ export_path = './concat_block_edited.onnx',
+ inputs_transform = { 'k_cache.1': 'a,b,c,d->1,ad,b,c'},
+ outputs_transform = {'k_cache': 'a,b,c,d->1,ab,c,d'},
+ dataset = './dataset.txt'
+ )
+
+# Test on the edited onnx model
+rknn = RKNN(verbose=True)
+rknn.config(target_platform='rk3588')
+rknn.load_onnx("./concat_block_edited.onnx")
+rknn.build(do_quantization=True, dataset='./dataset_for_concat_block_edited.txt')
+rknn.export_rknn('./concat_block_edited.rknn')
diff --git a/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/README.md b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..1592fc7e6068c10ddb31ae6a82d1d0d36aeaa52e
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/README.md
@@ -0,0 +1,46 @@
+# How to use MMSE quantize algorithm
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+- The 'quantized_algorithm' parameter of 'rknn.config' is set to 'mmse'. and a 'MmseQuant2' progress bar can be seen during the conversion process, indicating the execution progress of MMSE.
+
+
+## Expected Results
+This example will outputs the results of the accuracy analysis and print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+layer_name simulator_error
+ entire single
+ cos euc cos euc
+--------------------------------------------------------------------------------------------------------------------------
+[Input] input:0 1.00000 | 0.0 1.00000 | 0.0
+[exDataConvert] input:0_int8 0.99999 | 0.8565 0.99999 | 0.8565
+[Conv] MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/FusedBatchNorm:0
+[Clip] MobilenetV1/MobilenetV1/Conv2d_0/Relu6:0 0.99999 | 4.5562 0.99999 | 4.5562
+
+...
+
+[Clip] MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6:0 0.99681 | 29.000 0.99979 | 7.3940
+[Conv] MobilenetV1/Logits/AvgPool_1a/AvgPool:0 0.99903 | 1.4259 0.99997 | 0.2520
+[Conv] MobilenetV1/Logits/Conv2d_1c_1x1/BiasAdd:0 0.99914 | 4.6217 0.99992 | 1.4081
+[Reshape] MobilenetV1/Logits/SpatialSqueeze:0_int8 0.99914 | 4.6217 0.99995 | 1.0506
+[exDataConvert] MobilenetV1/Logits/SpatialSqueeze:0 0.99914 | 4.6217 0.99995 | 1.0506
+```
+```
+-----TOP 5-----
+[ 156] score:0.945152 class:"Shih-Tzu"
+[ 155] score:0.050125 class:"Pekinese, Pekingese, Peke"
+[ 205] score:0.003332 class:"Lhasa, Lhasa apso"
+[ 284] score:0.000685 class:"Persian cat"
+[ 260] score:0.000090 class:"Pomeranian"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/dataset.txt b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9078c68db586a0251bdd41282d67f4d256b3abc3
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/dataset.txt
@@ -0,0 +1 @@
+dog_224x224.jpg
diff --git a/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/dog_224x224.jpg b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/labels.txt b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dcd01c14b4635096ae295a8e81de0f65188bc1f8
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/labels.txt
@@ -0,0 +1,1001 @@
+0:__background__
+1:tench, Tinca tinca
+2:goldfish, Carassius auratus
+3:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+4:tiger shark, Galeocerdo cuvieri
+5:hammerhead, hammerhead shark
+6:electric ray, crampfish, numbfish, torpedo
+7:stingray
+8:cock
+9:hen
+10:ostrich, Struthio camelus
+11:brambling, Fringilla montifringilla
+12:goldfinch, Carduelis carduelis
+13:house finch, linnet, Carpodacus mexicanus
+14:junco, snowbird
+15:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+16:robin, American robin, Turdus migratorius
+17:bulbul
+18:jay
+19:magpie
+20:chickadee
+21:water ouzel, dipper
+22:kite
+23:bald eagle, American eagle, Haliaeetus leucocephalus
+24:vulture
+25:great grey owl, great gray owl, Strix nebulosa
+26:European fire salamander, Salamandra salamandra
+27:common newt, Triturus vulgaris
+28:eft
+29:spotted salamander, Ambystoma maculatum
+30:axolotl, mud puppy, Ambystoma mexicanum
+31:bullfrog, Rana catesbeiana
+32:tree frog, tree-frog
+33:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+34:loggerhead, loggerhead turtle, Caretta caretta
+35:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+36:mud turtle
+37:terrapin
+38:box turtle, box tortoise
+39:banded gecko
+40:common iguana, iguana, Iguana iguana
+41:American chameleon, anole, Anolis carolinensis
+42:whiptail, whiptail lizard
+43:agama
+44:frilled lizard, Chlamydosaurus kingi
+45:alligator lizard
+46:Gila monster, Heloderma suspectum
+47:green lizard, Lacerta viridis
+48:African chameleon, Chamaeleo chamaeleon
+49:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+50:African crocodile, Nile crocodile, Crocodylus niloticus
+51:American alligator, Alligator mississipiensis
+52:triceratops
+53:thunder snake, worm snake, Carphophis amoenus
+54:ringneck snake, ring-necked snake, ring snake
+55:hognose snake, puff adder, sand viper
+56:green snake, grass snake
+57:king snake, kingsnake
+58:garter snake, grass snake
+59:water snake
+60:vine snake
+61:night snake, Hypsiglena torquata
+62:boa constrictor, Constrictor constrictor
+63:rock python, rock snake, Python sebae
+64:Indian cobra, Naja naja
+65:green mamba
+66:sea snake
+67:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+68:diamondback, diamondback rattlesnake, Crotalus adamanteus
+69:sidewinder, horned rattlesnake, Crotalus cerastes
+70:trilobite
+71:harvestman, daddy longlegs, Phalangium opilio
+72:scorpion
+73:black and gold garden spider, Argiope aurantia
+74:barn spider, Araneus cavaticus
+75:garden spider, Aranea diademata
+76:black widow, Latrodectus mactans
+77:tarantula
+78:wolf spider, hunting spider
+79:tick
+80:centipede
+81:black grouse
+82:ptarmigan
+83:ruffed grouse, partridge, Bonasa umbellus
+84:prairie chicken, prairie grouse, prairie fowl
+85:peacock
+86:quail
+87:partridge
+88:African grey, African gray, Psittacus erithacus
+89:macaw
+90:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+91:lorikeet
+92:coucal
+93:bee eater
+94:hornbill
+95:hummingbird
+96:jacamar
+97:toucan
+98:drake
+99:red-breasted merganser, Mergus serrator
+100:goose
+101:black swan, Cygnus atratus
+102:tusker
+103:echidna, spiny anteater, anteater
+104:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+105:wallaby, brush kangaroo
+106:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+107:wombat
+108:jellyfish
+109:sea anemone, anemone
+110:brain coral
+111:flatworm, platyhelminth
+112:nematode, nematode worm, roundworm
+113:conch
+114:snail
+115:slug
+116:sea slug, nudibranch
+117:chiton, coat-of-mail shell, sea cradle, polyplacophore
+118:chambered nautilus, pearly nautilus, nautilus
+119:Dungeness crab, Cancer magister
+120:rock crab, Cancer irroratus
+121:fiddler crab
+122:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+123:American lobster, Northern lobster, Maine lobster, Homarus americanus
+124:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+125:crayfish, crawfish, crawdad, crawdaddy
+126:hermit crab
+127:isopod
+128:white stork, Ciconia ciconia
+129:black stork, Ciconia nigra
+130:spoonbill
+131:flamingo
+132:little blue heron, Egretta caerulea
+133:American egret, great white heron, Egretta albus
+134:bittern
+135:crane
+136:limpkin, Aramus pictus
+137:European gallinule, Porphyrio porphyrio
+138:American coot, marsh hen, mud hen, water hen, Fulica americana
+139:bustard
+140:ruddy turnstone, Arenaria interpres
+141:red-backed sandpiper, dunlin, Erolia alpina
+142:redshank, Tringa totanus
+143:dowitcher
+144:oystercatcher, oyster catcher
+145:pelican
+146:king penguin, Aptenodytes patagonica
+147:albatross, mollymawk
+148:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+149:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+150:dugong, Dugong dugon
+151:sea lion
+152:Chihuahua
+153:Japanese spaniel
+154:Maltese dog, Maltese terrier, Maltese
+155:Pekinese, Pekingese, Peke
+156:Shih-Tzu
+157:Blenheim spaniel
+158:papillon
+159:toy terrier
+160:Rhodesian ridgeback
+161:Afghan hound, Afghan
+162:basset, basset hound
+163:beagle
+164:bloodhound, sleuthhound
+165:bluetick
+166:black-and-tan coonhound
+167:Walker hound, Walker foxhound
+168:English foxhound
+169:redbone
+170:borzoi, Russian wolfhound
+171:Irish wolfhound
+172:Italian greyhound
+173:whippet
+174:Ibizan hound, Ibizan Podenco
+175:Norwegian elkhound, elkhound
+176:otterhound, otter hound
+177:Saluki, gazelle hound
+178:Scottish deerhound, deerhound
+179:Weimaraner
+180:Staffordshire bullterrier, Staffordshire bull terrier
+181:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+182:Bedlington terrier
+183:Border terrier
+184:Kerry blue terrier
+185:Irish terrier
+186:Norfolk terrier
+187:Norwich terrier
+188:Yorkshire terrier
+189:wire-haired fox terrier
+190:Lakeland terrier
+191:Sealyham terrier, Sealyham
+192:Airedale, Airedale terrier
+193:cairn, cairn terrier
+194:Australian terrier
+195:Dandie Dinmont, Dandie Dinmont terrier
+196:Boston bull, Boston terrier
+197:miniature schnauzer
+198:giant schnauzer
+199:standard schnauzer
+200:Scotch terrier, Scottish terrier, Scottie
+201:Tibetan terrier, chrysanthemum dog
+202:silky terrier, Sydney silky
+203:soft-coated wheaten terrier
+204:West Highland white terrier
+205:Lhasa, Lhasa apso
+206:flat-coated retriever
+207:curly-coated retriever
+208:golden retriever
+209:Labrador retriever
+210:Chesapeake Bay retriever
+211:German short-haired pointer
+212:vizsla, Hungarian pointer
+213:English setter
+214:Irish setter, red setter
+215:Gordon setter
+216:Brittany spaniel
+217:clumber, clumber spaniel
+218:English springer, English springer spaniel
+219:Welsh springer spaniel
+220:cocker spaniel, English cocker spaniel, cocker
+221:Sussex spaniel
+222:Irish water spaniel
+223:kuvasz
+224:schipperke
+225:groenendael
+226:malinois
+227:briard
+228:kelpie
+229:komondor
+230:Old English sheepdog, bobtail
+231:Shetland sheepdog, Shetland sheep dog, Shetland
+232:collie
+233:Border collie
+234:Bouvier des Flandres, Bouviers des Flandres
+235:Rottweiler
+236:German shepherd, German shepherd dog, German police dog, alsatian
+237:Doberman, Doberman pinscher
+238:miniature pinscher
+239:Greater Swiss Mountain dog
+240:Bernese mountain dog
+241:Appenzeller
+242:EntleBucher
+243:boxer
+244:bull mastiff
+245:Tibetan mastiff
+246:French bulldog
+247:Great Dane
+248:Saint Bernard, St Bernard
+249:Eskimo dog, husky
+250:malamute, malemute, Alaskan malamute
+251:Siberian husky
+252:dalmatian, coach dog, carriage dog
+253:affenpinscher, monkey pinscher, monkey dog
+254:basenji
+255:pug, pug-dog
+256:Leonberg
+257:Newfoundland, Newfoundland dog
+258:Great Pyrenees
+259:Samoyed, Samoyede
+260:Pomeranian
+261:chow, chow chow
+262:keeshond
+263:Brabancon griffon
+264:Pembroke, Pembroke Welsh corgi
+265:Cardigan, Cardigan Welsh corgi
+266:toy poodle
+267:miniature poodle
+268:standard poodle
+269:Mexican hairless
+270:timber wolf, grey wolf, gray wolf, Canis lupus
+271:white wolf, Arctic wolf, Canis lupus tundrarum
+272:red wolf, maned wolf, Canis rufus, Canis niger
+273:coyote, prairie wolf, brush wolf, Canis latrans
+274:dingo, warrigal, warragal, Canis dingo
+275:dhole, Cuon alpinus
+276:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+277:hyena, hyaena
+278:red fox, Vulpes vulpes
+279:kit fox, Vulpes macrotis
+280:Arctic fox, white fox, Alopex lagopus
+281:grey fox, gray fox, Urocyon cinereoargenteus
+282:tabby, tabby cat
+283:tiger cat
+284:Persian cat
+285:Siamese cat, Siamese
+286:Egyptian cat
+287:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+288:lynx, catamount
+289:leopard, Panthera pardus
+290:snow leopard, ounce, Panthera uncia
+291:jaguar, panther, Panthera onca, Felis onca
+292:lion, king of beasts, Panthera leo
+293:tiger, Panthera tigris
+294:cheetah, chetah, Acinonyx jubatus
+295:brown bear, bruin, Ursus arctos
+296:American black bear, black bear, Ursus americanus, Euarctos americanus
+297:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+298:sloth bear, Melursus ursinus, Ursus ursinus
+299:mongoose
+300:meerkat, mierkat
+301:tiger beetle
+302:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+303:ground beetle, carabid beetle
+304:long-horned beetle, longicorn, longicorn beetle
+305:leaf beetle, chrysomelid
+306:dung beetle
+307:rhinoceros beetle
+308:weevil
+309:fly
+310:bee
+311:ant, emmet, pismire
+312:grasshopper, hopper
+313:cricket
+314:walking stick, walkingstick, stick insect
+315:cockroach, roach
+316:mantis, mantid
+317:cicada, cicala
+318:leafhopper
+319:lacewing, lacewing fly
+320:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+321:damselfly
+322:admiral
+323:ringlet, ringlet butterfly
+324:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+325:cabbage butterfly
+326:sulphur butterfly, sulfur butterfly
+327:lycaenid, lycaenid butterfly
+328:starfish, sea star
+329:sea urchin
+330:sea cucumber, holothurian
+331:wood rabbit, cottontail, cottontail rabbit
+332:hare
+333:Angora, Angora rabbit
+334:hamster
+335:porcupine, hedgehog
+336:fox squirrel, eastern fox squirrel, Sciurus niger
+337:marmot
+338:beaver
+339:guinea pig, Cavia cobaya
+340:sorrel
+341:zebra
+342:hog, pig, grunter, squealer, Sus scrofa
+343:wild boar, boar, Sus scrofa
+344:warthog
+345:hippopotamus, hippo, river horse, Hippopotamus amphibius
+346:ox
+347:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+348:bison
+349:ram, tup
+350:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+351:ibex, Capra ibex
+352:hartebeest
+353:impala, Aepyceros melampus
+354:gazelle
+355:Arabian camel, dromedary, Camelus dromedarius
+356:llama
+357:weasel
+358:mink
+359:polecat, fitch, foulmart, foumart, Mustela putorius
+360:black-footed ferret, ferret, Mustela nigripes
+361:otter
+362:skunk, polecat, wood pussy
+363:badger
+364:armadillo
+365:three-toed sloth, ai, Bradypus tridactylus
+366:orangutan, orang, orangutang, Pongo pygmaeus
+367:gorilla, Gorilla gorilla
+368:chimpanzee, chimp, Pan troglodytes
+369:gibbon, Hylobates lar
+370:siamang, Hylobates syndactylus, Symphalangus syndactylus
+371:guenon, guenon monkey
+372:patas, hussar monkey, Erythrocebus patas
+373:baboon
+374:macaque
+375:langur
+376:colobus, colobus monkey
+377:proboscis monkey, Nasalis larvatus
+378:marmoset
+379:capuchin, ringtail, Cebus capucinus
+380:howler monkey, howler
+381:titi, titi monkey
+382:spider monkey, Ateles geoffroyi
+383:squirrel monkey, Saimiri sciureus
+384:Madagascar cat, ring-tailed lemur, Lemur catta
+385:indri, indris, Indri indri, Indri brevicaudatus
+386:Indian elephant, Elephas maximus
+387:African elephant, Loxodonta africana
+388:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+389:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+390:barracouta, snoek
+391:eel
+392:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+393:rock beauty, Holocanthus tricolor
+394:anemone fish
+395:sturgeon
+396:gar, garfish, garpike, billfish, Lepisosteus osseus
+397:lionfish
+398:puffer, pufferfish, blowfish, globefish
+399:abacus
+400:abaya
+401:academic gown, academic robe, judge's robe
+402:accordion, piano accordion, squeeze box
+403:acoustic guitar
+404:aircraft carrier, carrier, flattop, attack aircraft carrier
+405:airliner
+406:airship, dirigible
+407:altar
+408:ambulance
+409:amphibian, amphibious vehicle
+410:analog clock
+411:apiary, bee house
+412:apron
+413:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+414:assault rifle, assault gun
+415:backpack, back pack, knapsack, packsack, rucksack, haversack
+416:bakery, bakeshop, bakehouse
+417:balance beam, beam
+418:balloon
+419:ballpoint, ballpoint pen, ballpen, Biro
+420:Band Aid
+421:banjo
+422:bannister, banister, balustrade, balusters, handrail
+423:barbell
+424:barber chair
+425:barbershop
+426:barn
+427:barometer
+428:barrel, cask
+429:barrow, garden cart, lawn cart, wheelbarrow
+430:baseball
+431:basketball
+432:bassinet
+433:bassoon
+434:bathing cap, swimming cap
+435:bath towel
+436:bathtub, bathing tub, bath, tub
+437:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+438:beacon, lighthouse, beacon light, pharos
+439:beaker
+440:bearskin, busby, shako
+441:beer bottle
+442:beer glass
+443:bell cote, bell cot
+444:bib
+445:bicycle-built-for-two, tandem bicycle, tandem
+446:bikini, two-piece
+447:binder, ring-binder
+448:binoculars, field glasses, opera glasses
+449:birdhouse
+450:boathouse
+451:bobsled, bobsleigh, bob
+452:bolo tie, bolo, bola tie, bola
+453:bonnet, poke bonnet
+454:bookcase
+455:bookshop, bookstore, bookstall
+456:bottlecap
+457:bow
+458:bow tie, bow-tie, bowtie
+459:brass, memorial tablet, plaque
+460:brassiere, bra, bandeau
+461:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+462:breastplate, aegis, egis
+463:broom
+464:bucket, pail
+465:buckle
+466:bulletproof vest
+467:bullet train, bullet
+468:butcher shop, meat market
+469:cab, hack, taxi, taxicab
+470:caldron, cauldron
+471:candle, taper, wax light
+472:cannon
+473:canoe
+474:can opener, tin opener
+475:cardigan
+476:car mirror
+477:carousel, carrousel, merry-go-round, roundabout, whirligig
+478:carpenter's kit, tool kit
+479:carton
+480:car wheel
+481:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+482:cassette
+483:cassette player
+484:castle
+485:catamaran
+486:CD player
+487:cello, violoncello
+488:cellular telephone, cellular phone, cellphone, cell, mobile phone
+489:chain
+490:chainlink fence
+491:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+492:chain saw, chainsaw
+493:chest
+494:chiffonier, commode
+495:chime, bell, gong
+496:china cabinet, china closet
+497:Christmas stocking
+498:church, church building
+499:cinema, movie theater, movie theatre, movie house, picture palace
+500:cleaver, meat cleaver, chopper
+501:cliff dwelling
+502:cloak
+503:clog, geta, patten, sabot
+504:cocktail shaker
+505:coffee mug
+506:coffeepot
+507:coil, spiral, volute, whorl, helix
+508:combination lock
+509:computer keyboard, keypad
+510:confectionery, confectionary, candy store
+511:container ship, containership, container vessel
+512:convertible
+513:corkscrew, bottle screw
+514:cornet, horn, trumpet, trump
+515:cowboy boot
+516:cowboy hat, ten-gallon hat
+517:cradle
+518:crane
+519:crash helmet
+520:crate
+521:crib, cot
+522:Crock Pot
+523:croquet ball
+524:crutch
+525:cuirass
+526:dam, dike, dyke
+527:desk
+528:desktop computer
+529:dial telephone, dial phone
+530:diaper, nappy, napkin
+531:digital clock
+532:digital watch
+533:dining table, board
+534:dishrag, dishcloth
+535:dishwasher, dish washer, dishwashing machine
+536:disk brake, disc brake
+537:dock, dockage, docking facility
+538:dogsled, dog sled, dog sleigh
+539:dome
+540:doormat, welcome mat
+541:drilling platform, offshore rig
+542:drum, membranophone, tympan
+543:drumstick
+544:dumbbell
+545:Dutch oven
+546:electric fan, blower
+547:electric guitar
+548:electric locomotive
+549:entertainment center
+550:envelope
+551:espresso maker
+552:face powder
+553:feather boa, boa
+554:file, file cabinet, filing cabinet
+555:fireboat
+556:fire engine, fire truck
+557:fire screen, fireguard
+558:flagpole, flagstaff
+559:flute, transverse flute
+560:folding chair
+561:football helmet
+562:forklift
+563:fountain
+564:fountain pen
+565:four-poster
+566:freight car
+567:French horn, horn
+568:frying pan, frypan, skillet
+569:fur coat
+570:garbage truck, dustcart
+571:gasmask, respirator, gas helmet
+572:gas pump, gasoline pump, petrol pump, island dispenser
+573:goblet
+574:go-kart
+575:golf ball
+576:golfcart, golf cart
+577:gondola
+578:gong, tam-tam
+579:gown
+580:grand piano, grand
+581:greenhouse, nursery, glasshouse
+582:grille, radiator grille
+583:grocery store, grocery, food market, market
+584:guillotine
+585:hair slide
+586:hair spray
+587:half track
+588:hammer
+589:hamper
+590:hand blower, blow dryer, blow drier, hair dryer, hair drier
+591:hand-held computer, hand-held microcomputer
+592:handkerchief, hankie, hanky, hankey
+593:hard disc, hard disk, fixed disk
+594:harmonica, mouth organ, harp, mouth harp
+595:harp
+596:harvester, reaper
+597:hatchet
+598:holster
+599:home theater, home theatre
+600:honeycomb
+601:hook, claw
+602:hoopskirt, crinoline
+603:horizontal bar, high bar
+604:horse cart, horse-cart
+605:hourglass
+606:iPod
+607:iron, smoothing iron
+608:jack-o'-lantern
+609:jean, blue jean, denim
+610:jeep, landrover
+611:jersey, T-shirt, tee shirt
+612:jigsaw puzzle
+613:jinrikisha, ricksha, rickshaw
+614:joystick
+615:kimono
+616:knee pad
+617:knot
+618:lab coat, laboratory coat
+619:ladle
+620:lampshade, lamp shade
+621:laptop, laptop computer
+622:lawn mower, mower
+623:lens cap, lens cover
+624:letter opener, paper knife, paperknife
+625:library
+626:lifeboat
+627:lighter, light, igniter, ignitor
+628:limousine, limo
+629:liner, ocean liner
+630:lipstick, lip rouge
+631:Loafer
+632:lotion
+633:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+634:loupe, jeweler's loupe
+635:lumbermill, sawmill
+636:magnetic compass
+637:mailbag, postbag
+638:mailbox, letter box
+639:maillot
+640:maillot, tank suit
+641:manhole cover
+642:maraca
+643:marimba, xylophone
+644:mask
+645:matchstick
+646:maypole
+647:maze, labyrinth
+648:measuring cup
+649:medicine chest, medicine cabinet
+650:megalith, megalithic structure
+651:microphone, mike
+652:microwave, microwave oven
+653:military uniform
+654:milk can
+655:minibus
+656:miniskirt, mini
+657:minivan
+658:missile
+659:mitten
+660:mixing bowl
+661:mobile home, manufactured home
+662:Model T
+663:modem
+664:monastery
+665:monitor
+666:moped
+667:mortar
+668:mortarboard
+669:mosque
+670:mosquito net
+671:motor scooter, scooter
+672:mountain bike, all-terrain bike, off-roader
+673:mountain tent
+674:mouse, computer mouse
+675:mousetrap
+676:moving van
+677:muzzle
+678:nail
+679:neck brace
+680:necklace
+681:nipple
+682:notebook, notebook computer
+683:obelisk
+684:oboe, hautboy, hautbois
+685:ocarina, sweet potato
+686:odometer, hodometer, mileometer, milometer
+687:oil filter
+688:organ, pipe organ
+689:oscilloscope, scope, cathode-ray oscilloscope, CRO
+690:overskirt
+691:oxcart
+692:oxygen mask
+693:packet
+694:paddle, boat paddle
+695:paddlewheel, paddle wheel
+696:padlock
+697:paintbrush
+698:pajama, pyjama, pj's, jammies
+699:palace
+700:panpipe, pandean pipe, syrinx
+701:paper towel
+702:parachute, chute
+703:parallel bars, bars
+704:park bench
+705:parking meter
+706:passenger car, coach, carriage
+707:patio, terrace
+708:pay-phone, pay-station
+709:pedestal, plinth, footstall
+710:pencil box, pencil case
+711:pencil sharpener
+712:perfume, essence
+713:Petri dish
+714:photocopier
+715:pick, plectrum, plectron
+716:pickelhaube
+717:picket fence, paling
+718:pickup, pickup truck
+719:pier
+720:piggy bank, penny bank
+721:pill bottle
+722:pillow
+723:ping-pong ball
+724:pinwheel
+725:pirate, pirate ship
+726:pitcher, ewer
+727:plane, carpenter's plane, woodworking plane
+728:planetarium
+729:plastic bag
+730:plate rack
+731:plow, plough
+732:plunger, plumber's helper
+733:Polaroid camera, Polaroid Land camera
+734:pole
+735:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+736:poncho
+737:pool table, billiard table, snooker table
+738:pop bottle, soda bottle
+739:pot, flowerpot
+740:potter's wheel
+741:power drill
+742:prayer rug, prayer mat
+743:printer
+744:prison, prison house
+745:projectile, missile
+746:projector
+747:puck, hockey puck
+748:punching bag, punch bag, punching ball, punchball
+749:purse
+750:quill, quill pen
+751:quilt, comforter, comfort, puff
+752:racer, race car, racing car
+753:racket, racquet
+754:radiator
+755:radio, wireless
+756:radio telescope, radio reflector
+757:rain barrel
+758:recreational vehicle, RV, R.V.
+759:reel
+760:reflex camera
+761:refrigerator, icebox
+762:remote control, remote
+763:restaurant, eating house, eating place, eatery
+764:revolver, six-gun, six-shooter
+765:rifle
+766:rocking chair, rocker
+767:rotisserie
+768:rubber eraser, rubber, pencil eraser
+769:rugby ball
+770:rule, ruler
+771:running shoe
+772:safe
+773:safety pin
+774:saltshaker, salt shaker
+775:sandal
+776:sarong
+777:sax, saxophone
+778:scabbard
+779:scale, weighing machine
+780:school bus
+781:schooner
+782:scoreboard
+783:screen, CRT screen
+784:screw
+785:screwdriver
+786:seat belt, seatbelt
+787:sewing machine
+788:shield, buckler
+789:shoe shop, shoe-shop, shoe store
+790:shoji
+791:shopping basket
+792:shopping cart
+793:shovel
+794:shower cap
+795:shower curtain
+796:ski
+797:ski mask
+798:sleeping bag
+799:slide rule, slipstick
+800:sliding door
+801:slot, one-armed bandit
+802:snorkel
+803:snowmobile
+804:snowplow, snowplough
+805:soap dispenser
+806:soccer ball
+807:sock
+808:solar dish, solar collector, solar furnace
+809:sombrero
+810:soup bowl
+811:space bar
+812:space heater
+813:space shuttle
+814:spatula
+815:speedboat
+816:spider web, spider's web
+817:spindle
+818:sports car, sport car
+819:spotlight, spot
+820:stage
+821:steam locomotive
+822:steel arch bridge
+823:steel drum
+824:stethoscope
+825:stole
+826:stone wall
+827:stopwatch, stop watch
+828:stove
+829:strainer
+830:streetcar, tram, tramcar, trolley, trolley car
+831:stretcher
+832:studio couch, day bed
+833:stupa, tope
+834:submarine, pigboat, sub, U-boat
+835:suit, suit of clothes
+836:sundial
+837:sunglass
+838:sunglasses, dark glasses, shades
+839:sunscreen, sunblock, sun blocker
+840:suspension bridge
+841:swab, swob, mop
+842:sweatshirt
+843:swimming trunks, bathing trunks
+844:swing
+845:switch, electric switch, electrical switch
+846:syringe
+847:table lamp
+848:tank, army tank, armored combat vehicle, armoured combat vehicle
+849:tape player
+850:teapot
+851:teddy, teddy bear
+852:television, television system
+853:tennis ball
+854:thatch, thatched roof
+855:theater curtain, theatre curtain
+856:thimble
+857:thresher, thrasher, threshing machine
+858:throne
+859:tile roof
+860:toaster
+861:tobacco shop, tobacconist shop, tobacconist
+862:toilet seat
+863:torch
+864:totem pole
+865:tow truck, tow car, wrecker
+866:toyshop
+867:tractor
+868:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+869:tray
+870:trench coat
+871:tricycle, trike, velocipede
+872:trimaran
+873:tripod
+874:triumphal arch
+875:trolleybus, trolley coach, trackless trolley
+876:trombone
+877:tub, vat
+878:turnstile
+879:typewriter keyboard
+880:umbrella
+881:unicycle, monocycle
+882:upright, upright piano
+883:vacuum, vacuum cleaner
+884:vase
+885:vault
+886:velvet
+887:vending machine
+888:vestment
+889:viaduct
+890:violin, fiddle
+891:volleyball
+892:waffle iron
+893:wall clock
+894:wallet, billfold, notecase, pocketbook
+895:wardrobe, closet, press
+896:warplane, military plane
+897:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+898:washer, automatic washer, washing machine
+899:water bottle
+900:water jug
+901:water tower
+902:whiskey jug
+903:whistle
+904:wig
+905:window screen
+906:window shade
+907:Windsor tie
+908:wine bottle
+909:wing
+910:wok
+911:wooden spoon
+912:wool, woolen, woollen
+913:worm fence, snake fence, snake-rail fence, Virginia fence
+914:wreck
+915:yawl
+916:yurt
+917:web site, website, internet site, site
+918:comic book
+919:crossword puzzle, crossword
+920:street sign
+921:traffic light, traffic signal, stoplight
+922:book jacket, dust cover, dust jacket, dust wrapper
+923:menu
+924:plate
+925:guacamole
+926:consomme
+927:hot pot, hotpot
+928:trifle
+929:ice cream, icecream
+930:ice lolly, lolly, lollipop, popsicle
+931:French loaf
+932:bagel, beigel
+933:pretzel
+934:cheeseburger
+935:hotdog, hot dog, red hot
+936:mashed potato
+937:head cabbage
+938:broccoli
+939:cauliflower
+940:zucchini, courgette
+941:spaghetti squash
+942:acorn squash
+943:butternut squash
+944:cucumber, cuke
+945:artichoke, globe artichoke
+946:bell pepper
+947:cardoon
+948:mushroom
+949:Granny Smith
+950:strawberry
+951:orange
+952:lemon
+953:fig
+954:pineapple, ananas
+955:banana
+956:jackfruit, jak, jack
+957:custard apple
+958:pomegranate
+959:hay
+960:carbonara
+961:chocolate sauce, chocolate syrup
+962:dough
+963:meat loaf, meatloaf
+964:pizza, pizza pie
+965:potpie
+966:burrito
+967:red wine
+968:espresso
+969:cup
+970:eggnog
+971:alp
+972:bubble
+973:cliff, drop, drop-off
+974:coral reef
+975:geyser
+976:lakeside, lakeshore
+977:promontory, headland, head, foreland
+978:sandbar, sand bar
+979:seashore, coast, seacoast, sea-coast
+980:valley, vale
+981:volcano
+982:ballplayer, baseball player
+983:groom, bridegroom
+984:scuba diver
+985:rapeseed
+986:daisy
+987:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+988:corn
+989:acorn
+990:hip, rose hip, rosehip
+991:buckeye, horse chestnut, conker
+992:coral fungus
+993:agaric
+994:gyromitra
+995:stinkhorn, carrion fungus
+996:earthstar
+997:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+998:bolete
+999:ear, spike, capitulum
+1000:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/mobilenet_v1_1.0_224_frozen.pb b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/mobilenet_v1_1.0_224_frozen.pb
new file mode 100755
index 0000000000000000000000000000000000000000..94d69ce1e82a5ecd874943e1c7f9d928a9836e8b
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/mobilenet_v1_1.0_224_frozen.pb
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3ed7703cccb55920e37a95ece9b2cbead4ffcd8081f2cfa9309060590aa2239c
+size 17085200
diff --git a/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/test.py b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..aea809a31711b392cd2ba97dd0cd378054d6adf1
--- /dev/null
+++ b/rknn-toolkit2/examples/functions/quantize_algorithm_mmse/test.py
@@ -0,0 +1,83 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ output = outputs[0][0]
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'mobilenet_v1\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>4d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+def softmax(outputs):
+ outputs[0] = np.exp(outputs[0])/np.sum(np.exp(outputs[0]))
+ return outputs
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[128, 128, 128], std_values=[128, 128, 128], target_platform='rk3566',
+ quantized_method='channel', quantized_algorithm='mmse')
+ print('done')
+
+ # Load model (from https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md)
+ print('--> Loading model')
+ ret = rknn.load_tensorflow(tf_pb='mobilenet_v1_1.0_224_frozen.pb',
+ inputs=['input'],
+ input_size_list=[[1, 224, 224, 3]],
+ outputs=['MobilenetV1/Logits/SpatialSqueeze'])
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Accuracy analysis
+ print('--> Accuracy analysis')
+ ret = rknn.accuracy_analysis(inputs=['dog_224x224.jpg'], output_dir=None)
+ if ret != 0:
+ print('Accuracy analysis failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./functions_quantize_algorithm_mmse_0.npy', outputs[0])
+ show_outputs(softmax(outputs))
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/onnx/resnet50v2/README.md b/rknn-toolkit2/examples/onnx/resnet50v2/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..12f0056f917a2495d3a6c55c6da4b056ad3aec45
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/resnet50v2/README.md
@@ -0,0 +1,30 @@
+# ONNX ResNet50 V2
+
+## Model Source
+The model used in this example come from:
+https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.onnx
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[155] score:0.742885 class:"Shih-Tzu"
+[154] score:0.225878 class:"Pekinese, Pekingese, Peke"
+[262] score:0.015507 class:"Brabancon griffon"
+[152] score:0.003501 class:"Japanese spaniel"
+[254] score:0.002801 class:"pug, pug-dog"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/onnx/resnet50v2/dataset.txt b/rknn-toolkit2/examples/onnx/resnet50v2/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9078c68db586a0251bdd41282d67f4d256b3abc3
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/resnet50v2/dataset.txt
@@ -0,0 +1 @@
+dog_224x224.jpg
diff --git a/rknn-toolkit2/examples/onnx/resnet50v2/dog_224x224.jpg b/rknn-toolkit2/examples/onnx/resnet50v2/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/resnet50v2/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/onnx/resnet50v2/labels.txt b/rknn-toolkit2/examples/onnx/resnet50v2/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/resnet50v2/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/onnx/resnet50v2/model_config.yml b/rknn-toolkit2/examples/onnx/resnet50v2/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..467849e501b335c89e3ad3a45168d064a439f596
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/resnet50v2/model_config.yml
@@ -0,0 +1,13 @@
+models:
+ name: resnet50v2 # 模型输出名称
+ platform: onnx # 原始模型使用的框架
+ model_file_path: ./resnet50v2.onnx #原模型路径
+ quantize: true # 是否量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ quantized_dtype: asymmetric_quantized-8 # 量化类型
+ mean_values: [123.675, 116.28, 103.53] # rknn.config的mean_values参数
+ std_values: [58.82, 58.82, 58.82] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
+ quantized_algorithm: normal # 量化算法
+ quantized_method: channel # 量化方法
diff --git a/rknn-toolkit2/examples/onnx/resnet50v2/test.py b/rknn-toolkit2/examples/onnx/resnet50v2/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..b05795543a5e65e108564caea1f8e45a6a35c763
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/resnet50v2/test.py
@@ -0,0 +1,132 @@
+import os
+import urllib
+import traceback
+import time
+import sys
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+ONNX_MODEL = 'resnet50v2.onnx'
+RKNN_MODEL = 'resnet50v2.rknn'
+
+
+def show_outputs(outputs):
+ output = outputs[0][0]
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'resnet50v2\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+def readable_speed(speed):
+ speed_bytes = float(speed)
+ speed_kbytes = speed_bytes / 1024
+ if speed_kbytes > 1024:
+ speed_mbytes = speed_kbytes / 1024
+ if speed_mbytes > 1024:
+ speed_gbytes = speed_mbytes / 1024
+ return "{:.2f} GB/s".format(speed_gbytes)
+ else:
+ return "{:.2f} MB/s".format(speed_mbytes)
+ else:
+ return "{:.2f} KB/s".format(speed_kbytes)
+
+
+def show_progress(blocknum, blocksize, totalsize):
+ speed = (blocknum * blocksize) / (time.time() - start_time)
+ speed_str = " Speed: {}".format(readable_speed(speed))
+ recv_size = blocknum * blocksize
+
+ f = sys.stdout
+ progress = (recv_size / totalsize)
+ progress_str = "{:.2f}%".format(progress * 100)
+ n = round(progress * 50)
+ s = ('#' * n).ljust(50, '-')
+ f.write(progress_str.ljust(8, ' ') + '[' + s + ']' + speed_str)
+ f.flush()
+ f.write('\r\n')
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # If resnet50v2 does not exist, download it.
+ # Download address:
+ # https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.onnx
+ if not os.path.exists(ONNX_MODEL):
+ print('--> Download {}'.format(ONNX_MODEL))
+ url = 'https://s3.amazonaws.com/onnx-model-zoo/resnet/resnet50v2/resnet50v2.onnx'
+ download_file = ONNX_MODEL
+ try:
+ start_time = time.time()
+ urllib.request.urlretrieve(url, download_file, show_progress)
+ except:
+ print('Download {} failed.'.format(download_file))
+ print(traceback.format_exc())
+ exit(-1)
+ print('done')
+
+ # pre-process config
+ print('--> config model')
+ rknn.config(mean_values=[123.675, 116.28, 103.53], std_values=[58.82, 58.82, 58.82], target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_onnx(model=ONNX_MODEL)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn(RKNN_MODEL)
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./onnx_resnet50v2_0.npy', outputs[0])
+ x = outputs[0]
+ output = np.exp(x)/np.sum(np.exp(x))
+ outputs = [output]
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/onnx/yolov5/README.md b/rknn-toolkit2/examples/onnx/yolov5/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2b4df924a3d1434529daa9690378aa96740b08f9
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/yolov5/README.md
@@ -0,0 +1,23 @@
+# ONNX Yolo V5s
+
+## Model Source
+The model used in this example come from:
+https://github.com/airockchip/rknn_model_zoo
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will save the result of object detection to the 'result.jpg', as follows:
+
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/onnx/yolov5/bus.jpg b/rknn-toolkit2/examples/onnx/yolov5/bus.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..19172b78dbbcf34de2b875ac72eb0b4b0651ee66
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/yolov5/bus.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb4914d123d97c440cd127ef0e98d4bdc68cd88e2683657528928b4a34014e16
+size 181374
diff --git a/rknn-toolkit2/examples/onnx/yolov5/dataset.txt b/rknn-toolkit2/examples/onnx/yolov5/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a81b1f855159be64b372f8927d6733de2a6e595c
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/yolov5/dataset.txt
@@ -0,0 +1 @@
+bus.jpg
diff --git a/rknn-toolkit2/examples/onnx/yolov5/model_config.yml b/rknn-toolkit2/examples/onnx/yolov5/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..0f1b6667974bcac2346239c822f10c5468e6c07f
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/yolov5/model_config.yml
@@ -0,0 +1,13 @@
+models:
+ name: yolov5s_relu # 模型输出名称
+ platform: onnx # 原始模型使用的框架
+ model_file_path: ./yolov5s_relu.onnx #原模型路径
+ quantize: true # 是否量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ quantized_dtype: asymmetric_quantized-8 # 量化类型
+ mean_values: [0, 0, 0] # rknn.config的mean_values参数
+ std_values: [255, 255, 255] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
+ quantized_algorithm: normal # 量化算法
+ quantized_method: channel # 量化方法
diff --git a/rknn-toolkit2/examples/onnx/yolov5/result_truth.jpg b/rknn-toolkit2/examples/onnx/yolov5/result_truth.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..55114e08e9f605f8dff8db52519404c8a4c916b7
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/yolov5/result_truth.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb9b5728afd5a6c70877d83900d38c34ad12af1ddb98345348553bd1d43c0da5
+size 192971
diff --git a/rknn-toolkit2/examples/onnx/yolov5/test.py b/rknn-toolkit2/examples/onnx/yolov5/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..1e0e302e3492d46782f9a772a8d64514a021a335
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/yolov5/test.py
@@ -0,0 +1,314 @@
+import os
+import urllib
+import traceback
+import time
+import sys
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+# Model from https://github.com/airockchip/rknn_model_zoo
+ONNX_MODEL = 'yolov5s_relu.onnx'
+RKNN_MODEL = 'yolov5s_relu.rknn'
+IMG_PATH = './bus.jpg'
+DATASET = './dataset.txt'
+
+QUANTIZE_ON = True
+
+OBJ_THRESH = 0.25
+NMS_THRESH = 0.45
+IMG_SIZE = 640
+
+CLASSES = ("person", "bicycle", "car", "motorbike ", "aeroplane ", "bus ", "train", "truck ", "boat", "traffic light",
+ "fire hydrant", "stop sign ", "parking meter", "bench", "bird", "cat", "dog ", "horse ", "sheep", "cow", "elephant",
+ "bear", "zebra ", "giraffe", "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", "sports ball", "kite",
+ "baseball bat", "baseball glove", "skateboard", "surfboard", "tennis racket", "bottle", "wine glass", "cup", "fork", "knife ",
+ "spoon", "bowl", "banana", "apple", "sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza ", "donut", "cake", "chair", "sofa",
+ "pottedplant", "bed", "diningtable", "toilet ", "tvmonitor", "laptop ", "mouse ", "remote ", "keyboard ", "cell phone", "microwave ",
+ "oven ", "toaster", "sink", "refrigerator ", "book", "clock", "vase", "scissors ", "teddy bear ", "hair drier", "toothbrush ")
+
+
+
+def xywh2xyxy(x):
+ # Convert [x, y, w, h] to [x1, y1, x2, y2]
+ y = np.copy(x)
+ y[:, 0] = x[:, 0] - x[:, 2] / 2 # top left x
+ y[:, 1] = x[:, 1] - x[:, 3] / 2 # top left y
+ y[:, 2] = x[:, 0] + x[:, 2] / 2 # bottom right x
+ y[:, 3] = x[:, 1] + x[:, 3] / 2 # bottom right y
+ return y
+
+
+def process(input, mask, anchors):
+
+ anchors = [anchors[i] for i in mask]
+ grid_h, grid_w = map(int, input.shape[0:2])
+
+ box_confidence = input[..., 4]
+ box_confidence = np.expand_dims(box_confidence, axis=-1)
+
+ box_class_probs = input[..., 5:]
+
+ box_xy = input[..., :2]*2 - 0.5
+
+ col = np.tile(np.arange(0, grid_w), grid_w).reshape(-1, grid_w)
+ row = np.tile(np.arange(0, grid_h).reshape(-1, 1), grid_h)
+ col = col.reshape(grid_h, grid_w, 1, 1).repeat(3, axis=-2)
+ row = row.reshape(grid_h, grid_w, 1, 1).repeat(3, axis=-2)
+ grid = np.concatenate((col, row), axis=-1)
+ box_xy += grid
+ box_xy *= int(IMG_SIZE/grid_h)
+
+ box_wh = pow(input[..., 2:4]*2, 2)
+ box_wh = box_wh * anchors
+
+ box = np.concatenate((box_xy, box_wh), axis=-1)
+
+ return box, box_confidence, box_class_probs
+
+
+def filter_boxes(boxes, box_confidences, box_class_probs):
+ """Filter boxes with box threshold. It's a bit different with origin yolov5 post process!
+
+ # Arguments
+ boxes: ndarray, boxes of objects.
+ box_confidences: ndarray, confidences of objects.
+ box_class_probs: ndarray, class_probs of objects.
+
+ # Returns
+ boxes: ndarray, filtered boxes.
+ classes: ndarray, classes for boxes.
+ scores: ndarray, scores for boxes.
+ """
+ boxes = boxes.reshape(-1, 4)
+ box_confidences = box_confidences.reshape(-1)
+ box_class_probs = box_class_probs.reshape(-1, box_class_probs.shape[-1])
+
+ _box_pos = np.where(box_confidences >= OBJ_THRESH)
+ boxes = boxes[_box_pos]
+ box_confidences = box_confidences[_box_pos]
+ box_class_probs = box_class_probs[_box_pos]
+
+ class_max_score = np.max(box_class_probs, axis=-1)
+ classes = np.argmax(box_class_probs, axis=-1)
+ _class_pos = np.where(class_max_score >= OBJ_THRESH)
+
+ boxes = boxes[_class_pos]
+ classes = classes[_class_pos]
+ scores = (class_max_score* box_confidences)[_class_pos]
+
+ return boxes, classes, scores
+
+
+def nms_boxes(boxes, scores):
+ """Suppress non-maximal boxes.
+
+ # Arguments
+ boxes: ndarray, boxes of objects.
+ scores: ndarray, scores of objects.
+
+ # Returns
+ keep: ndarray, index of effective boxes.
+ """
+ x = boxes[:, 0]
+ y = boxes[:, 1]
+ w = boxes[:, 2] - boxes[:, 0]
+ h = boxes[:, 3] - boxes[:, 1]
+
+ areas = w * h
+ order = scores.argsort()[::-1]
+
+ keep = []
+ while order.size > 0:
+ i = order[0]
+ keep.append(i)
+
+ xx1 = np.maximum(x[i], x[order[1:]])
+ yy1 = np.maximum(y[i], y[order[1:]])
+ xx2 = np.minimum(x[i] + w[i], x[order[1:]] + w[order[1:]])
+ yy2 = np.minimum(y[i] + h[i], y[order[1:]] + h[order[1:]])
+
+ w1 = np.maximum(0.0, xx2 - xx1 + 0.00001)
+ h1 = np.maximum(0.0, yy2 - yy1 + 0.00001)
+ inter = w1 * h1
+
+ ovr = inter / (areas[i] + areas[order[1:]] - inter)
+ inds = np.where(ovr <= NMS_THRESH)[0]
+ order = order[inds + 1]
+ keep = np.array(keep)
+ return keep
+
+
+def yolov5_post_process(input_data):
+ masks = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
+ anchors = [[10, 13], [16, 30], [33, 23], [30, 61], [62, 45],
+ [59, 119], [116, 90], [156, 198], [373, 326]]
+
+ boxes, classes, scores = [], [], []
+ for input, mask in zip(input_data, masks):
+ b, c, s = process(input, mask, anchors)
+ b, c, s = filter_boxes(b, c, s)
+ boxes.append(b)
+ classes.append(c)
+ scores.append(s)
+
+ boxes = np.concatenate(boxes)
+ boxes = xywh2xyxy(boxes)
+ classes = np.concatenate(classes)
+ scores = np.concatenate(scores)
+
+ nboxes, nclasses, nscores = [], [], []
+ for c in set(classes):
+ inds = np.where(classes == c)
+ b = boxes[inds]
+ c = classes[inds]
+ s = scores[inds]
+
+ keep = nms_boxes(b, s)
+
+ nboxes.append(b[keep])
+ nclasses.append(c[keep])
+ nscores.append(s[keep])
+
+ if not nclasses and not nscores:
+ return None, None, None
+
+ boxes = np.concatenate(nboxes)
+ classes = np.concatenate(nclasses)
+ scores = np.concatenate(nscores)
+
+ return boxes, classes, scores
+
+
+def draw(image, boxes, scores, classes):
+ """Draw the boxes on the image.
+
+ # Argument:
+ image: original image.
+ boxes: ndarray, boxes of objects.
+ classes: ndarray, classes of objects.
+ scores: ndarray, scores of objects.
+ all_classes: all classes name.
+ """
+ print("{:^12} {:^12} {}".format('class', 'score', 'xmin, ymin, xmax, ymax'))
+ print('-' * 50)
+ for box, score, cl in zip(boxes, scores, classes):
+ top, left, right, bottom = box
+ top = int(top)
+ left = int(left)
+ right = int(right)
+ bottom = int(bottom)
+
+ cv2.rectangle(image, (top, left), (right, bottom), (255, 0, 0), 2)
+ cv2.putText(image, '{0} {1:.2f}'.format(CLASSES[cl], score),
+ (top, left - 6),
+ cv2.FONT_HERSHEY_SIMPLEX,
+ 0.6, (0, 0, 255), 2)
+
+ print("{:^12} {:^12.3f} [{:>4}, {:>4}, {:>4}, {:>4}]".format(CLASSES[cl], score, top, left, right, bottom))
+
+def letterbox(im, new_shape=(640, 640), color=(0, 0, 0)):
+ # Resize and pad image while meeting stride-multiple constraints
+ shape = im.shape[:2] # current shape [height, width]
+ if isinstance(new_shape, int):
+ new_shape = (new_shape, new_shape)
+
+ # Scale ratio (new / old)
+ r = min(new_shape[0] / shape[0], new_shape[1] / shape[1])
+
+ # Compute padding
+ ratio = r, r # width, height ratios
+ new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r))
+ dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding
+
+ dw /= 2 # divide padding into 2 sides
+ dh /= 2
+
+ if shape[::-1] != new_unpad: # resize
+ im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR)
+ top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))
+ left, right = int(round(dw - 0.1)), int(round(dw + 0.1))
+ im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border
+ return im, ratio, (dw, dh)
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3566')
+ print('done')
+
+ # Load ONNX model
+ print('--> Loading model')
+ ret = rknn.load_onnx(model=ONNX_MODEL)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export RKNN model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn(RKNN_MODEL)
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread(IMG_PATH)
+ # img, ratio, (dw, dh) = letterbox(img, new_shape=(IMG_SIZE, IMG_SIZE))
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = cv2.resize(img, (IMG_SIZE, IMG_SIZE))
+
+ # Inference
+ print('--> Running model')
+ img2 = np.expand_dims(img, 0)
+ outputs = rknn.inference(inputs=[img2], data_format=['nhwc'])
+ np.save('./onnx_yolov5_0.npy', outputs[0])
+ np.save('./onnx_yolov5_1.npy', outputs[1])
+ np.save('./onnx_yolov5_2.npy', outputs[2])
+ print('done')
+
+ # post process
+ input0_data = outputs[0]
+ input1_data = outputs[1]
+ input2_data = outputs[2]
+
+ input0_data = input0_data.reshape([3, -1]+list(input0_data.shape[-2:]))
+ input1_data = input1_data.reshape([3, -1]+list(input1_data.shape[-2:]))
+ input2_data = input2_data.reshape([3, -1]+list(input2_data.shape[-2:]))
+
+ input_data = list()
+ input_data.append(np.transpose(input0_data, (2, 3, 0, 1)))
+ input_data.append(np.transpose(input1_data, (2, 3, 0, 1)))
+ input_data.append(np.transpose(input2_data, (2, 3, 0, 1)))
+
+ boxes, classes, scores = yolov5_post_process(input_data)
+
+ img_1 = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
+ if boxes is not None:
+ draw(img_1, boxes, scores, classes)
+ cv2.imwrite('result.jpg', img_1)
+ print('Save results to result.jpg!')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/onnx/yolov5/yolov5s_relu.onnx b/rknn-toolkit2/examples/onnx/yolov5/yolov5s_relu.onnx
new file mode 100644
index 0000000000000000000000000000000000000000..7c0fea5bd06cf3940948870c11fd86763dfedea2
--- /dev/null
+++ b/rknn-toolkit2/examples/onnx/yolov5/yolov5s_relu.onnx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b532116d87b115490b2c5ff309ef5441e372877122eee7ef7f8c50079509beba
+size 28924147
diff --git a/rknn-toolkit2/examples/pytorch/resnet18/README.md b/rknn-toolkit2/examples/pytorch/resnet18/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..37eed052ad3e579a2f12a769fc9773f53fb01a3a
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18/README.md
@@ -0,0 +1,29 @@
+# Pytorch ResNet18
+
+## Model Source
+The model used in this example come from the 'torchvision', more details in the 'export_pytorch_model' function of the script.
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[812] score:0.999739 class:"space shuttle"
+[404] score:0.000197 class:"airliner"
+[657] score:0.000013 class:"missile"
+[833] score:0.000009 class:"submarine, pigboat, sub, U-boat"
+[744] score:0.000007 class:"projectile, missile"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/pytorch/resnet18/dataset.txt b/rknn-toolkit2/examples/pytorch/resnet18/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..14518b31a5f6eeccb9b68aceeb51daef648ff4d9
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18/dataset.txt
@@ -0,0 +1 @@
+space_shuttle_224.jpg
diff --git a/rknn-toolkit2/examples/pytorch/resnet18/labels.txt b/rknn-toolkit2/examples/pytorch/resnet18/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/pytorch/resnet18/model_config.yml b/rknn-toolkit2/examples/pytorch/resnet18/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..712ebc0ffb8414e5ca58a1a08fd58e2d5a8de24f
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18/model_config.yml
@@ -0,0 +1,16 @@
+models:
+ name: resnet_18 # 模型输出名称
+ platform: pytorch # 原始模型使用的框架
+ model_file_path: ./resnet18.pt # 原模型路径
+ subgraphs: # 描述输入输出shape等信息
+ input_size_list:
+ - 1, 3, 224, 224
+ quantize: true # 是否量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ quantized_dtype: asymmetric_quantized-8 # 量化类型
+ mean_values: [123.675, 116.28, 103.53] # rknn.config的mean_values参数
+ std_values: [58.395, 58.395, 58.395] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
+ quantized_algorithm: normal # 量化算法
+ quantized_method: channel # 量化方法
diff --git a/rknn-toolkit2/examples/pytorch/resnet18/space_shuttle_224.jpg b/rknn-toolkit2/examples/pytorch/resnet18/space_shuttle_224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..412a855c379648d80d5b4267ba1da58188cdee1c
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18/space_shuttle_224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a827cc9060d15cd34b1b5ac512f4d6d8366416a5874a2075951991cbacef78d4
+size 23472
diff --git a/rknn-toolkit2/examples/pytorch/resnet18/test.py b/rknn-toolkit2/examples/pytorch/resnet18/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..962bdea0444d2fda5e66c296e2724955ea524906
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18/test.py
@@ -0,0 +1,100 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+import os
+
+
+def export_pytorch_model():
+ import torch
+ import torchvision.models as models
+ net = models.resnet18(pretrained=True)
+ net.eval()
+ trace_model = torch.jit.trace(net, torch.Tensor(1, 3, 224, 224))
+ trace_model.save('./resnet18.pt')
+
+
+def show_outputs(output):
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'resnet18\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+def show_perfs(perfs):
+ perfs = 'perfs: {}\n'.format(perfs)
+ print(perfs)
+
+
+def softmax(x):
+ return np.exp(x)/sum(np.exp(x))
+
+
+if __name__ == '__main__':
+
+ model = './resnet18.pt'
+ if not os.path.exists(model):
+ export_pytorch_model()
+
+ input_size_list = [[1, 3, 224, 224]]
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[123.675, 116.28, 103.53], std_values=[58.395, 58.395, 58.395], target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_pytorch(model=model, input_size_list=input_size_list)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./resnet_18.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./space_shuttle_224.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./pytorch_resnet18_0.npy', outputs[0])
+ show_outputs(softmax(np.array(outputs[0][0])))
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/pytorch/resnet18_qat/README.md b/rknn-toolkit2/examples/pytorch/resnet18_qat/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..fd564cd129ac56952b9c950203af60ea2c783301
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18_qat/README.md
@@ -0,0 +1,30 @@
+# Pytorch ResNet18 QAT
+
+## Model Source
+The model used in this example come from the 'torchvision', more details in the 'export_pytorch_model' function of the script.
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+- This is a QAT model, and the do_quantization of rknn.build needs to be set to False.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[812] score:0.999741 class:"space shuttle"
+[404] score:0.000194 class:"airliner"
+[657] score:0.000015 class:"missile"
+[466] score:0.000008 class:"bullet train, bullet"
+[744] score:0.000008 class:"projectile, missile"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/pytorch/resnet18_qat/labels.txt b/rknn-toolkit2/examples/pytorch/resnet18_qat/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0993780f99088349e2c156a5a8c57ce1013eb493
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18_qat/labels.txt
@@ -0,0 +1,1000 @@
+0:tench, Tinca tinca
+1:goldfish, Carassius auratus
+2:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+3:tiger shark, Galeocerdo cuvieri
+4:hammerhead, hammerhead shark
+5:electric ray, crampfish, numbfish, torpedo
+6:stingray
+7:cock
+8:hen
+9:ostrich, Struthio camelus
+10:brambling, Fringilla montifringilla
+11:goldfinch, Carduelis carduelis
+12:house finch, linnet, Carpodacus mexicanus
+13:junco, snowbird
+14:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+15:robin, American robin, Turdus migratorius
+16:bulbul
+17:jay
+18:magpie
+19:chickadee
+20:water ouzel, dipper
+21:kite
+22:bald eagle, American eagle, Haliaeetus leucocephalus
+23:vulture
+24:great grey owl, great gray owl, Strix nebulosa
+25:European fire salamander, Salamandra salamandra
+26:common newt, Triturus vulgaris
+27:eft
+28:spotted salamander, Ambystoma maculatum
+29:axolotl, mud puppy, Ambystoma mexicanum
+30:bullfrog, Rana catesbeiana
+31:tree frog, tree-frog
+32:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+33:loggerhead, loggerhead turtle, Caretta caretta
+34:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+35:mud turtle
+36:terrapin
+37:box turtle, box tortoise
+38:banded gecko
+39:common iguana, iguana, Iguana iguana
+40:American chameleon, anole, Anolis carolinensis
+41:whiptail, whiptail lizard
+42:agama
+43:frilled lizard, Chlamydosaurus kingi
+44:alligator lizard
+45:Gila monster, Heloderma suspectum
+46:green lizard, Lacerta viridis
+47:African chameleon, Chamaeleo chamaeleon
+48:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+49:African crocodile, Nile crocodile, Crocodylus niloticus
+50:American alligator, Alligator mississipiensis
+51:triceratops
+52:thunder snake, worm snake, Carphophis amoenus
+53:ringneck snake, ring-necked snake, ring snake
+54:hognose snake, puff adder, sand viper
+55:green snake, grass snake
+56:king snake, kingsnake
+57:garter snake, grass snake
+58:water snake
+59:vine snake
+60:night snake, Hypsiglena torquata
+61:boa constrictor, Constrictor constrictor
+62:rock python, rock snake, Python sebae
+63:Indian cobra, Naja naja
+64:green mamba
+65:sea snake
+66:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+67:diamondback, diamondback rattlesnake, Crotalus adamanteus
+68:sidewinder, horned rattlesnake, Crotalus cerastes
+69:trilobite
+70:harvestman, daddy longlegs, Phalangium opilio
+71:scorpion
+72:black and gold garden spider, Argiope aurantia
+73:barn spider, Araneus cavaticus
+74:garden spider, Aranea diademata
+75:black widow, Latrodectus mactans
+76:tarantula
+77:wolf spider, hunting spider
+78:tick
+79:centipede
+80:black grouse
+81:ptarmigan
+82:ruffed grouse, partridge, Bonasa umbellus
+83:prairie chicken, prairie grouse, prairie fowl
+84:peacock
+85:quail
+86:partridge
+87:African grey, African gray, Psittacus erithacus
+88:macaw
+89:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+90:lorikeet
+91:coucal
+92:bee eater
+93:hornbill
+94:hummingbird
+95:jacamar
+96:toucan
+97:drake
+98:red-breasted merganser, Mergus serrator
+99:goose
+100:black swan, Cygnus atratus
+101:tusker
+102:echidna, spiny anteater, anteater
+103:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+104:wallaby, brush kangaroo
+105:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+106:wombat
+107:jellyfish
+108:sea anemone, anemone
+109:brain coral
+110:flatworm, platyhelminth
+111:nematode, nematode worm, roundworm
+112:conch
+113:snail
+114:slug
+115:sea slug, nudibranch
+116:chiton, coat-of-mail shell, sea cradle, polyplacophore
+117:chambered nautilus, pearly nautilus, nautilus
+118:Dungeness crab, Cancer magister
+119:rock crab, Cancer irroratus
+120:fiddler crab
+121:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+122:American lobster, Northern lobster, Maine lobster, Homarus americanus
+123:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+124:crayfish, crawfish, crawdad, crawdaddy
+125:hermit crab
+126:isopod
+127:white stork, Ciconia ciconia
+128:black stork, Ciconia nigra
+129:spoonbill
+130:flamingo
+131:little blue heron, Egretta caerulea
+132:American egret, great white heron, Egretta albus
+133:bittern
+134:crane
+135:limpkin, Aramus pictus
+136:European gallinule, Porphyrio porphyrio
+137:American coot, marsh hen, mud hen, water hen, Fulica americana
+138:bustard
+139:ruddy turnstone, Arenaria interpres
+140:red-backed sandpiper, dunlin, Erolia alpina
+141:redshank, Tringa totanus
+142:dowitcher
+143:oystercatcher, oyster catcher
+144:pelican
+145:king penguin, Aptenodytes patagonica
+146:albatross, mollymawk
+147:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+148:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+149:dugong, Dugong dugon
+150:sea lion
+151:Chihuahua
+152:Japanese spaniel
+153:Maltese dog, Maltese terrier, Maltese
+154:Pekinese, Pekingese, Peke
+155:Shih-Tzu
+156:Blenheim spaniel
+157:papillon
+158:toy terrier
+159:Rhodesian ridgeback
+160:Afghan hound, Afghan
+161:basset, basset hound
+162:beagle
+163:bloodhound, sleuthhound
+164:bluetick
+165:black-and-tan coonhound
+166:Walker hound, Walker foxhound
+167:English foxhound
+168:redbone
+169:borzoi, Russian wolfhound
+170:Irish wolfhound
+171:Italian greyhound
+172:whippet
+173:Ibizan hound, Ibizan Podenco
+174:Norwegian elkhound, elkhound
+175:otterhound, otter hound
+176:Saluki, gazelle hound
+177:Scottish deerhound, deerhound
+178:Weimaraner
+179:Staffordshire bullterrier, Staffordshire bull terrier
+180:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+181:Bedlington terrier
+182:Border terrier
+183:Kerry blue terrier
+184:Irish terrier
+185:Norfolk terrier
+186:Norwich terrier
+187:Yorkshire terrier
+188:wire-haired fox terrier
+189:Lakeland terrier
+190:Sealyham terrier, Sealyham
+191:Airedale, Airedale terrier
+192:cairn, cairn terrier
+193:Australian terrier
+194:Dandie Dinmont, Dandie Dinmont terrier
+195:Boston bull, Boston terrier
+196:miniature schnauzer
+197:giant schnauzer
+198:standard schnauzer
+199:Scotch terrier, Scottish terrier, Scottie
+200:Tibetan terrier, chrysanthemum dog
+201:silky terrier, Sydney silky
+202:soft-coated wheaten terrier
+203:West Highland white terrier
+204:Lhasa, Lhasa apso
+205:flat-coated retriever
+206:curly-coated retriever
+207:golden retriever
+208:Labrador retriever
+209:Chesapeake Bay retriever
+210:German short-haired pointer
+211:vizsla, Hungarian pointer
+212:English setter
+213:Irish setter, red setter
+214:Gordon setter
+215:Brittany spaniel
+216:clumber, clumber spaniel
+217:English springer, English springer spaniel
+218:Welsh springer spaniel
+219:cocker spaniel, English cocker spaniel, cocker
+220:Sussex spaniel
+221:Irish water spaniel
+222:kuvasz
+223:schipperke
+224:groenendael
+225:malinois
+226:briard
+227:kelpie
+228:komondor
+229:Old English sheepdog, bobtail
+230:Shetland sheepdog, Shetland sheep dog, Shetland
+231:collie
+232:Border collie
+233:Bouvier des Flandres, Bouviers des Flandres
+234:Rottweiler
+235:German shepherd, German shepherd dog, German police dog, alsatian
+236:Doberman, Doberman pinscher
+237:miniature pinscher
+238:Greater Swiss Mountain dog
+239:Bernese mountain dog
+240:Appenzeller
+241:EntleBucher
+242:boxer
+243:bull mastiff
+244:Tibetan mastiff
+245:French bulldog
+246:Great Dane
+247:Saint Bernard, St Bernard
+248:Eskimo dog, husky
+249:malamute, malemute, Alaskan malamute
+250:Siberian husky
+251:dalmatian, coach dog, carriage dog
+252:affenpinscher, monkey pinscher, monkey dog
+253:basenji
+254:pug, pug-dog
+255:Leonberg
+256:Newfoundland, Newfoundland dog
+257:Great Pyrenees
+258:Samoyed, Samoyede
+259:Pomeranian
+260:chow, chow chow
+261:keeshond
+262:Brabancon griffon
+263:Pembroke, Pembroke Welsh corgi
+264:Cardigan, Cardigan Welsh corgi
+265:toy poodle
+266:miniature poodle
+267:standard poodle
+268:Mexican hairless
+269:timber wolf, grey wolf, gray wolf, Canis lupus
+270:white wolf, Arctic wolf, Canis lupus tundrarum
+271:red wolf, maned wolf, Canis rufus, Canis niger
+272:coyote, prairie wolf, brush wolf, Canis latrans
+273:dingo, warrigal, warragal, Canis dingo
+274:dhole, Cuon alpinus
+275:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+276:hyena, hyaena
+277:red fox, Vulpes vulpes
+278:kit fox, Vulpes macrotis
+279:Arctic fox, white fox, Alopex lagopus
+280:grey fox, gray fox, Urocyon cinereoargenteus
+281:tabby, tabby cat
+282:tiger cat
+283:Persian cat
+284:Siamese cat, Siamese
+285:Egyptian cat
+286:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+287:lynx, catamount
+288:leopard, Panthera pardus
+289:snow leopard, ounce, Panthera uncia
+290:jaguar, panther, Panthera onca, Felis onca
+291:lion, king of beasts, Panthera leo
+292:tiger, Panthera tigris
+293:cheetah, chetah, Acinonyx jubatus
+294:brown bear, bruin, Ursus arctos
+295:American black bear, black bear, Ursus americanus, Euarctos americanus
+296:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+297:sloth bear, Melursus ursinus, Ursus ursinus
+298:mongoose
+299:meerkat, mierkat
+300:tiger beetle
+301:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+302:ground beetle, carabid beetle
+303:long-horned beetle, longicorn, longicorn beetle
+304:leaf beetle, chrysomelid
+305:dung beetle
+306:rhinoceros beetle
+307:weevil
+308:fly
+309:bee
+310:ant, emmet, pismire
+311:grasshopper, hopper
+312:cricket
+313:walking stick, walkingstick, stick insect
+314:cockroach, roach
+315:mantis, mantid
+316:cicada, cicala
+317:leafhopper
+318:lacewing, lacewing fly
+319:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+320:damselfly
+321:admiral
+322:ringlet, ringlet butterfly
+323:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+324:cabbage butterfly
+325:sulphur butterfly, sulfur butterfly
+326:lycaenid, lycaenid butterfly
+327:starfish, sea star
+328:sea urchin
+329:sea cucumber, holothurian
+330:wood rabbit, cottontail, cottontail rabbit
+331:hare
+332:Angora, Angora rabbit
+333:hamster
+334:porcupine, hedgehog
+335:fox squirrel, eastern fox squirrel, Sciurus niger
+336:marmot
+337:beaver
+338:guinea pig, Cavia cobaya
+339:sorrel
+340:zebra
+341:hog, pig, grunter, squealer, Sus scrofa
+342:wild boar, boar, Sus scrofa
+343:warthog
+344:hippopotamus, hippo, river horse, Hippopotamus amphibius
+345:ox
+346:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+347:bison
+348:ram, tup
+349:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+350:ibex, Capra ibex
+351:hartebeest
+352:impala, Aepyceros melampus
+353:gazelle
+354:Arabian camel, dromedary, Camelus dromedarius
+355:llama
+356:weasel
+357:mink
+358:polecat, fitch, foulmart, foumart, Mustela putorius
+359:black-footed ferret, ferret, Mustela nigripes
+360:otter
+361:skunk, polecat, wood pussy
+362:badger
+363:armadillo
+364:three-toed sloth, ai, Bradypus tridactylus
+365:orangutan, orang, orangutang, Pongo pygmaeus
+366:gorilla, Gorilla gorilla
+367:chimpanzee, chimp, Pan troglodytes
+368:gibbon, Hylobates lar
+369:siamang, Hylobates syndactylus, Symphalangus syndactylus
+370:guenon, guenon monkey
+371:patas, hussar monkey, Erythrocebus patas
+372:baboon
+373:macaque
+374:langur
+375:colobus, colobus monkey
+376:proboscis monkey, Nasalis larvatus
+377:marmoset
+378:capuchin, ringtail, Cebus capucinus
+379:howler monkey, howler
+380:titi, titi monkey
+381:spider monkey, Ateles geoffroyi
+382:squirrel monkey, Saimiri sciureus
+383:Madagascar cat, ring-tailed lemur, Lemur catta
+384:indri, indris, Indri indri, Indri brevicaudatus
+385:Indian elephant, Elephas maximus
+386:African elephant, Loxodonta africana
+387:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+388:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+389:barracouta, snoek
+390:eel
+391:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+392:rock beauty, Holocanthus tricolor
+393:anemone fish
+394:sturgeon
+395:gar, garfish, garpike, billfish, Lepisosteus osseus
+396:lionfish
+397:puffer, pufferfish, blowfish, globefish
+398:abacus
+399:abaya
+400:academic gown, academic robe, judge's robe
+401:accordion, piano accordion, squeeze box
+402:acoustic guitar
+403:aircraft carrier, carrier, flattop, attack aircraft carrier
+404:airliner
+405:airship, dirigible
+406:altar
+407:ambulance
+408:amphibian, amphibious vehicle
+409:analog clock
+410:apiary, bee house
+411:apron
+412:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+413:assault rifle, assault gun
+414:backpack, back pack, knapsack, packsack, rucksack, haversack
+415:bakery, bakeshop, bakehouse
+416:balance beam, beam
+417:balloon
+418:ballpoint, ballpoint pen, ballpen, Biro
+419:Band Aid
+420:banjo
+421:bannister, banister, balustrade, balusters, handrail
+422:barbell
+423:barber chair
+424:barbershop
+425:barn
+426:barometer
+427:barrel, cask
+428:barrow, garden cart, lawn cart, wheelbarrow
+429:baseball
+430:basketball
+431:bassinet
+432:bassoon
+433:bathing cap, swimming cap
+434:bath towel
+435:bathtub, bathing tub, bath, tub
+436:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+437:beacon, lighthouse, beacon light, pharos
+438:beaker
+439:bearskin, busby, shako
+440:beer bottle
+441:beer glass
+442:bell cote, bell cot
+443:bib
+444:bicycle-built-for-two, tandem bicycle, tandem
+445:bikini, two-piece
+446:binder, ring-binder
+447:binoculars, field glasses, opera glasses
+448:birdhouse
+449:boathouse
+450:bobsled, bobsleigh, bob
+451:bolo tie, bolo, bola tie, bola
+452:bonnet, poke bonnet
+453:bookcase
+454:bookshop, bookstore, bookstall
+455:bottlecap
+456:bow
+457:bow tie, bow-tie, bowtie
+458:brass, memorial tablet, plaque
+459:brassiere, bra, bandeau
+460:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+461:breastplate, aegis, egis
+462:broom
+463:bucket, pail
+464:buckle
+465:bulletproof vest
+466:bullet train, bullet
+467:butcher shop, meat market
+468:cab, hack, taxi, taxicab
+469:caldron, cauldron
+470:candle, taper, wax light
+471:cannon
+472:canoe
+473:can opener, tin opener
+474:cardigan
+475:car mirror
+476:carousel, carrousel, merry-go-round, roundabout, whirligig
+477:carpenter's kit, tool kit
+478:carton
+479:car wheel
+480:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+481:cassette
+482:cassette player
+483:castle
+484:catamaran
+485:CD player
+486:cello, violoncello
+487:cellular telephone, cellular phone, cellphone, cell, mobile phone
+488:chain
+489:chainlink fence
+490:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+491:chain saw, chainsaw
+492:chest
+493:chiffonier, commode
+494:chime, bell, gong
+495:china cabinet, china closet
+496:Christmas stocking
+497:church, church building
+498:cinema, movie theater, movie theatre, movie house, picture palace
+499:cleaver, meat cleaver, chopper
+500:cliff dwelling
+501:cloak
+502:clog, geta, patten, sabot
+503:cocktail shaker
+504:coffee mug
+505:coffeepot
+506:coil, spiral, volute, whorl, helix
+507:combination lock
+508:computer keyboard, keypad
+509:confectionery, confectionary, candy store
+510:container ship, containership, container vessel
+511:convertible
+512:corkscrew, bottle screw
+513:cornet, horn, trumpet, trump
+514:cowboy boot
+515:cowboy hat, ten-gallon hat
+516:cradle
+517:crane
+518:crash helmet
+519:crate
+520:crib, cot
+521:Crock Pot
+522:croquet ball
+523:crutch
+524:cuirass
+525:dam, dike, dyke
+526:desk
+527:desktop computer
+528:dial telephone, dial phone
+529:diaper, nappy, napkin
+530:digital clock
+531:digital watch
+532:dining table, board
+533:dishrag, dishcloth
+534:dishwasher, dish washer, dishwashing machine
+535:disk brake, disc brake
+536:dock, dockage, docking facility
+537:dogsled, dog sled, dog sleigh
+538:dome
+539:doormat, welcome mat
+540:drilling platform, offshore rig
+541:drum, membranophone, tympan
+542:drumstick
+543:dumbbell
+544:Dutch oven
+545:electric fan, blower
+546:electric guitar
+547:electric locomotive
+548:entertainment center
+549:envelope
+550:espresso maker
+551:face powder
+552:feather boa, boa
+553:file, file cabinet, filing cabinet
+554:fireboat
+555:fire engine, fire truck
+556:fire screen, fireguard
+557:flagpole, flagstaff
+558:flute, transverse flute
+559:folding chair
+560:football helmet
+561:forklift
+562:fountain
+563:fountain pen
+564:four-poster
+565:freight car
+566:French horn, horn
+567:frying pan, frypan, skillet
+568:fur coat
+569:garbage truck, dustcart
+570:gasmask, respirator, gas helmet
+571:gas pump, gasoline pump, petrol pump, island dispenser
+572:goblet
+573:go-kart
+574:golf ball
+575:golfcart, golf cart
+576:gondola
+577:gong, tam-tam
+578:gown
+579:grand piano, grand
+580:greenhouse, nursery, glasshouse
+581:grille, radiator grille
+582:grocery store, grocery, food market, market
+583:guillotine
+584:hair slide
+585:hair spray
+586:half track
+587:hammer
+588:hamper
+589:hand blower, blow dryer, blow drier, hair dryer, hair drier
+590:hand-held computer, hand-held microcomputer
+591:handkerchief, hankie, hanky, hankey
+592:hard disc, hard disk, fixed disk
+593:harmonica, mouth organ, harp, mouth harp
+594:harp
+595:harvester, reaper
+596:hatchet
+597:holster
+598:home theater, home theatre
+599:honeycomb
+600:hook, claw
+601:hoopskirt, crinoline
+602:horizontal bar, high bar
+603:horse cart, horse-cart
+604:hourglass
+605:iPod
+606:iron, smoothing iron
+607:jack-o'-lantern
+608:jean, blue jean, denim
+609:jeep, landrover
+610:jersey, T-shirt, tee shirt
+611:jigsaw puzzle
+612:jinrikisha, ricksha, rickshaw
+613:joystick
+614:kimono
+615:knee pad
+616:knot
+617:lab coat, laboratory coat
+618:ladle
+619:lampshade, lamp shade
+620:laptop, laptop computer
+621:lawn mower, mower
+622:lens cap, lens cover
+623:letter opener, paper knife, paperknife
+624:library
+625:lifeboat
+626:lighter, light, igniter, ignitor
+627:limousine, limo
+628:liner, ocean liner
+629:lipstick, lip rouge
+630:Loafer
+631:lotion
+632:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+633:loupe, jeweler's loupe
+634:lumbermill, sawmill
+635:magnetic compass
+636:mailbag, postbag
+637:mailbox, letter box
+638:maillot
+639:maillot, tank suit
+640:manhole cover
+641:maraca
+642:marimba, xylophone
+643:mask
+644:matchstick
+645:maypole
+646:maze, labyrinth
+647:measuring cup
+648:medicine chest, medicine cabinet
+649:megalith, megalithic structure
+650:microphone, mike
+651:microwave, microwave oven
+652:military uniform
+653:milk can
+654:minibus
+655:miniskirt, mini
+656:minivan
+657:missile
+658:mitten
+659:mixing bowl
+660:mobile home, manufactured home
+661:Model T
+662:modem
+663:monastery
+664:monitor
+665:moped
+666:mortar
+667:mortarboard
+668:mosque
+669:mosquito net
+670:motor scooter, scooter
+671:mountain bike, all-terrain bike, off-roader
+672:mountain tent
+673:mouse, computer mouse
+674:mousetrap
+675:moving van
+676:muzzle
+677:nail
+678:neck brace
+679:necklace
+680:nipple
+681:notebook, notebook computer
+682:obelisk
+683:oboe, hautboy, hautbois
+684:ocarina, sweet potato
+685:odometer, hodometer, mileometer, milometer
+686:oil filter
+687:organ, pipe organ
+688:oscilloscope, scope, cathode-ray oscilloscope, CRO
+689:overskirt
+690:oxcart
+691:oxygen mask
+692:packet
+693:paddle, boat paddle
+694:paddlewheel, paddle wheel
+695:padlock
+696:paintbrush
+697:pajama, pyjama, pj's, jammies
+698:palace
+699:panpipe, pandean pipe, syrinx
+700:paper towel
+701:parachute, chute
+702:parallel bars, bars
+703:park bench
+704:parking meter
+705:passenger car, coach, carriage
+706:patio, terrace
+707:pay-phone, pay-station
+708:pedestal, plinth, footstall
+709:pencil box, pencil case
+710:pencil sharpener
+711:perfume, essence
+712:Petri dish
+713:photocopier
+714:pick, plectrum, plectron
+715:pickelhaube
+716:picket fence, paling
+717:pickup, pickup truck
+718:pier
+719:piggy bank, penny bank
+720:pill bottle
+721:pillow
+722:ping-pong ball
+723:pinwheel
+724:pirate, pirate ship
+725:pitcher, ewer
+726:plane, carpenter's plane, woodworking plane
+727:planetarium
+728:plastic bag
+729:plate rack
+730:plow, plough
+731:plunger, plumber's helper
+732:Polaroid camera, Polaroid Land camera
+733:pole
+734:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+735:poncho
+736:pool table, billiard table, snooker table
+737:pop bottle, soda bottle
+738:pot, flowerpot
+739:potter's wheel
+740:power drill
+741:prayer rug, prayer mat
+742:printer
+743:prison, prison house
+744:projectile, missile
+745:projector
+746:puck, hockey puck
+747:punching bag, punch bag, punching ball, punchball
+748:purse
+749:quill, quill pen
+750:quilt, comforter, comfort, puff
+751:racer, race car, racing car
+752:racket, racquet
+753:radiator
+754:radio, wireless
+755:radio telescope, radio reflector
+756:rain barrel
+757:recreational vehicle, RV, R.V.
+758:reel
+759:reflex camera
+760:refrigerator, icebox
+761:remote control, remote
+762:restaurant, eating house, eating place, eatery
+763:revolver, six-gun, six-shooter
+764:rifle
+765:rocking chair, rocker
+766:rotisserie
+767:rubber eraser, rubber, pencil eraser
+768:rugby ball
+769:rule, ruler
+770:running shoe
+771:safe
+772:safety pin
+773:saltshaker, salt shaker
+774:sandal
+775:sarong
+776:sax, saxophone
+777:scabbard
+778:scale, weighing machine
+779:school bus
+780:schooner
+781:scoreboard
+782:screen, CRT screen
+783:screw
+784:screwdriver
+785:seat belt, seatbelt
+786:sewing machine
+787:shield, buckler
+788:shoe shop, shoe-shop, shoe store
+789:shoji
+790:shopping basket
+791:shopping cart
+792:shovel
+793:shower cap
+794:shower curtain
+795:ski
+796:ski mask
+797:sleeping bag
+798:slide rule, slipstick
+799:sliding door
+800:slot, one-armed bandit
+801:snorkel
+802:snowmobile
+803:snowplow, snowplough
+804:soap dispenser
+805:soccer ball
+806:sock
+807:solar dish, solar collector, solar furnace
+808:sombrero
+809:soup bowl
+810:space bar
+811:space heater
+812:space shuttle
+813:spatula
+814:speedboat
+815:spider web, spider's web
+816:spindle
+817:sports car, sport car
+818:spotlight, spot
+819:stage
+820:steam locomotive
+821:steel arch bridge
+822:steel drum
+823:stethoscope
+824:stole
+825:stone wall
+826:stopwatch, stop watch
+827:stove
+828:strainer
+829:streetcar, tram, tramcar, trolley, trolley car
+830:stretcher
+831:studio couch, day bed
+832:stupa, tope
+833:submarine, pigboat, sub, U-boat
+834:suit, suit of clothes
+835:sundial
+836:sunglass
+837:sunglasses, dark glasses, shades
+838:sunscreen, sunblock, sun blocker
+839:suspension bridge
+840:swab, swob, mop
+841:sweatshirt
+842:swimming trunks, bathing trunks
+843:swing
+844:switch, electric switch, electrical switch
+845:syringe
+846:table lamp
+847:tank, army tank, armored combat vehicle, armoured combat vehicle
+848:tape player
+849:teapot
+850:teddy, teddy bear
+851:television, television system
+852:tennis ball
+853:thatch, thatched roof
+854:theater curtain, theatre curtain
+855:thimble
+856:thresher, thrasher, threshing machine
+857:throne
+858:tile roof
+859:toaster
+860:tobacco shop, tobacconist shop, tobacconist
+861:toilet seat
+862:torch
+863:totem pole
+864:tow truck, tow car, wrecker
+865:toyshop
+866:tractor
+867:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+868:tray
+869:trench coat
+870:tricycle, trike, velocipede
+871:trimaran
+872:tripod
+873:triumphal arch
+874:trolleybus, trolley coach, trackless trolley
+875:trombone
+876:tub, vat
+877:turnstile
+878:typewriter keyboard
+879:umbrella
+880:unicycle, monocycle
+881:upright, upright piano
+882:vacuum, vacuum cleaner
+883:vase
+884:vault
+885:velvet
+886:vending machine
+887:vestment
+888:viaduct
+889:violin, fiddle
+890:volleyball
+891:waffle iron
+892:wall clock
+893:wallet, billfold, notecase, pocketbook
+894:wardrobe, closet, press
+895:warplane, military plane
+896:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+897:washer, automatic washer, washing machine
+898:water bottle
+899:water jug
+900:water tower
+901:whiskey jug
+902:whistle
+903:wig
+904:window screen
+905:window shade
+906:Windsor tie
+907:wine bottle
+908:wing
+909:wok
+910:wooden spoon
+911:wool, woolen, woollen
+912:worm fence, snake fence, snake-rail fence, Virginia fence
+913:wreck
+914:yawl
+915:yurt
+916:web site, website, internet site, site
+917:comic book
+918:crossword puzzle, crossword
+919:street sign
+920:traffic light, traffic signal, stoplight
+921:book jacket, dust cover, dust jacket, dust wrapper
+922:menu
+923:plate
+924:guacamole
+925:consomme
+926:hot pot, hotpot
+927:trifle
+928:ice cream, icecream
+929:ice lolly, lolly, lollipop, popsicle
+930:French loaf
+931:bagel, beigel
+932:pretzel
+933:cheeseburger
+934:hotdog, hot dog, red hot
+935:mashed potato
+936:head cabbage
+937:broccoli
+938:cauliflower
+939:zucchini, courgette
+940:spaghetti squash
+941:acorn squash
+942:butternut squash
+943:cucumber, cuke
+944:artichoke, globe artichoke
+945:bell pepper
+946:cardoon
+947:mushroom
+948:Granny Smith
+949:strawberry
+950:orange
+951:lemon
+952:fig
+953:pineapple, ananas
+954:banana
+955:jackfruit, jak, jack
+956:custard apple
+957:pomegranate
+958:hay
+959:carbonara
+960:chocolate sauce, chocolate syrup
+961:dough
+962:meat loaf, meatloaf
+963:pizza, pizza pie
+964:potpie
+965:burrito
+966:red wine
+967:espresso
+968:cup
+969:eggnog
+970:alp
+971:bubble
+972:cliff, drop, drop-off
+973:coral reef
+974:geyser
+975:lakeside, lakeshore
+976:promontory, headland, head, foreland
+977:sandbar, sand bar
+978:seashore, coast, seacoast, sea-coast
+979:valley, vale
+980:volcano
+981:ballplayer, baseball player
+982:groom, bridegroom
+983:scuba diver
+984:rapeseed
+985:daisy
+986:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+987:corn
+988:acorn
+989:hip, rose hip, rosehip
+990:buckeye, horse chestnut, conker
+991:coral fungus
+992:agaric
+993:gyromitra
+994:stinkhorn, carrion fungus
+995:earthstar
+996:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+997:bolete
+998:ear, spike, capitulum
+999:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/pytorch/resnet18_qat/model_config.yml b/rknn-toolkit2/examples/pytorch/resnet18_qat/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..a6899360e5b07071acc686baa8a7a65a7e231d12
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18_qat/model_config.yml
@@ -0,0 +1,12 @@
+models:
+ name: resnet_18 # 模型输出名称
+ platform: pytorch # 原始模型使用的框架
+ model_file_path: ./resnet18_i8.pt # 原模型路径
+ subgraphs: # 描述输入输出shape等信息
+ input_size_list:
+ - 1, 3, 224, 224
+ quantize: False # QAT已经量化过,不需要再量化
+ configs:
+ mean_values: [123.675, 116.28, 103.53] # rknn.config的mean_values参数
+ std_values: [58.395, 58.395, 58.395] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
diff --git a/rknn-toolkit2/examples/pytorch/resnet18_qat/resnet18_i8.pt b/rknn-toolkit2/examples/pytorch/resnet18_qat/resnet18_i8.pt
new file mode 100755
index 0000000000000000000000000000000000000000..6c2024a18e526fd98b28eb5bfb9c80312e5b92f0
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18_qat/resnet18_i8.pt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47b314875bb4b2d175bf744123eb517fedb23431cbb04612cad82e7fb33af674
+size 11939926
diff --git a/rknn-toolkit2/examples/pytorch/resnet18_qat/space_shuttle_224.jpg b/rknn-toolkit2/examples/pytorch/resnet18_qat/space_shuttle_224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..412a855c379648d80d5b4267ba1da58188cdee1c
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18_qat/space_shuttle_224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a827cc9060d15cd34b1b5ac512f4d6d8366416a5874a2075951991cbacef78d4
+size 23472
diff --git a/rknn-toolkit2/examples/pytorch/resnet18_qat/test.py b/rknn-toolkit2/examples/pytorch/resnet18_qat/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..17e75e3ea9b8c1218c6574fe809318cadd950c00
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/resnet18_qat/test.py
@@ -0,0 +1,110 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+import os
+
+
+def export_pytorch_model():
+ import torch
+ import torchvision.models as models
+ net = models.quantization.resnet18(pretrained=True, quantize=True)
+ net.eval()
+ trace_model = torch.jit.trace(net, torch.Tensor(1, 3, 224, 224))
+ trace_model.save('./resnet18_i8.pt')
+
+def show_outputs(output):
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'resnet18\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+def show_perfs(perfs):
+ perfs = 'perfs: {}\n'.format(perfs)
+ print(perfs)
+
+
+def softmax(x):
+ return np.exp(x)/sum(np.exp(x))
+
+def torch_version():
+ import torch
+ torch_ver = torch.__version__.split('.')
+ torch_ver[2] = torch_ver[2].split('+')[0]
+ return [int(v) for v in torch_ver]
+
+if __name__ == '__main__':
+
+ if torch_version() < [1, 9, 0]:
+ import torch
+ print("Your torch version is '{}', in order to better support the Quantization Aware Training (QAT) model,\n"
+ "Please update the torch version to '1.9.0' or higher!".format(torch.__version__))
+ exit(0)
+
+ model = './resnet18_i8.pt'
+ if not os.path.exists(model):
+ export_pytorch_model()
+
+ input_size_list = [[1, 3, 224, 224]]
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[123.675, 116.28, 103.53], std_values=[58.395, 58.395, 58.395], target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_pytorch(model=model, input_size_list=input_size_list)
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=False)
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./resnet_18.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./space_shuttle_224.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./pytorch_resnet18_qat_0.npy', outputs[0])
+ show_outputs(softmax(np.array(outputs[0][0])))
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/pytorch/yolov5/README.md b/rknn-toolkit2/examples/pytorch/yolov5/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..18b88f8575b8071d07ce77e6025fa80b474416a0
--- /dev/null
+++ b/rknn-toolkit2/examples/pytorch/yolov5/README.md
@@ -0,0 +1,3 @@
+# Description of example changes
+
+At present, the models of the YOLO series have been transferred to the [rknn_model_zoo](https://github.com/airockchip/rknn_model_zoo "rknn model zoo") project, please refer to the instructions in this project to export the TorchScript model, and use the scripts provided by the project for model conversion, model evaluation, and deployment.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/readme.txt b/rknn-toolkit2/examples/readme.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a08549c239030c363cf90d465ee1ca3e90111874
--- /dev/null
+++ b/rknn-toolkit2/examples/readme.txt
@@ -0,0 +1,33 @@
+The directory structure of examples is as follows:
+.
+├── caffe
+│ ├── mobilenet_v2 # mobilenet_v2 float model
+│ └── vgg-ssd # vgg-ssd float model
+├── onnx
+│ ├── resnet50v2 # resnet50v2 float model
+│ └── yolov5 # yolov5 float model
+├── pytorch
+│ ├── resnet18 # resnet18 float model
+│ ├── resnet18_qat # resnet18 QAT model
+│ ├── resnet18_export_onnx # how to export onnx model from pytorch
+│ └── yolov5 # yolov5 float model
+├── tensorflow
+│ ├── ssd_mobilenet_v1 # ssd_mobilenet_v1 float model
+│ └── inception_v3_qat # inception_v3 QAT model
+├── tflite
+│ ├── mobilenet_v1 # mobilenet_v1 float model
+│ └── mobilenet_v1_qat # mobilenet_v1 QAT model
+├── darknet
+│ └── yolov3_416x416 # yolov3 float model
+└── functions
+ ├── accuracy_analysis # how to use accuracy-analysis function
+ ├── codegen # how to generate c++ deployment demo when converting model
+ ├── custom_op # How to use custom_op function
+ ├── dynamic_shape # how to use dynamic shape function
+ ├── hybrid_quant # how to use hybrid-quantization function
+ ├── model_pruning # how to use model_pruning function
+ ├── multi_batch # how to expand batch for use multi-batch function
+ ├── multi_input # How to convert multi-input model
+ ├── npu_device_test # how to test npu device by connect the board
+ ├── onnx_edit # how to use onnx_edit function
+ └── quantize_algorithm_mmse # how to use MMSE quantize algorithm
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/tensorflow/inception_v3_qat/README.md b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..d1a268302fea79588e0e509edb6d1204a47d431d
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/README.md
@@ -0,0 +1,31 @@
+# TensorFlow Inception V3 QAT
+
+## Model Source
+The model used in this example come from:
+https://storage.googleapis.com/download.tensorflow.org/models/tflite_11_05_08/inception_v3_quant.tgz
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+- This is a QAT model, and the do_quantization of rknn.build needs to be set to False.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[ 2] score:0.996572 class:"goldfish, Carassius auratus"
+[ 408] score:0.000464 class:"ambulance"
+[ 795] score:0.000201 class:"shower curtain"
+[ 352] score:0.000070 class:"hartebeest"
+[ 974] score:0.000051 class:"coral reef"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/tensorflow/inception_v3_qat/goldfish_299x299.jpg b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/goldfish_299x299.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b3dd3b09fb02b37db695c36ee33eb548bfaaa373
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/goldfish_299x299.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:368a42831521cd46ceed64164771051eed9e43ebff78eeb6fa9ad948e3c1838b
+size 87254
diff --git a/rknn-toolkit2/examples/tensorflow/inception_v3_qat/labels.txt b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dcd01c14b4635096ae295a8e81de0f65188bc1f8
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/labels.txt
@@ -0,0 +1,1001 @@
+0:__background__
+1:tench, Tinca tinca
+2:goldfish, Carassius auratus
+3:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+4:tiger shark, Galeocerdo cuvieri
+5:hammerhead, hammerhead shark
+6:electric ray, crampfish, numbfish, torpedo
+7:stingray
+8:cock
+9:hen
+10:ostrich, Struthio camelus
+11:brambling, Fringilla montifringilla
+12:goldfinch, Carduelis carduelis
+13:house finch, linnet, Carpodacus mexicanus
+14:junco, snowbird
+15:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+16:robin, American robin, Turdus migratorius
+17:bulbul
+18:jay
+19:magpie
+20:chickadee
+21:water ouzel, dipper
+22:kite
+23:bald eagle, American eagle, Haliaeetus leucocephalus
+24:vulture
+25:great grey owl, great gray owl, Strix nebulosa
+26:European fire salamander, Salamandra salamandra
+27:common newt, Triturus vulgaris
+28:eft
+29:spotted salamander, Ambystoma maculatum
+30:axolotl, mud puppy, Ambystoma mexicanum
+31:bullfrog, Rana catesbeiana
+32:tree frog, tree-frog
+33:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+34:loggerhead, loggerhead turtle, Caretta caretta
+35:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+36:mud turtle
+37:terrapin
+38:box turtle, box tortoise
+39:banded gecko
+40:common iguana, iguana, Iguana iguana
+41:American chameleon, anole, Anolis carolinensis
+42:whiptail, whiptail lizard
+43:agama
+44:frilled lizard, Chlamydosaurus kingi
+45:alligator lizard
+46:Gila monster, Heloderma suspectum
+47:green lizard, Lacerta viridis
+48:African chameleon, Chamaeleo chamaeleon
+49:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+50:African crocodile, Nile crocodile, Crocodylus niloticus
+51:American alligator, Alligator mississipiensis
+52:triceratops
+53:thunder snake, worm snake, Carphophis amoenus
+54:ringneck snake, ring-necked snake, ring snake
+55:hognose snake, puff adder, sand viper
+56:green snake, grass snake
+57:king snake, kingsnake
+58:garter snake, grass snake
+59:water snake
+60:vine snake
+61:night snake, Hypsiglena torquata
+62:boa constrictor, Constrictor constrictor
+63:rock python, rock snake, Python sebae
+64:Indian cobra, Naja naja
+65:green mamba
+66:sea snake
+67:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+68:diamondback, diamondback rattlesnake, Crotalus adamanteus
+69:sidewinder, horned rattlesnake, Crotalus cerastes
+70:trilobite
+71:harvestman, daddy longlegs, Phalangium opilio
+72:scorpion
+73:black and gold garden spider, Argiope aurantia
+74:barn spider, Araneus cavaticus
+75:garden spider, Aranea diademata
+76:black widow, Latrodectus mactans
+77:tarantula
+78:wolf spider, hunting spider
+79:tick
+80:centipede
+81:black grouse
+82:ptarmigan
+83:ruffed grouse, partridge, Bonasa umbellus
+84:prairie chicken, prairie grouse, prairie fowl
+85:peacock
+86:quail
+87:partridge
+88:African grey, African gray, Psittacus erithacus
+89:macaw
+90:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+91:lorikeet
+92:coucal
+93:bee eater
+94:hornbill
+95:hummingbird
+96:jacamar
+97:toucan
+98:drake
+99:red-breasted merganser, Mergus serrator
+100:goose
+101:black swan, Cygnus atratus
+102:tusker
+103:echidna, spiny anteater, anteater
+104:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+105:wallaby, brush kangaroo
+106:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+107:wombat
+108:jellyfish
+109:sea anemone, anemone
+110:brain coral
+111:flatworm, platyhelminth
+112:nematode, nematode worm, roundworm
+113:conch
+114:snail
+115:slug
+116:sea slug, nudibranch
+117:chiton, coat-of-mail shell, sea cradle, polyplacophore
+118:chambered nautilus, pearly nautilus, nautilus
+119:Dungeness crab, Cancer magister
+120:rock crab, Cancer irroratus
+121:fiddler crab
+122:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+123:American lobster, Northern lobster, Maine lobster, Homarus americanus
+124:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+125:crayfish, crawfish, crawdad, crawdaddy
+126:hermit crab
+127:isopod
+128:white stork, Ciconia ciconia
+129:black stork, Ciconia nigra
+130:spoonbill
+131:flamingo
+132:little blue heron, Egretta caerulea
+133:American egret, great white heron, Egretta albus
+134:bittern
+135:crane
+136:limpkin, Aramus pictus
+137:European gallinule, Porphyrio porphyrio
+138:American coot, marsh hen, mud hen, water hen, Fulica americana
+139:bustard
+140:ruddy turnstone, Arenaria interpres
+141:red-backed sandpiper, dunlin, Erolia alpina
+142:redshank, Tringa totanus
+143:dowitcher
+144:oystercatcher, oyster catcher
+145:pelican
+146:king penguin, Aptenodytes patagonica
+147:albatross, mollymawk
+148:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+149:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+150:dugong, Dugong dugon
+151:sea lion
+152:Chihuahua
+153:Japanese spaniel
+154:Maltese dog, Maltese terrier, Maltese
+155:Pekinese, Pekingese, Peke
+156:Shih-Tzu
+157:Blenheim spaniel
+158:papillon
+159:toy terrier
+160:Rhodesian ridgeback
+161:Afghan hound, Afghan
+162:basset, basset hound
+163:beagle
+164:bloodhound, sleuthhound
+165:bluetick
+166:black-and-tan coonhound
+167:Walker hound, Walker foxhound
+168:English foxhound
+169:redbone
+170:borzoi, Russian wolfhound
+171:Irish wolfhound
+172:Italian greyhound
+173:whippet
+174:Ibizan hound, Ibizan Podenco
+175:Norwegian elkhound, elkhound
+176:otterhound, otter hound
+177:Saluki, gazelle hound
+178:Scottish deerhound, deerhound
+179:Weimaraner
+180:Staffordshire bullterrier, Staffordshire bull terrier
+181:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+182:Bedlington terrier
+183:Border terrier
+184:Kerry blue terrier
+185:Irish terrier
+186:Norfolk terrier
+187:Norwich terrier
+188:Yorkshire terrier
+189:wire-haired fox terrier
+190:Lakeland terrier
+191:Sealyham terrier, Sealyham
+192:Airedale, Airedale terrier
+193:cairn, cairn terrier
+194:Australian terrier
+195:Dandie Dinmont, Dandie Dinmont terrier
+196:Boston bull, Boston terrier
+197:miniature schnauzer
+198:giant schnauzer
+199:standard schnauzer
+200:Scotch terrier, Scottish terrier, Scottie
+201:Tibetan terrier, chrysanthemum dog
+202:silky terrier, Sydney silky
+203:soft-coated wheaten terrier
+204:West Highland white terrier
+205:Lhasa, Lhasa apso
+206:flat-coated retriever
+207:curly-coated retriever
+208:golden retriever
+209:Labrador retriever
+210:Chesapeake Bay retriever
+211:German short-haired pointer
+212:vizsla, Hungarian pointer
+213:English setter
+214:Irish setter, red setter
+215:Gordon setter
+216:Brittany spaniel
+217:clumber, clumber spaniel
+218:English springer, English springer spaniel
+219:Welsh springer spaniel
+220:cocker spaniel, English cocker spaniel, cocker
+221:Sussex spaniel
+222:Irish water spaniel
+223:kuvasz
+224:schipperke
+225:groenendael
+226:malinois
+227:briard
+228:kelpie
+229:komondor
+230:Old English sheepdog, bobtail
+231:Shetland sheepdog, Shetland sheep dog, Shetland
+232:collie
+233:Border collie
+234:Bouvier des Flandres, Bouviers des Flandres
+235:Rottweiler
+236:German shepherd, German shepherd dog, German police dog, alsatian
+237:Doberman, Doberman pinscher
+238:miniature pinscher
+239:Greater Swiss Mountain dog
+240:Bernese mountain dog
+241:Appenzeller
+242:EntleBucher
+243:boxer
+244:bull mastiff
+245:Tibetan mastiff
+246:French bulldog
+247:Great Dane
+248:Saint Bernard, St Bernard
+249:Eskimo dog, husky
+250:malamute, malemute, Alaskan malamute
+251:Siberian husky
+252:dalmatian, coach dog, carriage dog
+253:affenpinscher, monkey pinscher, monkey dog
+254:basenji
+255:pug, pug-dog
+256:Leonberg
+257:Newfoundland, Newfoundland dog
+258:Great Pyrenees
+259:Samoyed, Samoyede
+260:Pomeranian
+261:chow, chow chow
+262:keeshond
+263:Brabancon griffon
+264:Pembroke, Pembroke Welsh corgi
+265:Cardigan, Cardigan Welsh corgi
+266:toy poodle
+267:miniature poodle
+268:standard poodle
+269:Mexican hairless
+270:timber wolf, grey wolf, gray wolf, Canis lupus
+271:white wolf, Arctic wolf, Canis lupus tundrarum
+272:red wolf, maned wolf, Canis rufus, Canis niger
+273:coyote, prairie wolf, brush wolf, Canis latrans
+274:dingo, warrigal, warragal, Canis dingo
+275:dhole, Cuon alpinus
+276:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+277:hyena, hyaena
+278:red fox, Vulpes vulpes
+279:kit fox, Vulpes macrotis
+280:Arctic fox, white fox, Alopex lagopus
+281:grey fox, gray fox, Urocyon cinereoargenteus
+282:tabby, tabby cat
+283:tiger cat
+284:Persian cat
+285:Siamese cat, Siamese
+286:Egyptian cat
+287:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+288:lynx, catamount
+289:leopard, Panthera pardus
+290:snow leopard, ounce, Panthera uncia
+291:jaguar, panther, Panthera onca, Felis onca
+292:lion, king of beasts, Panthera leo
+293:tiger, Panthera tigris
+294:cheetah, chetah, Acinonyx jubatus
+295:brown bear, bruin, Ursus arctos
+296:American black bear, black bear, Ursus americanus, Euarctos americanus
+297:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+298:sloth bear, Melursus ursinus, Ursus ursinus
+299:mongoose
+300:meerkat, mierkat
+301:tiger beetle
+302:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+303:ground beetle, carabid beetle
+304:long-horned beetle, longicorn, longicorn beetle
+305:leaf beetle, chrysomelid
+306:dung beetle
+307:rhinoceros beetle
+308:weevil
+309:fly
+310:bee
+311:ant, emmet, pismire
+312:grasshopper, hopper
+313:cricket
+314:walking stick, walkingstick, stick insect
+315:cockroach, roach
+316:mantis, mantid
+317:cicada, cicala
+318:leafhopper
+319:lacewing, lacewing fly
+320:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+321:damselfly
+322:admiral
+323:ringlet, ringlet butterfly
+324:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+325:cabbage butterfly
+326:sulphur butterfly, sulfur butterfly
+327:lycaenid, lycaenid butterfly
+328:starfish, sea star
+329:sea urchin
+330:sea cucumber, holothurian
+331:wood rabbit, cottontail, cottontail rabbit
+332:hare
+333:Angora, Angora rabbit
+334:hamster
+335:porcupine, hedgehog
+336:fox squirrel, eastern fox squirrel, Sciurus niger
+337:marmot
+338:beaver
+339:guinea pig, Cavia cobaya
+340:sorrel
+341:zebra
+342:hog, pig, grunter, squealer, Sus scrofa
+343:wild boar, boar, Sus scrofa
+344:warthog
+345:hippopotamus, hippo, river horse, Hippopotamus amphibius
+346:ox
+347:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+348:bison
+349:ram, tup
+350:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+351:ibex, Capra ibex
+352:hartebeest
+353:impala, Aepyceros melampus
+354:gazelle
+355:Arabian camel, dromedary, Camelus dromedarius
+356:llama
+357:weasel
+358:mink
+359:polecat, fitch, foulmart, foumart, Mustela putorius
+360:black-footed ferret, ferret, Mustela nigripes
+361:otter
+362:skunk, polecat, wood pussy
+363:badger
+364:armadillo
+365:three-toed sloth, ai, Bradypus tridactylus
+366:orangutan, orang, orangutang, Pongo pygmaeus
+367:gorilla, Gorilla gorilla
+368:chimpanzee, chimp, Pan troglodytes
+369:gibbon, Hylobates lar
+370:siamang, Hylobates syndactylus, Symphalangus syndactylus
+371:guenon, guenon monkey
+372:patas, hussar monkey, Erythrocebus patas
+373:baboon
+374:macaque
+375:langur
+376:colobus, colobus monkey
+377:proboscis monkey, Nasalis larvatus
+378:marmoset
+379:capuchin, ringtail, Cebus capucinus
+380:howler monkey, howler
+381:titi, titi monkey
+382:spider monkey, Ateles geoffroyi
+383:squirrel monkey, Saimiri sciureus
+384:Madagascar cat, ring-tailed lemur, Lemur catta
+385:indri, indris, Indri indri, Indri brevicaudatus
+386:Indian elephant, Elephas maximus
+387:African elephant, Loxodonta africana
+388:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+389:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+390:barracouta, snoek
+391:eel
+392:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+393:rock beauty, Holocanthus tricolor
+394:anemone fish
+395:sturgeon
+396:gar, garfish, garpike, billfish, Lepisosteus osseus
+397:lionfish
+398:puffer, pufferfish, blowfish, globefish
+399:abacus
+400:abaya
+401:academic gown, academic robe, judge's robe
+402:accordion, piano accordion, squeeze box
+403:acoustic guitar
+404:aircraft carrier, carrier, flattop, attack aircraft carrier
+405:airliner
+406:airship, dirigible
+407:altar
+408:ambulance
+409:amphibian, amphibious vehicle
+410:analog clock
+411:apiary, bee house
+412:apron
+413:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+414:assault rifle, assault gun
+415:backpack, back pack, knapsack, packsack, rucksack, haversack
+416:bakery, bakeshop, bakehouse
+417:balance beam, beam
+418:balloon
+419:ballpoint, ballpoint pen, ballpen, Biro
+420:Band Aid
+421:banjo
+422:bannister, banister, balustrade, balusters, handrail
+423:barbell
+424:barber chair
+425:barbershop
+426:barn
+427:barometer
+428:barrel, cask
+429:barrow, garden cart, lawn cart, wheelbarrow
+430:baseball
+431:basketball
+432:bassinet
+433:bassoon
+434:bathing cap, swimming cap
+435:bath towel
+436:bathtub, bathing tub, bath, tub
+437:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+438:beacon, lighthouse, beacon light, pharos
+439:beaker
+440:bearskin, busby, shako
+441:beer bottle
+442:beer glass
+443:bell cote, bell cot
+444:bib
+445:bicycle-built-for-two, tandem bicycle, tandem
+446:bikini, two-piece
+447:binder, ring-binder
+448:binoculars, field glasses, opera glasses
+449:birdhouse
+450:boathouse
+451:bobsled, bobsleigh, bob
+452:bolo tie, bolo, bola tie, bola
+453:bonnet, poke bonnet
+454:bookcase
+455:bookshop, bookstore, bookstall
+456:bottlecap
+457:bow
+458:bow tie, bow-tie, bowtie
+459:brass, memorial tablet, plaque
+460:brassiere, bra, bandeau
+461:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+462:breastplate, aegis, egis
+463:broom
+464:bucket, pail
+465:buckle
+466:bulletproof vest
+467:bullet train, bullet
+468:butcher shop, meat market
+469:cab, hack, taxi, taxicab
+470:caldron, cauldron
+471:candle, taper, wax light
+472:cannon
+473:canoe
+474:can opener, tin opener
+475:cardigan
+476:car mirror
+477:carousel, carrousel, merry-go-round, roundabout, whirligig
+478:carpenter's kit, tool kit
+479:carton
+480:car wheel
+481:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+482:cassette
+483:cassette player
+484:castle
+485:catamaran
+486:CD player
+487:cello, violoncello
+488:cellular telephone, cellular phone, cellphone, cell, mobile phone
+489:chain
+490:chainlink fence
+491:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+492:chain saw, chainsaw
+493:chest
+494:chiffonier, commode
+495:chime, bell, gong
+496:china cabinet, china closet
+497:Christmas stocking
+498:church, church building
+499:cinema, movie theater, movie theatre, movie house, picture palace
+500:cleaver, meat cleaver, chopper
+501:cliff dwelling
+502:cloak
+503:clog, geta, patten, sabot
+504:cocktail shaker
+505:coffee mug
+506:coffeepot
+507:coil, spiral, volute, whorl, helix
+508:combination lock
+509:computer keyboard, keypad
+510:confectionery, confectionary, candy store
+511:container ship, containership, container vessel
+512:convertible
+513:corkscrew, bottle screw
+514:cornet, horn, trumpet, trump
+515:cowboy boot
+516:cowboy hat, ten-gallon hat
+517:cradle
+518:crane
+519:crash helmet
+520:crate
+521:crib, cot
+522:Crock Pot
+523:croquet ball
+524:crutch
+525:cuirass
+526:dam, dike, dyke
+527:desk
+528:desktop computer
+529:dial telephone, dial phone
+530:diaper, nappy, napkin
+531:digital clock
+532:digital watch
+533:dining table, board
+534:dishrag, dishcloth
+535:dishwasher, dish washer, dishwashing machine
+536:disk brake, disc brake
+537:dock, dockage, docking facility
+538:dogsled, dog sled, dog sleigh
+539:dome
+540:doormat, welcome mat
+541:drilling platform, offshore rig
+542:drum, membranophone, tympan
+543:drumstick
+544:dumbbell
+545:Dutch oven
+546:electric fan, blower
+547:electric guitar
+548:electric locomotive
+549:entertainment center
+550:envelope
+551:espresso maker
+552:face powder
+553:feather boa, boa
+554:file, file cabinet, filing cabinet
+555:fireboat
+556:fire engine, fire truck
+557:fire screen, fireguard
+558:flagpole, flagstaff
+559:flute, transverse flute
+560:folding chair
+561:football helmet
+562:forklift
+563:fountain
+564:fountain pen
+565:four-poster
+566:freight car
+567:French horn, horn
+568:frying pan, frypan, skillet
+569:fur coat
+570:garbage truck, dustcart
+571:gasmask, respirator, gas helmet
+572:gas pump, gasoline pump, petrol pump, island dispenser
+573:goblet
+574:go-kart
+575:golf ball
+576:golfcart, golf cart
+577:gondola
+578:gong, tam-tam
+579:gown
+580:grand piano, grand
+581:greenhouse, nursery, glasshouse
+582:grille, radiator grille
+583:grocery store, grocery, food market, market
+584:guillotine
+585:hair slide
+586:hair spray
+587:half track
+588:hammer
+589:hamper
+590:hand blower, blow dryer, blow drier, hair dryer, hair drier
+591:hand-held computer, hand-held microcomputer
+592:handkerchief, hankie, hanky, hankey
+593:hard disc, hard disk, fixed disk
+594:harmonica, mouth organ, harp, mouth harp
+595:harp
+596:harvester, reaper
+597:hatchet
+598:holster
+599:home theater, home theatre
+600:honeycomb
+601:hook, claw
+602:hoopskirt, crinoline
+603:horizontal bar, high bar
+604:horse cart, horse-cart
+605:hourglass
+606:iPod
+607:iron, smoothing iron
+608:jack-o'-lantern
+609:jean, blue jean, denim
+610:jeep, landrover
+611:jersey, T-shirt, tee shirt
+612:jigsaw puzzle
+613:jinrikisha, ricksha, rickshaw
+614:joystick
+615:kimono
+616:knee pad
+617:knot
+618:lab coat, laboratory coat
+619:ladle
+620:lampshade, lamp shade
+621:laptop, laptop computer
+622:lawn mower, mower
+623:lens cap, lens cover
+624:letter opener, paper knife, paperknife
+625:library
+626:lifeboat
+627:lighter, light, igniter, ignitor
+628:limousine, limo
+629:liner, ocean liner
+630:lipstick, lip rouge
+631:Loafer
+632:lotion
+633:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+634:loupe, jeweler's loupe
+635:lumbermill, sawmill
+636:magnetic compass
+637:mailbag, postbag
+638:mailbox, letter box
+639:maillot
+640:maillot, tank suit
+641:manhole cover
+642:maraca
+643:marimba, xylophone
+644:mask
+645:matchstick
+646:maypole
+647:maze, labyrinth
+648:measuring cup
+649:medicine chest, medicine cabinet
+650:megalith, megalithic structure
+651:microphone, mike
+652:microwave, microwave oven
+653:military uniform
+654:milk can
+655:minibus
+656:miniskirt, mini
+657:minivan
+658:missile
+659:mitten
+660:mixing bowl
+661:mobile home, manufactured home
+662:Model T
+663:modem
+664:monastery
+665:monitor
+666:moped
+667:mortar
+668:mortarboard
+669:mosque
+670:mosquito net
+671:motor scooter, scooter
+672:mountain bike, all-terrain bike, off-roader
+673:mountain tent
+674:mouse, computer mouse
+675:mousetrap
+676:moving van
+677:muzzle
+678:nail
+679:neck brace
+680:necklace
+681:nipple
+682:notebook, notebook computer
+683:obelisk
+684:oboe, hautboy, hautbois
+685:ocarina, sweet potato
+686:odometer, hodometer, mileometer, milometer
+687:oil filter
+688:organ, pipe organ
+689:oscilloscope, scope, cathode-ray oscilloscope, CRO
+690:overskirt
+691:oxcart
+692:oxygen mask
+693:packet
+694:paddle, boat paddle
+695:paddlewheel, paddle wheel
+696:padlock
+697:paintbrush
+698:pajama, pyjama, pj's, jammies
+699:palace
+700:panpipe, pandean pipe, syrinx
+701:paper towel
+702:parachute, chute
+703:parallel bars, bars
+704:park bench
+705:parking meter
+706:passenger car, coach, carriage
+707:patio, terrace
+708:pay-phone, pay-station
+709:pedestal, plinth, footstall
+710:pencil box, pencil case
+711:pencil sharpener
+712:perfume, essence
+713:Petri dish
+714:photocopier
+715:pick, plectrum, plectron
+716:pickelhaube
+717:picket fence, paling
+718:pickup, pickup truck
+719:pier
+720:piggy bank, penny bank
+721:pill bottle
+722:pillow
+723:ping-pong ball
+724:pinwheel
+725:pirate, pirate ship
+726:pitcher, ewer
+727:plane, carpenter's plane, woodworking plane
+728:planetarium
+729:plastic bag
+730:plate rack
+731:plow, plough
+732:plunger, plumber's helper
+733:Polaroid camera, Polaroid Land camera
+734:pole
+735:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+736:poncho
+737:pool table, billiard table, snooker table
+738:pop bottle, soda bottle
+739:pot, flowerpot
+740:potter's wheel
+741:power drill
+742:prayer rug, prayer mat
+743:printer
+744:prison, prison house
+745:projectile, missile
+746:projector
+747:puck, hockey puck
+748:punching bag, punch bag, punching ball, punchball
+749:purse
+750:quill, quill pen
+751:quilt, comforter, comfort, puff
+752:racer, race car, racing car
+753:racket, racquet
+754:radiator
+755:radio, wireless
+756:radio telescope, radio reflector
+757:rain barrel
+758:recreational vehicle, RV, R.V.
+759:reel
+760:reflex camera
+761:refrigerator, icebox
+762:remote control, remote
+763:restaurant, eating house, eating place, eatery
+764:revolver, six-gun, six-shooter
+765:rifle
+766:rocking chair, rocker
+767:rotisserie
+768:rubber eraser, rubber, pencil eraser
+769:rugby ball
+770:rule, ruler
+771:running shoe
+772:safe
+773:safety pin
+774:saltshaker, salt shaker
+775:sandal
+776:sarong
+777:sax, saxophone
+778:scabbard
+779:scale, weighing machine
+780:school bus
+781:schooner
+782:scoreboard
+783:screen, CRT screen
+784:screw
+785:screwdriver
+786:seat belt, seatbelt
+787:sewing machine
+788:shield, buckler
+789:shoe shop, shoe-shop, shoe store
+790:shoji
+791:shopping basket
+792:shopping cart
+793:shovel
+794:shower cap
+795:shower curtain
+796:ski
+797:ski mask
+798:sleeping bag
+799:slide rule, slipstick
+800:sliding door
+801:slot, one-armed bandit
+802:snorkel
+803:snowmobile
+804:snowplow, snowplough
+805:soap dispenser
+806:soccer ball
+807:sock
+808:solar dish, solar collector, solar furnace
+809:sombrero
+810:soup bowl
+811:space bar
+812:space heater
+813:space shuttle
+814:spatula
+815:speedboat
+816:spider web, spider's web
+817:spindle
+818:sports car, sport car
+819:spotlight, spot
+820:stage
+821:steam locomotive
+822:steel arch bridge
+823:steel drum
+824:stethoscope
+825:stole
+826:stone wall
+827:stopwatch, stop watch
+828:stove
+829:strainer
+830:streetcar, tram, tramcar, trolley, trolley car
+831:stretcher
+832:studio couch, day bed
+833:stupa, tope
+834:submarine, pigboat, sub, U-boat
+835:suit, suit of clothes
+836:sundial
+837:sunglass
+838:sunglasses, dark glasses, shades
+839:sunscreen, sunblock, sun blocker
+840:suspension bridge
+841:swab, swob, mop
+842:sweatshirt
+843:swimming trunks, bathing trunks
+844:swing
+845:switch, electric switch, electrical switch
+846:syringe
+847:table lamp
+848:tank, army tank, armored combat vehicle, armoured combat vehicle
+849:tape player
+850:teapot
+851:teddy, teddy bear
+852:television, television system
+853:tennis ball
+854:thatch, thatched roof
+855:theater curtain, theatre curtain
+856:thimble
+857:thresher, thrasher, threshing machine
+858:throne
+859:tile roof
+860:toaster
+861:tobacco shop, tobacconist shop, tobacconist
+862:toilet seat
+863:torch
+864:totem pole
+865:tow truck, tow car, wrecker
+866:toyshop
+867:tractor
+868:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+869:tray
+870:trench coat
+871:tricycle, trike, velocipede
+872:trimaran
+873:tripod
+874:triumphal arch
+875:trolleybus, trolley coach, trackless trolley
+876:trombone
+877:tub, vat
+878:turnstile
+879:typewriter keyboard
+880:umbrella
+881:unicycle, monocycle
+882:upright, upright piano
+883:vacuum, vacuum cleaner
+884:vase
+885:vault
+886:velvet
+887:vending machine
+888:vestment
+889:viaduct
+890:violin, fiddle
+891:volleyball
+892:waffle iron
+893:wall clock
+894:wallet, billfold, notecase, pocketbook
+895:wardrobe, closet, press
+896:warplane, military plane
+897:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+898:washer, automatic washer, washing machine
+899:water bottle
+900:water jug
+901:water tower
+902:whiskey jug
+903:whistle
+904:wig
+905:window screen
+906:window shade
+907:Windsor tie
+908:wine bottle
+909:wing
+910:wok
+911:wooden spoon
+912:wool, woolen, woollen
+913:worm fence, snake fence, snake-rail fence, Virginia fence
+914:wreck
+915:yawl
+916:yurt
+917:web site, website, internet site, site
+918:comic book
+919:crossword puzzle, crossword
+920:street sign
+921:traffic light, traffic signal, stoplight
+922:book jacket, dust cover, dust jacket, dust wrapper
+923:menu
+924:plate
+925:guacamole
+926:consomme
+927:hot pot, hotpot
+928:trifle
+929:ice cream, icecream
+930:ice lolly, lolly, lollipop, popsicle
+931:French loaf
+932:bagel, beigel
+933:pretzel
+934:cheeseburger
+935:hotdog, hot dog, red hot
+936:mashed potato
+937:head cabbage
+938:broccoli
+939:cauliflower
+940:zucchini, courgette
+941:spaghetti squash
+942:acorn squash
+943:butternut squash
+944:cucumber, cuke
+945:artichoke, globe artichoke
+946:bell pepper
+947:cardoon
+948:mushroom
+949:Granny Smith
+950:strawberry
+951:orange
+952:lemon
+953:fig
+954:pineapple, ananas
+955:banana
+956:jackfruit, jak, jack
+957:custard apple
+958:pomegranate
+959:hay
+960:carbonara
+961:chocolate sauce, chocolate syrup
+962:dough
+963:meat loaf, meatloaf
+964:pizza, pizza pie
+965:potpie
+966:burrito
+967:red wine
+968:espresso
+969:cup
+970:eggnog
+971:alp
+972:bubble
+973:cliff, drop, drop-off
+974:coral reef
+975:geyser
+976:lakeside, lakeshore
+977:promontory, headland, head, foreland
+978:sandbar, sand bar
+979:seashore, coast, seacoast, sea-coast
+980:valley, vale
+981:volcano
+982:ballplayer, baseball player
+983:groom, bridegroom
+984:scuba diver
+985:rapeseed
+986:daisy
+987:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+988:corn
+989:acorn
+990:hip, rose hip, rosehip
+991:buckeye, horse chestnut, conker
+992:coral fungus
+993:agaric
+994:gyromitra
+995:stinkhorn, carrion fungus
+996:earthstar
+997:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+998:bolete
+999:ear, spike, capitulum
+1000:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/tensorflow/inception_v3_qat/model_config.yml b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..ccc496a4ffc1300ec6532f80175a75fc0de7590b
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/model_config.yml
@@ -0,0 +1,16 @@
+models:
+ name: inception_v3_quant_frozen # 模型输出名称
+ platform: tensorflow # 原始模型使用的框架
+ model_file_path: ./inception_v3_quant_frozen.pb # 原模型路径
+ subgraphs: # 描述输入输出shape等信息
+ input_size_list:
+ - 1, 299, 299, 3
+ inputs: # 输入tensor名称
+ - input
+ outputs: # 输出tensor名称
+ - InceptionV3/Logits/SpatialSqueeze
+ quantize: false # QAT已经量化过,不需要再量化
+ configs:
+ mean_values: [104, 117, 123] # rknn.config的mean_values参数
+ std_values: [128, 128, 128] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
diff --git a/rknn-toolkit2/examples/tensorflow/inception_v3_qat/test.py b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..2fd0539adc8cbe226034663d0e258463eda8f304
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/inception_v3_qat/test.py
@@ -0,0 +1,159 @@
+import numpy as np
+import cv2
+import os
+import urllib
+import tarfile
+import shutil
+import traceback
+import time
+import sys
+from rknn.api import RKNN
+
+PB_FILE = './inception_v3_quant_frozen.pb'
+RKNN_MODEL_PATH = './inception_v3_quant_frozen.rknn'
+INPUTS = ['input']
+OUTPUTS = ['InceptionV3/Logits/SpatialSqueeze']
+IMG_PATH = './goldfish_299x299.jpg'
+INPUT_SIZE = 299
+
+
+def show_outputs(outputs):
+ output = outputs[0][0]
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'inception_v3\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>4d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+def readable_speed(speed):
+ speed_bytes = float(speed)
+ speed_kbytes = speed_bytes / 1024
+ if speed_kbytes > 1024:
+ speed_mbytes = speed_kbytes / 1024
+ if speed_mbytes > 1024:
+ speed_gbytes = speed_mbytes / 1024
+ return "{:.2f} GB/s".format(speed_gbytes)
+ else:
+ return "{:.2f} MB/s".format(speed_mbytes)
+ else:
+ return "{:.2f} KB/s".format(speed_kbytes)
+
+
+def show_progress(blocknum, blocksize, totalsize):
+ speed = (blocknum * blocksize) / (time.time() - start_time)
+ speed_str = " Speed: {}".format(readable_speed(speed))
+ recv_size = blocknum * blocksize
+
+ f = sys.stdout
+ progress = (recv_size / totalsize)
+ progress_str = "{:.2f}%".format(progress * 100)
+ n = round(progress * 50)
+ s = ('#' * n).ljust(50, '-')
+ f.write(progress_str.ljust(8, ' ') + '[' + s + ']' + speed_str)
+ f.flush()
+ f.write('\r\n')
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # If inception_v3_quant_frozen.pb does not exist, download it.
+ # Download address:
+ # https://storage.googleapis.com/download.tensorflow.org/models/tflite_11_05_08/inception_v3_quant.tgz
+ # https://ftzr.zbox.filez.com/v2/delivery/data/95f00b0fc900458ba134f8b180b3f7a1/asset/inception_v3_qat/inception_v3_quant_frozen.pb
+ if not os.path.exists(PB_FILE):
+ print('--> Download {}'.format(PB_FILE))
+ url = 'https://storage.googleapis.com/download.tensorflow.org/models/tflite_11_05_08/inception_v3_quant.tgz'
+ download_file = 'inception_v3_quant.tgz'
+ try:
+ start_time = time.time()
+ urllib.request.urlretrieve(url, download_file, show_progress)
+ except:
+ print('Download {} failed.'.format(download_file))
+ print(traceback.format_exc())
+ exit(-1)
+ try:
+ tar = tarfile.open(download_file)
+ target_dir = os.path.splitext(download_file)[0]
+ if os.path.isdir(target_dir):
+ pass
+ else:
+ os.mkdir(target_dir)
+ tar.extractall(target_dir)
+ tar.close()
+ except:
+ print('Extract {} failed.'.format(download_file))
+ exit(-1)
+ pb_file = os.path.join(target_dir, PB_FILE)
+ if os.path.exists(pb_file):
+ shutil.copyfile(pb_file, './inception_v3_quant_frozen.pb')
+ shutil.rmtree(target_dir)
+ os.remove(download_file)
+ print('done')
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[104, 117, 123], std_values=[128, 128, 128], target_platform='rk3566')
+ print('done')
+
+ # Load model
+ print('--> Loading model')
+ ret = rknn.load_tensorflow(tf_pb=PB_FILE,
+ inputs=INPUTS,
+ outputs=OUTPUTS,
+ input_size_list=[[1, INPUT_SIZE, INPUT_SIZE, 3]])
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=False)
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn(RKNN_MODEL_PATH)
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread(IMG_PATH)
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./tensorflow_inception_v3_qat_0.npy', outputs[0])
+ x = outputs[0]
+ output = np.exp(x)/np.sum(np.exp(x))
+ outputs = [output]
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/README.md b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f96e5de066b591cadf47b53b836e3ac230ebf518
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/README.md
@@ -0,0 +1,23 @@
+# TensorFlow SSD Mobilenet V1
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://github.com/fvmassoli/Deep-Learning-SSD-Object-Detection
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will save the result of object detection to the 'result.jpg', as follows:
+
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/box_priors.txt b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/box_priors.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7246b073fe7fd8b1d1340536457c8aeac24cd5a3
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/box_priors.txt
@@ -0,0 +1,5 @@
+ 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.02631579 0.02631579 0.026315793 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.078947365 0.07894737 0.078947365 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.13157895 0.13157895 0.13157894 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.18421052 0.18421051 0.18421052 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.23684211 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.28947368 0.28947368 0.28947365 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.34210524 0.34210524 0.3421052 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.92105263 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.97368425 0.9736843 0.97368425 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.049999997 0.049999997 0.049999997 0.05 0.050000012 0.049999997 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.25 0.25 0.25 0.25 0.25000003 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000005 0.35000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.45 0.45000002 0.45000002 0.45000002 0.45000002 0.45000002 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.55 0.55 0.55 0.55 0.54999995 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.099999994 0.1 0.099999994 0.1 0.099999994 0.099999994 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.30000004 0.3 0.3 0.3 0.3 0.30000004 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.49999997 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.90000004 0.16666667 0.16666667 0.16666666 0.16666667 0.16666669 0.16666667 0.16666667 0.16666667 0.16666666 0.16666667 0.16666669 0.16666667 0.16666667 0.16666667 0.16666666 0.16666667 0.16666669 0.16666667 0.5 0.5 0.49999997 0.5 0.5 0.5 0.5 0.5 0.49999997 0.5 0.5 0.5 0.5 0.5 0.49999997 0.5 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.8333334 0.25 0.25 0.25 0.24999999 0.25 0.25 0.25 0.25 0.25 0.24999999 0.25 0.25 0.75 0.75 0.75 0.75 0.74999994 0.75 0.75 0.75 0.75 0.75 0.74999994 0.75 0.5 0.5 0.5 0.5 0.5 0.5
+ 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.02631579 0.026315793 0.02631579 0.078947365 0.078947365 0.07894737 0.13157895 0.13157894 0.13157895 0.18421052 0.18421052 0.18421051 0.23684211 0.23684211 0.23684211 0.28947368 0.28947365 0.28947368 0.34210524 0.3421052 0.34210524 0.39473683 0.39473683 0.39473683 0.4473684 0.4473684 0.4473684 0.5 0.5 0.5 0.5526316 0.5526316 0.5526316 0.6052632 0.6052632 0.6052632 0.65789473 0.65789473 0.65789473 0.71052635 0.71052635 0.71052635 0.7631579 0.7631579 0.7631579 0.8157895 0.8157895 0.8157895 0.8684211 0.8684211 0.8684211 0.92105263 0.92105263 0.92105263 0.97368425 0.97368425 0.9736843 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.049999997 0.049999997 0.050000004 0.050000012 0.05 0.049999997 0.15 0.14999999 0.15 0.15 0.15 0.15 0.25 0.25 0.25 0.25 0.25 0.25 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.35000002 0.45000002 0.45 0.45000002 0.45000002 0.45 0.45000002 0.55 0.55 0.55 0.55 0.55 0.55 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.65000004 0.75 0.75 0.75 0.75 0.75 0.75 0.85 0.85 0.85 0.85 0.85 0.85 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.95000005 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.10000001 0.099999994 0.1 0.099999994 0.1 0.099999994 0.3 0.3 0.3 0.29999998 0.3 0.30000004 0.5 0.5 0.5 0.5 0.5 0.49999997 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.70000005 0.9 0.90000004 0.90000004 0.9 0.90000004 0.90000004 0.16666667 0.16666669 0.16666667 0.16666669 0.16666667 0.16666667 0.49999997 0.5 0.5 0.50000006 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333333 0.8333334 0.8333334 0.16666667 0.16666669 0.16666667 0.16666669 0.16666667 0.16666667 0.49999997 0.5 0.5 0.50000006 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333333 0.8333334 0.8333334 0.16666667 0.16666669 0.16666667 0.16666669 0.16666667 0.16666667 0.49999997 0.5 0.5 0.50000006 0.5 0.5 0.8333334 0.8333334 0.8333334 0.8333333 0.8333334 0.8333334 0.25 0.25 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 0.75 0.75 0.25 0.25 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 0.75 0.75 0.5 0.5 0.5 0.5 0.5 0.5
+ 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.1 0.14142136 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.28284273 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142138 0.2828427 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.099999994 0.14142135 0.28284273 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.10000001 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142138 0.2828427 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142135 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.2828427 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142132 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.100000024 0.14142138 0.28284276 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.2474874 0.4949748 0.20207259 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748738 0.4949748 0.20207258 0.6062481 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.4949748 0.2020726 0.60624814 0.41833 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35000002 0.24748741 0.49497482 0.2020726 0.60624814 0.41832998 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35 0.24748737 0.4949748 0.20207256 0.6062481 0.41833 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497476 0.20207262 0.606248 0.41833004 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000002 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.35000008 0.24748743 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.34999996 0.24748737 0.49497485 0.20207262 0.60624814 0.41832995 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.50000006 0.3535534 0.7071068 0.28867513 0.8660687 0.57008773 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5000001 0.3535534 0.7071068 0.28867513 0.8660687 0.5700878 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.2886751 0.8660687 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5 0.3535534 0.7071068 0.28867507 0.8660688 0.5700877 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.5000001 0.3535534 0.70710677 0.2886752 0.8660687 0.5700878 0.65000004 0.45961943 0.91923887 0.37527767 1.1258893 0.7211102 0.65000004 0.45961943 0.91923887 0.37527767 1.1258893 0.7211102 0.65000004 0.45961943 0.91923887 0.37527767 1.1258893 0.7211102 0.6500001 0.4596194 0.9192388 0.37527764 1.1258893 0.7211102 0.6500001 0.4596194 0.9192388 0.37527764 1.1258893 0.7211102 0.6500001 0.4596194 0.9192388 0.37527764 1.1258893 0.7211102 0.6500001 0.45961946 0.9192388 0.3752777 1.1258893 0.72111017 0.6500001 0.45961946 0.9192388 0.3752777 1.1258893 0.72111017 0.6500001 0.45961946 0.9192388 0.3752777 1.1258893 0.72111017 0.8000001 0.5656855 1.131371 0.4618802 1.3857099 0.8717798 0.8000001 0.5656855 1.131371 0.4618802 1.3857099 0.8717798 0.80000013 0.5656855 1.131371 0.4618802 1.3857098 0.87177986 0.80000013 0.5656855 1.131371 0.4618802 1.3857098 0.87177986 0.95000005 0.6717515 1.343503 0.5484828 1.6455305 0.97467947
+ 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.1 0.28284273 0.14142136 0.099999994 0.28284273 0.14142138 0.099999994 0.2828427 0.14142138 0.099999994 0.28284273 0.14142135 0.099999994 0.28284273 0.14142135 0.10000001 0.2828427 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142138 0.100000024 0.2828427 0.14142138 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142135 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.2828427 0.14142132 0.100000024 0.28284276 0.14142132 0.100000024 0.28284276 0.14142138 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.34999996 0.4949747 0.24748735 0.60621774 0.20206249 0.41833 0.34999996 0.49497467 0.24748737 0.60621774 0.20206249 0.41833 0.34999996 0.49497473 0.24748737 0.60621774 0.20206249 0.41833 0.34999993 0.49497473 0.24748737 0.60621774 0.20206249 0.41832998 0.34999996 0.49497467 0.24748737 0.60621774 0.20206246 0.41833 0.35 0.49497473 0.24748734 0.60621774 0.20206249 0.41833004 0.35 0.49497473 0.2474873 0.60621774 0.20206249 0.41833004 0.3499999 0.49497473 0.2474873 0.6062178 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062177 0.20206249 0.41832995 0.3499999 0.49497467 0.2474873 0.6062178 0.20206255 0.41832995 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.49999997 0.7071067 0.35355335 0.8660254 0.2886607 0.57008773 0.5 0.7071067 0.35355335 0.8660253 0.2886607 0.5700878 0.5 0.7071067 0.35355332 0.86602545 0.28866073 0.5700877 0.5 0.70710665 0.3535533 0.86602545 0.28866076 0.5700877 0.49999994 0.7071067 0.3535534 0.8660253 0.28866065 0.5700878 0.6499999 0.9192387 0.45961934 1.1258329 0.3752589 0.7211102 0.64999986 0.9192387 0.4596193 1.125833 0.37525892 0.7211102 0.64999986 0.91923875 0.45961928 1.1258328 0.37525892 0.72111017 0.6499999 0.9192387 0.45961934 1.1258329 0.3752589 0.7211102 0.64999986 0.9192387 0.4596193 1.125833 0.37525892 0.7211102 0.64999986 0.91923875 0.45961928 1.1258328 0.37525892 0.72111017 0.6499999 0.9192387 0.45961934 1.1258329 0.3752589 0.7211102 0.64999986 0.9192387 0.4596193 1.125833 0.37525892 0.7211102 0.64999986 0.91923875 0.45961928 1.1258328 0.37525892 0.72111017 0.79999995 1.1313708 0.5656854 1.3856406 0.46185714 0.8717798 0.79999995 1.1313708 0.56568533 1.3856406 0.46185708 0.87177986 0.79999995 1.1313708 0.5656854 1.3856406 0.46185714 0.8717798 0.79999995 1.1313708 0.56568533 1.3856406 0.46185708 0.87177986 0.9499999 1.3435028 0.6717514 1.6454482 0.54845536 0.97467947
+
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/coco_labels_list.txt b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/coco_labels_list.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5a70ff82aa7b0fa7315ca591820e4cf7d2f5ad18
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/coco_labels_list.txt
@@ -0,0 +1,91 @@
+???
+person
+bicycle
+car
+motorcycle
+airplane
+bus
+train
+truck
+boat
+traffic light
+fire hydrant
+???
+stop sign
+parking meter
+bench
+bird
+cat
+dog
+horse
+sheep
+cow
+elephant
+bear
+zebra
+giraffe
+???
+backpack
+umbrella
+???
+???
+handbag
+tie
+suitcase
+frisbee
+skis
+snowboard
+sports ball
+kite
+baseball bat
+baseball glove
+skateboard
+surfboard
+tennis racket
+bottle
+???
+wine glass
+cup
+fork
+knife
+spoon
+bowl
+banana
+apple
+sandwich
+orange
+broccoli
+carrot
+hot dog
+pizza
+donut
+cake
+chair
+couch
+potted plant
+bed
+???
+dining table
+???
+???
+toilet
+???
+tv
+laptop
+mouse
+remote
+keyboard
+cell phone
+microwave
+oven
+toaster
+sink
+refrigerator
+???
+book
+clock
+vase
+scissors
+teddy bear
+hair drier
+toothbrush
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/dataset.txt b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d873b170508af32cc7c6fe8c8788d7c6b6a64363
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/dataset.txt
@@ -0,0 +1 @@
+road.bmp
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/model_config.yml b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..7e8c8acff5cc13b03eda5d26fd539446817fc648
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/model_config.yml
@@ -0,0 +1,18 @@
+models:
+ name: ssd_mobilenet_v1_coco # 模型输出名称
+ platform: tensorflow # 原始模型使用的框架
+ model_file_path: ./ssd_mobilenet_v1_coco_2017_11_17.pb # 原模型路径
+ subgraphs: # 描述输入输出shape等信息
+ input_size_list:
+ - 1, 300, 300, 3
+ inputs: # 输入tensor名称
+ - Preprocessor/sub
+ outputs: # 输出tensor名称
+ - concat
+ - concat_1
+ quantize: True # 开启量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ mean_values: [127.5, 127.5, 127.5] # rknn.config的mean_values参数
+ std_values: [127.5, 127.5, 127.5] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/result_truth.jpg b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/result_truth.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1013a036a09f0972ade974ac37aeb1c92de9a459
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/result_truth.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2871f841c637cf62a380e414cb0ee8854c9b59d14a5748e902543c31a940519c
+size 54338
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/road.bmp b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/road.bmp
new file mode 100755
index 0000000000000000000000000000000000000000..1254b968a88a9532921666b3efa6990039f1b6bf
Binary files /dev/null and b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/road.bmp differ
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/ssd_mobilenet_v1_coco_2017_11_17.pb b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/ssd_mobilenet_v1_coco_2017_11_17.pb
new file mode 100755
index 0000000000000000000000000000000000000000..6fa96a3604c72e47eea3ff69b2d8b68348001b17
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/ssd_mobilenet_v1_coco_2017_11_17.pb
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb3ce31b95a54162c25d951780a740a8767e6f9987298ec53d3146f0a5506858
+size 29112121
diff --git a/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/test.py b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..710e9a1ccbc8b490f8030437b2bb91ac22449298
--- /dev/null
+++ b/rknn-toolkit2/examples/tensorflow/ssd_mobilenet_v1/test.py
@@ -0,0 +1,224 @@
+import numpy as np
+
+import re
+import math
+import random
+import cv2
+
+from rknn.api import RKNN
+
+INPUT_SIZE = 300
+
+NUM_RESULTS = 1917
+NUM_CLASSES = 91
+
+Y_SCALE = 10.0
+X_SCALE = 10.0
+H_SCALE = 5.0
+W_SCALE = 5.0
+
+CLASSES = ('__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat',
+ 'traffic light', 'fire hydrant', '???', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse',
+ 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', '???', 'backpack', 'umbrella', '???', '???',
+ 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat',
+ 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', '???', 'wine glass', 'cup', 'fork',
+ 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
+ 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', '???', 'dining table', '???', '???', 'toilet',
+ '???', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink',
+ 'refrigerator', '???', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush')
+
+def expit(x):
+ return 1. / (1. + math.exp(-x))
+
+
+def unexpit(y):
+ return -1.0 * math.log((1.0 / y) - 1.0)
+
+
+def CalculateOverlap(xmin0, ymin0, xmax0, ymax0, xmin1, ymin1, xmax1, ymax1):
+ w = max(0.0, min(xmax0, xmax1) - max(xmin0, xmin1))
+ h = max(0.0, min(ymax0, ymax1) - max(ymin0, ymin1))
+ i = w * h
+ u = (xmax0 - xmin0) * (ymax0 - ymin0) + (xmax1 - xmin1) * (ymax1 - ymin1) - i
+
+ if u <= 0.0:
+ return 0.0
+
+ return i / u
+
+
+def load_box_priors():
+ box_priors_ = []
+ fp = open('./box_priors.txt', 'r')
+ ls = fp.readlines()
+ for s in ls:
+ aList = re.findall('([-+]?\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?', s)
+ for ss in aList:
+ aNum = float((ss[0]+ss[2]))
+ box_priors_.append(aNum)
+ fp.close()
+
+ box_priors = np.array(box_priors_)
+ box_priors = box_priors.reshape(4, NUM_RESULTS)
+
+ return box_priors
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[127.5, 127.5, 127.5], std_values=[127.5, 127.5, 127.5], target_platform='rk3566')
+ print('done')
+
+ # Load model (from https://github.com/fvmassoli/Deep-Learning-SSD-Object-Detection)
+ print('--> Loading model')
+ ret = rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v1_coco_2017_11_17.pb',
+ inputs=['Preprocessor/sub'],
+ outputs=['concat', 'concat_1'],
+ input_size_list=[[1, INPUT_SIZE, INPUT_SIZE, 3]])
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build Model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./ssd_mobilenet_v1_coco.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ orig_img = cv2.imread('./road.bmp')
+ img = cv2.cvtColor(orig_img, cv2.COLOR_BGR2RGB)
+ img = cv2.resize(img, (INPUT_SIZE, INPUT_SIZE), interpolation=cv2.INTER_CUBIC)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ print('done')
+
+ predictions = outputs[0].reshape((1, NUM_RESULTS, 4))
+ np.save('./tensorflow_ssd_mobilenet_v1_0.npy', outputs[0])
+ outputClasses = outputs[1].reshape((1, NUM_RESULTS, NUM_CLASSES))
+ np.save('./tensorflow_ssd_mobilenet_v1_1.npy', outputs[0])
+ candidateBox = np.zeros([2, NUM_RESULTS], dtype=int)
+ classScore = [-1000.0] * NUM_RESULTS
+ vaildCnt = 0
+
+ box_priors = load_box_priors()
+
+ # Post Process
+ # got valid candidate box
+ for i in range(0, NUM_RESULTS):
+ topClassScore = -1000
+ topClassScoreIndex = -1
+
+ # Skip the first catch-all class.
+ for j in range(1, NUM_CLASSES):
+ score = expit(outputClasses[0][i][j])
+
+ if score > topClassScore:
+ topClassScoreIndex = j
+ topClassScore = score
+
+ if topClassScore > 0.4:
+ candidateBox[0][vaildCnt] = i
+ candidateBox[1][vaildCnt] = topClassScoreIndex
+ classScore[vaildCnt] = topClassScore
+ vaildCnt += 1
+
+ # calc position
+ for i in range(0, vaildCnt):
+ if candidateBox[0][i] == -1:
+ continue
+
+ n = candidateBox[0][i]
+ ycenter = predictions[0][n][0] / Y_SCALE * box_priors[2][n] + box_priors[0][n]
+ xcenter = predictions[0][n][1] / X_SCALE * box_priors[3][n] + box_priors[1][n]
+ h = math.exp(predictions[0][n][2] / H_SCALE) * box_priors[2][n]
+ w = math.exp(predictions[0][n][3] / W_SCALE) * box_priors[3][n]
+
+ ymin = ycenter - h / 2.
+ xmin = xcenter - w / 2.
+ ymax = ycenter + h / 2.
+ xmax = xcenter + w / 2.
+
+ predictions[0][n][0] = ymin
+ predictions[0][n][1] = xmin
+ predictions[0][n][2] = ymax
+ predictions[0][n][3] = xmax
+
+ # NMS
+ for i in range(0, vaildCnt):
+ if candidateBox[0][i] == -1:
+ continue
+
+ n = candidateBox[0][i]
+ xmin0 = predictions[0][n][1]
+ ymin0 = predictions[0][n][0]
+ xmax0 = predictions[0][n][3]
+ ymax0 = predictions[0][n][2]
+
+ for j in range(i+1, vaildCnt):
+ m = candidateBox[0][j]
+
+ if m == -1:
+ continue
+
+ xmin1 = predictions[0][m][1]
+ ymin1 = predictions[0][m][0]
+ xmax1 = predictions[0][m][3]
+ ymax1 = predictions[0][m][2]
+
+ iou = CalculateOverlap(xmin0, ymin0, xmax0, ymax0, xmin1, ymin1, xmax1, ymax1)
+
+ if iou >= 0.45:
+ candidateBox[0][j] = -1
+
+ # Draw result
+ if vaildCnt != 0:
+ print("{:^12} {:^12} {}".format('class', 'score', 'xmin, ymin, xmax, ymax'))
+ print('-' * 50)
+ for i in range(0, vaildCnt):
+ if candidateBox[0][i] == -1:
+ continue
+
+ n = candidateBox[0][i]
+
+ xmin = max(0.0, min(1.0, predictions[0][n][1])) * INPUT_SIZE
+ ymin = max(0.0, min(1.0, predictions[0][n][0])) * INPUT_SIZE
+ xmax = max(0.0, min(1.0, predictions[0][n][3])) * INPUT_SIZE
+ ymax = max(0.0, min(1.0, predictions[0][n][2])) * INPUT_SIZE
+
+ print("{:^12} {:^12.3f} [{:>4}, {:>4}, {:>4}, {:>4}]".format(CLASSES[candidateBox[1][i]], classScore[i],
+ int(xmin), int(ymin), int(xmax), int(ymax)))
+ cv2.rectangle(orig_img, (int(xmin), int(ymin)), (int(xmax), int(ymax)),
+ (random.random()*255, random.random()*255, random.random()*255), 3)
+
+ cv2.imwrite("result.jpg", orig_img)
+ print('Save results to result.jpg!')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1/README.md b/rknn-toolkit2/examples/tflite/mobilenet_v1/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..fc7467087f745dc2f93c951c22aff03fc50935cc
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1/README.md
@@ -0,0 +1,30 @@
+# TFLite MobileNet V1
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://www.tensorflow.org/lite/guide/hosted_models?hl=zh-cn
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[ 156] score:0.928223 class:"Shih-Tzu"
+[ 155] score:0.063171 class:"Pekinese, Pekingese, Peke"
+[ 205] score:0.004299 class:"Lhasa, Lhasa apso"
+[ 284] score:0.003096 class:"Persian cat"
+[ 285] score:0.000171 class:"Siamese cat, Siamese"
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1/dataset.txt b/rknn-toolkit2/examples/tflite/mobilenet_v1/dataset.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9078c68db586a0251bdd41282d67f4d256b3abc3
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1/dataset.txt
@@ -0,0 +1 @@
+dog_224x224.jpg
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1/dog_224x224.jpg b/rknn-toolkit2/examples/tflite/mobilenet_v1/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1/labels.txt b/rknn-toolkit2/examples/tflite/mobilenet_v1/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dcd01c14b4635096ae295a8e81de0f65188bc1f8
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1/labels.txt
@@ -0,0 +1,1001 @@
+0:__background__
+1:tench, Tinca tinca
+2:goldfish, Carassius auratus
+3:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+4:tiger shark, Galeocerdo cuvieri
+5:hammerhead, hammerhead shark
+6:electric ray, crampfish, numbfish, torpedo
+7:stingray
+8:cock
+9:hen
+10:ostrich, Struthio camelus
+11:brambling, Fringilla montifringilla
+12:goldfinch, Carduelis carduelis
+13:house finch, linnet, Carpodacus mexicanus
+14:junco, snowbird
+15:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+16:robin, American robin, Turdus migratorius
+17:bulbul
+18:jay
+19:magpie
+20:chickadee
+21:water ouzel, dipper
+22:kite
+23:bald eagle, American eagle, Haliaeetus leucocephalus
+24:vulture
+25:great grey owl, great gray owl, Strix nebulosa
+26:European fire salamander, Salamandra salamandra
+27:common newt, Triturus vulgaris
+28:eft
+29:spotted salamander, Ambystoma maculatum
+30:axolotl, mud puppy, Ambystoma mexicanum
+31:bullfrog, Rana catesbeiana
+32:tree frog, tree-frog
+33:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+34:loggerhead, loggerhead turtle, Caretta caretta
+35:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+36:mud turtle
+37:terrapin
+38:box turtle, box tortoise
+39:banded gecko
+40:common iguana, iguana, Iguana iguana
+41:American chameleon, anole, Anolis carolinensis
+42:whiptail, whiptail lizard
+43:agama
+44:frilled lizard, Chlamydosaurus kingi
+45:alligator lizard
+46:Gila monster, Heloderma suspectum
+47:green lizard, Lacerta viridis
+48:African chameleon, Chamaeleo chamaeleon
+49:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+50:African crocodile, Nile crocodile, Crocodylus niloticus
+51:American alligator, Alligator mississipiensis
+52:triceratops
+53:thunder snake, worm snake, Carphophis amoenus
+54:ringneck snake, ring-necked snake, ring snake
+55:hognose snake, puff adder, sand viper
+56:green snake, grass snake
+57:king snake, kingsnake
+58:garter snake, grass snake
+59:water snake
+60:vine snake
+61:night snake, Hypsiglena torquata
+62:boa constrictor, Constrictor constrictor
+63:rock python, rock snake, Python sebae
+64:Indian cobra, Naja naja
+65:green mamba
+66:sea snake
+67:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+68:diamondback, diamondback rattlesnake, Crotalus adamanteus
+69:sidewinder, horned rattlesnake, Crotalus cerastes
+70:trilobite
+71:harvestman, daddy longlegs, Phalangium opilio
+72:scorpion
+73:black and gold garden spider, Argiope aurantia
+74:barn spider, Araneus cavaticus
+75:garden spider, Aranea diademata
+76:black widow, Latrodectus mactans
+77:tarantula
+78:wolf spider, hunting spider
+79:tick
+80:centipede
+81:black grouse
+82:ptarmigan
+83:ruffed grouse, partridge, Bonasa umbellus
+84:prairie chicken, prairie grouse, prairie fowl
+85:peacock
+86:quail
+87:partridge
+88:African grey, African gray, Psittacus erithacus
+89:macaw
+90:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+91:lorikeet
+92:coucal
+93:bee eater
+94:hornbill
+95:hummingbird
+96:jacamar
+97:toucan
+98:drake
+99:red-breasted merganser, Mergus serrator
+100:goose
+101:black swan, Cygnus atratus
+102:tusker
+103:echidna, spiny anteater, anteater
+104:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+105:wallaby, brush kangaroo
+106:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+107:wombat
+108:jellyfish
+109:sea anemone, anemone
+110:brain coral
+111:flatworm, platyhelminth
+112:nematode, nematode worm, roundworm
+113:conch
+114:snail
+115:slug
+116:sea slug, nudibranch
+117:chiton, coat-of-mail shell, sea cradle, polyplacophore
+118:chambered nautilus, pearly nautilus, nautilus
+119:Dungeness crab, Cancer magister
+120:rock crab, Cancer irroratus
+121:fiddler crab
+122:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+123:American lobster, Northern lobster, Maine lobster, Homarus americanus
+124:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+125:crayfish, crawfish, crawdad, crawdaddy
+126:hermit crab
+127:isopod
+128:white stork, Ciconia ciconia
+129:black stork, Ciconia nigra
+130:spoonbill
+131:flamingo
+132:little blue heron, Egretta caerulea
+133:American egret, great white heron, Egretta albus
+134:bittern
+135:crane
+136:limpkin, Aramus pictus
+137:European gallinule, Porphyrio porphyrio
+138:American coot, marsh hen, mud hen, water hen, Fulica americana
+139:bustard
+140:ruddy turnstone, Arenaria interpres
+141:red-backed sandpiper, dunlin, Erolia alpina
+142:redshank, Tringa totanus
+143:dowitcher
+144:oystercatcher, oyster catcher
+145:pelican
+146:king penguin, Aptenodytes patagonica
+147:albatross, mollymawk
+148:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+149:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+150:dugong, Dugong dugon
+151:sea lion
+152:Chihuahua
+153:Japanese spaniel
+154:Maltese dog, Maltese terrier, Maltese
+155:Pekinese, Pekingese, Peke
+156:Shih-Tzu
+157:Blenheim spaniel
+158:papillon
+159:toy terrier
+160:Rhodesian ridgeback
+161:Afghan hound, Afghan
+162:basset, basset hound
+163:beagle
+164:bloodhound, sleuthhound
+165:bluetick
+166:black-and-tan coonhound
+167:Walker hound, Walker foxhound
+168:English foxhound
+169:redbone
+170:borzoi, Russian wolfhound
+171:Irish wolfhound
+172:Italian greyhound
+173:whippet
+174:Ibizan hound, Ibizan Podenco
+175:Norwegian elkhound, elkhound
+176:otterhound, otter hound
+177:Saluki, gazelle hound
+178:Scottish deerhound, deerhound
+179:Weimaraner
+180:Staffordshire bullterrier, Staffordshire bull terrier
+181:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+182:Bedlington terrier
+183:Border terrier
+184:Kerry blue terrier
+185:Irish terrier
+186:Norfolk terrier
+187:Norwich terrier
+188:Yorkshire terrier
+189:wire-haired fox terrier
+190:Lakeland terrier
+191:Sealyham terrier, Sealyham
+192:Airedale, Airedale terrier
+193:cairn, cairn terrier
+194:Australian terrier
+195:Dandie Dinmont, Dandie Dinmont terrier
+196:Boston bull, Boston terrier
+197:miniature schnauzer
+198:giant schnauzer
+199:standard schnauzer
+200:Scotch terrier, Scottish terrier, Scottie
+201:Tibetan terrier, chrysanthemum dog
+202:silky terrier, Sydney silky
+203:soft-coated wheaten terrier
+204:West Highland white terrier
+205:Lhasa, Lhasa apso
+206:flat-coated retriever
+207:curly-coated retriever
+208:golden retriever
+209:Labrador retriever
+210:Chesapeake Bay retriever
+211:German short-haired pointer
+212:vizsla, Hungarian pointer
+213:English setter
+214:Irish setter, red setter
+215:Gordon setter
+216:Brittany spaniel
+217:clumber, clumber spaniel
+218:English springer, English springer spaniel
+219:Welsh springer spaniel
+220:cocker spaniel, English cocker spaniel, cocker
+221:Sussex spaniel
+222:Irish water spaniel
+223:kuvasz
+224:schipperke
+225:groenendael
+226:malinois
+227:briard
+228:kelpie
+229:komondor
+230:Old English sheepdog, bobtail
+231:Shetland sheepdog, Shetland sheep dog, Shetland
+232:collie
+233:Border collie
+234:Bouvier des Flandres, Bouviers des Flandres
+235:Rottweiler
+236:German shepherd, German shepherd dog, German police dog, alsatian
+237:Doberman, Doberman pinscher
+238:miniature pinscher
+239:Greater Swiss Mountain dog
+240:Bernese mountain dog
+241:Appenzeller
+242:EntleBucher
+243:boxer
+244:bull mastiff
+245:Tibetan mastiff
+246:French bulldog
+247:Great Dane
+248:Saint Bernard, St Bernard
+249:Eskimo dog, husky
+250:malamute, malemute, Alaskan malamute
+251:Siberian husky
+252:dalmatian, coach dog, carriage dog
+253:affenpinscher, monkey pinscher, monkey dog
+254:basenji
+255:pug, pug-dog
+256:Leonberg
+257:Newfoundland, Newfoundland dog
+258:Great Pyrenees
+259:Samoyed, Samoyede
+260:Pomeranian
+261:chow, chow chow
+262:keeshond
+263:Brabancon griffon
+264:Pembroke, Pembroke Welsh corgi
+265:Cardigan, Cardigan Welsh corgi
+266:toy poodle
+267:miniature poodle
+268:standard poodle
+269:Mexican hairless
+270:timber wolf, grey wolf, gray wolf, Canis lupus
+271:white wolf, Arctic wolf, Canis lupus tundrarum
+272:red wolf, maned wolf, Canis rufus, Canis niger
+273:coyote, prairie wolf, brush wolf, Canis latrans
+274:dingo, warrigal, warragal, Canis dingo
+275:dhole, Cuon alpinus
+276:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+277:hyena, hyaena
+278:red fox, Vulpes vulpes
+279:kit fox, Vulpes macrotis
+280:Arctic fox, white fox, Alopex lagopus
+281:grey fox, gray fox, Urocyon cinereoargenteus
+282:tabby, tabby cat
+283:tiger cat
+284:Persian cat
+285:Siamese cat, Siamese
+286:Egyptian cat
+287:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+288:lynx, catamount
+289:leopard, Panthera pardus
+290:snow leopard, ounce, Panthera uncia
+291:jaguar, panther, Panthera onca, Felis onca
+292:lion, king of beasts, Panthera leo
+293:tiger, Panthera tigris
+294:cheetah, chetah, Acinonyx jubatus
+295:brown bear, bruin, Ursus arctos
+296:American black bear, black bear, Ursus americanus, Euarctos americanus
+297:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+298:sloth bear, Melursus ursinus, Ursus ursinus
+299:mongoose
+300:meerkat, mierkat
+301:tiger beetle
+302:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+303:ground beetle, carabid beetle
+304:long-horned beetle, longicorn, longicorn beetle
+305:leaf beetle, chrysomelid
+306:dung beetle
+307:rhinoceros beetle
+308:weevil
+309:fly
+310:bee
+311:ant, emmet, pismire
+312:grasshopper, hopper
+313:cricket
+314:walking stick, walkingstick, stick insect
+315:cockroach, roach
+316:mantis, mantid
+317:cicada, cicala
+318:leafhopper
+319:lacewing, lacewing fly
+320:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+321:damselfly
+322:admiral
+323:ringlet, ringlet butterfly
+324:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+325:cabbage butterfly
+326:sulphur butterfly, sulfur butterfly
+327:lycaenid, lycaenid butterfly
+328:starfish, sea star
+329:sea urchin
+330:sea cucumber, holothurian
+331:wood rabbit, cottontail, cottontail rabbit
+332:hare
+333:Angora, Angora rabbit
+334:hamster
+335:porcupine, hedgehog
+336:fox squirrel, eastern fox squirrel, Sciurus niger
+337:marmot
+338:beaver
+339:guinea pig, Cavia cobaya
+340:sorrel
+341:zebra
+342:hog, pig, grunter, squealer, Sus scrofa
+343:wild boar, boar, Sus scrofa
+344:warthog
+345:hippopotamus, hippo, river horse, Hippopotamus amphibius
+346:ox
+347:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+348:bison
+349:ram, tup
+350:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+351:ibex, Capra ibex
+352:hartebeest
+353:impala, Aepyceros melampus
+354:gazelle
+355:Arabian camel, dromedary, Camelus dromedarius
+356:llama
+357:weasel
+358:mink
+359:polecat, fitch, foulmart, foumart, Mustela putorius
+360:black-footed ferret, ferret, Mustela nigripes
+361:otter
+362:skunk, polecat, wood pussy
+363:badger
+364:armadillo
+365:three-toed sloth, ai, Bradypus tridactylus
+366:orangutan, orang, orangutang, Pongo pygmaeus
+367:gorilla, Gorilla gorilla
+368:chimpanzee, chimp, Pan troglodytes
+369:gibbon, Hylobates lar
+370:siamang, Hylobates syndactylus, Symphalangus syndactylus
+371:guenon, guenon monkey
+372:patas, hussar monkey, Erythrocebus patas
+373:baboon
+374:macaque
+375:langur
+376:colobus, colobus monkey
+377:proboscis monkey, Nasalis larvatus
+378:marmoset
+379:capuchin, ringtail, Cebus capucinus
+380:howler monkey, howler
+381:titi, titi monkey
+382:spider monkey, Ateles geoffroyi
+383:squirrel monkey, Saimiri sciureus
+384:Madagascar cat, ring-tailed lemur, Lemur catta
+385:indri, indris, Indri indri, Indri brevicaudatus
+386:Indian elephant, Elephas maximus
+387:African elephant, Loxodonta africana
+388:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+389:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+390:barracouta, snoek
+391:eel
+392:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+393:rock beauty, Holocanthus tricolor
+394:anemone fish
+395:sturgeon
+396:gar, garfish, garpike, billfish, Lepisosteus osseus
+397:lionfish
+398:puffer, pufferfish, blowfish, globefish
+399:abacus
+400:abaya
+401:academic gown, academic robe, judge's robe
+402:accordion, piano accordion, squeeze box
+403:acoustic guitar
+404:aircraft carrier, carrier, flattop, attack aircraft carrier
+405:airliner
+406:airship, dirigible
+407:altar
+408:ambulance
+409:amphibian, amphibious vehicle
+410:analog clock
+411:apiary, bee house
+412:apron
+413:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+414:assault rifle, assault gun
+415:backpack, back pack, knapsack, packsack, rucksack, haversack
+416:bakery, bakeshop, bakehouse
+417:balance beam, beam
+418:balloon
+419:ballpoint, ballpoint pen, ballpen, Biro
+420:Band Aid
+421:banjo
+422:bannister, banister, balustrade, balusters, handrail
+423:barbell
+424:barber chair
+425:barbershop
+426:barn
+427:barometer
+428:barrel, cask
+429:barrow, garden cart, lawn cart, wheelbarrow
+430:baseball
+431:basketball
+432:bassinet
+433:bassoon
+434:bathing cap, swimming cap
+435:bath towel
+436:bathtub, bathing tub, bath, tub
+437:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+438:beacon, lighthouse, beacon light, pharos
+439:beaker
+440:bearskin, busby, shako
+441:beer bottle
+442:beer glass
+443:bell cote, bell cot
+444:bib
+445:bicycle-built-for-two, tandem bicycle, tandem
+446:bikini, two-piece
+447:binder, ring-binder
+448:binoculars, field glasses, opera glasses
+449:birdhouse
+450:boathouse
+451:bobsled, bobsleigh, bob
+452:bolo tie, bolo, bola tie, bola
+453:bonnet, poke bonnet
+454:bookcase
+455:bookshop, bookstore, bookstall
+456:bottlecap
+457:bow
+458:bow tie, bow-tie, bowtie
+459:brass, memorial tablet, plaque
+460:brassiere, bra, bandeau
+461:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+462:breastplate, aegis, egis
+463:broom
+464:bucket, pail
+465:buckle
+466:bulletproof vest
+467:bullet train, bullet
+468:butcher shop, meat market
+469:cab, hack, taxi, taxicab
+470:caldron, cauldron
+471:candle, taper, wax light
+472:cannon
+473:canoe
+474:can opener, tin opener
+475:cardigan
+476:car mirror
+477:carousel, carrousel, merry-go-round, roundabout, whirligig
+478:carpenter's kit, tool kit
+479:carton
+480:car wheel
+481:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+482:cassette
+483:cassette player
+484:castle
+485:catamaran
+486:CD player
+487:cello, violoncello
+488:cellular telephone, cellular phone, cellphone, cell, mobile phone
+489:chain
+490:chainlink fence
+491:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+492:chain saw, chainsaw
+493:chest
+494:chiffonier, commode
+495:chime, bell, gong
+496:china cabinet, china closet
+497:Christmas stocking
+498:church, church building
+499:cinema, movie theater, movie theatre, movie house, picture palace
+500:cleaver, meat cleaver, chopper
+501:cliff dwelling
+502:cloak
+503:clog, geta, patten, sabot
+504:cocktail shaker
+505:coffee mug
+506:coffeepot
+507:coil, spiral, volute, whorl, helix
+508:combination lock
+509:computer keyboard, keypad
+510:confectionery, confectionary, candy store
+511:container ship, containership, container vessel
+512:convertible
+513:corkscrew, bottle screw
+514:cornet, horn, trumpet, trump
+515:cowboy boot
+516:cowboy hat, ten-gallon hat
+517:cradle
+518:crane
+519:crash helmet
+520:crate
+521:crib, cot
+522:Crock Pot
+523:croquet ball
+524:crutch
+525:cuirass
+526:dam, dike, dyke
+527:desk
+528:desktop computer
+529:dial telephone, dial phone
+530:diaper, nappy, napkin
+531:digital clock
+532:digital watch
+533:dining table, board
+534:dishrag, dishcloth
+535:dishwasher, dish washer, dishwashing machine
+536:disk brake, disc brake
+537:dock, dockage, docking facility
+538:dogsled, dog sled, dog sleigh
+539:dome
+540:doormat, welcome mat
+541:drilling platform, offshore rig
+542:drum, membranophone, tympan
+543:drumstick
+544:dumbbell
+545:Dutch oven
+546:electric fan, blower
+547:electric guitar
+548:electric locomotive
+549:entertainment center
+550:envelope
+551:espresso maker
+552:face powder
+553:feather boa, boa
+554:file, file cabinet, filing cabinet
+555:fireboat
+556:fire engine, fire truck
+557:fire screen, fireguard
+558:flagpole, flagstaff
+559:flute, transverse flute
+560:folding chair
+561:football helmet
+562:forklift
+563:fountain
+564:fountain pen
+565:four-poster
+566:freight car
+567:French horn, horn
+568:frying pan, frypan, skillet
+569:fur coat
+570:garbage truck, dustcart
+571:gasmask, respirator, gas helmet
+572:gas pump, gasoline pump, petrol pump, island dispenser
+573:goblet
+574:go-kart
+575:golf ball
+576:golfcart, golf cart
+577:gondola
+578:gong, tam-tam
+579:gown
+580:grand piano, grand
+581:greenhouse, nursery, glasshouse
+582:grille, radiator grille
+583:grocery store, grocery, food market, market
+584:guillotine
+585:hair slide
+586:hair spray
+587:half track
+588:hammer
+589:hamper
+590:hand blower, blow dryer, blow drier, hair dryer, hair drier
+591:hand-held computer, hand-held microcomputer
+592:handkerchief, hankie, hanky, hankey
+593:hard disc, hard disk, fixed disk
+594:harmonica, mouth organ, harp, mouth harp
+595:harp
+596:harvester, reaper
+597:hatchet
+598:holster
+599:home theater, home theatre
+600:honeycomb
+601:hook, claw
+602:hoopskirt, crinoline
+603:horizontal bar, high bar
+604:horse cart, horse-cart
+605:hourglass
+606:iPod
+607:iron, smoothing iron
+608:jack-o'-lantern
+609:jean, blue jean, denim
+610:jeep, landrover
+611:jersey, T-shirt, tee shirt
+612:jigsaw puzzle
+613:jinrikisha, ricksha, rickshaw
+614:joystick
+615:kimono
+616:knee pad
+617:knot
+618:lab coat, laboratory coat
+619:ladle
+620:lampshade, lamp shade
+621:laptop, laptop computer
+622:lawn mower, mower
+623:lens cap, lens cover
+624:letter opener, paper knife, paperknife
+625:library
+626:lifeboat
+627:lighter, light, igniter, ignitor
+628:limousine, limo
+629:liner, ocean liner
+630:lipstick, lip rouge
+631:Loafer
+632:lotion
+633:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+634:loupe, jeweler's loupe
+635:lumbermill, sawmill
+636:magnetic compass
+637:mailbag, postbag
+638:mailbox, letter box
+639:maillot
+640:maillot, tank suit
+641:manhole cover
+642:maraca
+643:marimba, xylophone
+644:mask
+645:matchstick
+646:maypole
+647:maze, labyrinth
+648:measuring cup
+649:medicine chest, medicine cabinet
+650:megalith, megalithic structure
+651:microphone, mike
+652:microwave, microwave oven
+653:military uniform
+654:milk can
+655:minibus
+656:miniskirt, mini
+657:minivan
+658:missile
+659:mitten
+660:mixing bowl
+661:mobile home, manufactured home
+662:Model T
+663:modem
+664:monastery
+665:monitor
+666:moped
+667:mortar
+668:mortarboard
+669:mosque
+670:mosquito net
+671:motor scooter, scooter
+672:mountain bike, all-terrain bike, off-roader
+673:mountain tent
+674:mouse, computer mouse
+675:mousetrap
+676:moving van
+677:muzzle
+678:nail
+679:neck brace
+680:necklace
+681:nipple
+682:notebook, notebook computer
+683:obelisk
+684:oboe, hautboy, hautbois
+685:ocarina, sweet potato
+686:odometer, hodometer, mileometer, milometer
+687:oil filter
+688:organ, pipe organ
+689:oscilloscope, scope, cathode-ray oscilloscope, CRO
+690:overskirt
+691:oxcart
+692:oxygen mask
+693:packet
+694:paddle, boat paddle
+695:paddlewheel, paddle wheel
+696:padlock
+697:paintbrush
+698:pajama, pyjama, pj's, jammies
+699:palace
+700:panpipe, pandean pipe, syrinx
+701:paper towel
+702:parachute, chute
+703:parallel bars, bars
+704:park bench
+705:parking meter
+706:passenger car, coach, carriage
+707:patio, terrace
+708:pay-phone, pay-station
+709:pedestal, plinth, footstall
+710:pencil box, pencil case
+711:pencil sharpener
+712:perfume, essence
+713:Petri dish
+714:photocopier
+715:pick, plectrum, plectron
+716:pickelhaube
+717:picket fence, paling
+718:pickup, pickup truck
+719:pier
+720:piggy bank, penny bank
+721:pill bottle
+722:pillow
+723:ping-pong ball
+724:pinwheel
+725:pirate, pirate ship
+726:pitcher, ewer
+727:plane, carpenter's plane, woodworking plane
+728:planetarium
+729:plastic bag
+730:plate rack
+731:plow, plough
+732:plunger, plumber's helper
+733:Polaroid camera, Polaroid Land camera
+734:pole
+735:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+736:poncho
+737:pool table, billiard table, snooker table
+738:pop bottle, soda bottle
+739:pot, flowerpot
+740:potter's wheel
+741:power drill
+742:prayer rug, prayer mat
+743:printer
+744:prison, prison house
+745:projectile, missile
+746:projector
+747:puck, hockey puck
+748:punching bag, punch bag, punching ball, punchball
+749:purse
+750:quill, quill pen
+751:quilt, comforter, comfort, puff
+752:racer, race car, racing car
+753:racket, racquet
+754:radiator
+755:radio, wireless
+756:radio telescope, radio reflector
+757:rain barrel
+758:recreational vehicle, RV, R.V.
+759:reel
+760:reflex camera
+761:refrigerator, icebox
+762:remote control, remote
+763:restaurant, eating house, eating place, eatery
+764:revolver, six-gun, six-shooter
+765:rifle
+766:rocking chair, rocker
+767:rotisserie
+768:rubber eraser, rubber, pencil eraser
+769:rugby ball
+770:rule, ruler
+771:running shoe
+772:safe
+773:safety pin
+774:saltshaker, salt shaker
+775:sandal
+776:sarong
+777:sax, saxophone
+778:scabbard
+779:scale, weighing machine
+780:school bus
+781:schooner
+782:scoreboard
+783:screen, CRT screen
+784:screw
+785:screwdriver
+786:seat belt, seatbelt
+787:sewing machine
+788:shield, buckler
+789:shoe shop, shoe-shop, shoe store
+790:shoji
+791:shopping basket
+792:shopping cart
+793:shovel
+794:shower cap
+795:shower curtain
+796:ski
+797:ski mask
+798:sleeping bag
+799:slide rule, slipstick
+800:sliding door
+801:slot, one-armed bandit
+802:snorkel
+803:snowmobile
+804:snowplow, snowplough
+805:soap dispenser
+806:soccer ball
+807:sock
+808:solar dish, solar collector, solar furnace
+809:sombrero
+810:soup bowl
+811:space bar
+812:space heater
+813:space shuttle
+814:spatula
+815:speedboat
+816:spider web, spider's web
+817:spindle
+818:sports car, sport car
+819:spotlight, spot
+820:stage
+821:steam locomotive
+822:steel arch bridge
+823:steel drum
+824:stethoscope
+825:stole
+826:stone wall
+827:stopwatch, stop watch
+828:stove
+829:strainer
+830:streetcar, tram, tramcar, trolley, trolley car
+831:stretcher
+832:studio couch, day bed
+833:stupa, tope
+834:submarine, pigboat, sub, U-boat
+835:suit, suit of clothes
+836:sundial
+837:sunglass
+838:sunglasses, dark glasses, shades
+839:sunscreen, sunblock, sun blocker
+840:suspension bridge
+841:swab, swob, mop
+842:sweatshirt
+843:swimming trunks, bathing trunks
+844:swing
+845:switch, electric switch, electrical switch
+846:syringe
+847:table lamp
+848:tank, army tank, armored combat vehicle, armoured combat vehicle
+849:tape player
+850:teapot
+851:teddy, teddy bear
+852:television, television system
+853:tennis ball
+854:thatch, thatched roof
+855:theater curtain, theatre curtain
+856:thimble
+857:thresher, thrasher, threshing machine
+858:throne
+859:tile roof
+860:toaster
+861:tobacco shop, tobacconist shop, tobacconist
+862:toilet seat
+863:torch
+864:totem pole
+865:tow truck, tow car, wrecker
+866:toyshop
+867:tractor
+868:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+869:tray
+870:trench coat
+871:tricycle, trike, velocipede
+872:trimaran
+873:tripod
+874:triumphal arch
+875:trolleybus, trolley coach, trackless trolley
+876:trombone
+877:tub, vat
+878:turnstile
+879:typewriter keyboard
+880:umbrella
+881:unicycle, monocycle
+882:upright, upright piano
+883:vacuum, vacuum cleaner
+884:vase
+885:vault
+886:velvet
+887:vending machine
+888:vestment
+889:viaduct
+890:violin, fiddle
+891:volleyball
+892:waffle iron
+893:wall clock
+894:wallet, billfold, notecase, pocketbook
+895:wardrobe, closet, press
+896:warplane, military plane
+897:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+898:washer, automatic washer, washing machine
+899:water bottle
+900:water jug
+901:water tower
+902:whiskey jug
+903:whistle
+904:wig
+905:window screen
+906:window shade
+907:Windsor tie
+908:wine bottle
+909:wing
+910:wok
+911:wooden spoon
+912:wool, woolen, woollen
+913:worm fence, snake fence, snake-rail fence, Virginia fence
+914:wreck
+915:yawl
+916:yurt
+917:web site, website, internet site, site
+918:comic book
+919:crossword puzzle, crossword
+920:street sign
+921:traffic light, traffic signal, stoplight
+922:book jacket, dust cover, dust jacket, dust wrapper
+923:menu
+924:plate
+925:guacamole
+926:consomme
+927:hot pot, hotpot
+928:trifle
+929:ice cream, icecream
+930:ice lolly, lolly, lollipop, popsicle
+931:French loaf
+932:bagel, beigel
+933:pretzel
+934:cheeseburger
+935:hotdog, hot dog, red hot
+936:mashed potato
+937:head cabbage
+938:broccoli
+939:cauliflower
+940:zucchini, courgette
+941:spaghetti squash
+942:acorn squash
+943:butternut squash
+944:cucumber, cuke
+945:artichoke, globe artichoke
+946:bell pepper
+947:cardoon
+948:mushroom
+949:Granny Smith
+950:strawberry
+951:orange
+952:lemon
+953:fig
+954:pineapple, ananas
+955:banana
+956:jackfruit, jak, jack
+957:custard apple
+958:pomegranate
+959:hay
+960:carbonara
+961:chocolate sauce, chocolate syrup
+962:dough
+963:meat loaf, meatloaf
+964:pizza, pizza pie
+965:potpie
+966:burrito
+967:red wine
+968:espresso
+969:cup
+970:eggnog
+971:alp
+972:bubble
+973:cliff, drop, drop-off
+974:coral reef
+975:geyser
+976:lakeside, lakeshore
+977:promontory, headland, head, foreland
+978:sandbar, sand bar
+979:seashore, coast, seacoast, sea-coast
+980:valley, vale
+981:volcano
+982:ballplayer, baseball player
+983:groom, bridegroom
+984:scuba diver
+985:rapeseed
+986:daisy
+987:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+988:corn
+989:acorn
+990:hip, rose hip, rosehip
+991:buckeye, horse chestnut, conker
+992:coral fungus
+993:agaric
+994:gyromitra
+995:stinkhorn, carrion fungus
+996:earthstar
+997:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+998:bolete
+999:ear, spike, capitulum
+1000:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1/mobilenet_v1_1.0_224.tflite b/rknn-toolkit2/examples/tflite/mobilenet_v1/mobilenet_v1_1.0_224.tflite
new file mode 100755
index 0000000000000000000000000000000000000000..5c3561024027f68cbed35a2ae0e4784f81934860
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1/mobilenet_v1_1.0_224.tflite
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6e60eb9b50ca82aedbe12f1340b3bfbc57d1e771b71d2f98bfed3cd01e339f9
+size 16900760
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1/model_config.yml b/rknn-toolkit2/examples/tflite/mobilenet_v1/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..ca39033b6d9e4efac27497ccb067503d761e2d54
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1/model_config.yml
@@ -0,0 +1,10 @@
+models:
+ name: mobilenet_v1 # 模型输出名称
+ platform: tflite # 原始模型使用的框架
+ model_file_path: ./mobilenet_v1_1.0_224.tflite # 原模型路径
+ quantize: True # 开启量化
+ dataset: ./dataset.txt # 量化dataset文件路径(相对yml路径)
+ configs:
+ mean_values: [128, 128, 128] # rknn.config的mean_values参数
+ std_values: [128, 128, 128] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1/test.py b/rknn-toolkit2/examples/tflite/mobilenet_v1/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..23a8ee57b8ebace3e034a24d81ab4c9b85715298
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1/test.py
@@ -0,0 +1,76 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ output = outputs[0][0]
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'mobilenet_v1\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>4d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[128, 128, 128], std_values=[128, 128, 128], target_platform='rk3566')
+ print('done')
+
+ # Load model (from https://www.tensorflow.org/lite/guide/hosted_models?hl=zh-cn)
+ print('--> Loading model')
+ ret = rknn.load_tflite(model='mobilenet_v1_1.0_224.tflite')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet_v1.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./tflite_mobilenet_v1_0.npy', outputs[0])
+ show_outputs(outputs)
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/README.md b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a11a1d150c8594db00f74672b8f958fff0118d91
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/README.md
@@ -0,0 +1,31 @@
+# TFLite MobileNet V1 QAT
+
+## Model Source
+The model used in this example come from the following open source projects:
+https://www.tensorflow.org/lite/examples/image_classification/overview?hl=zh-cn
+
+## Script Usage
+*Usage:*
+```
+python test.py
+```
+*rknn_convert usage:*
+```
+python3 -m rknn.api.rknn_convert -t rk3568 -i ./model_config.yml -o ./
+```
+*Description:*
+- The default target platform in script is 'rk3566', please modify the 'target_platform' parameter of 'rknn.config' according to the actual platform.
+- If connecting board is required, please add the 'target' parameter in 'rknn.init_runtime'.
+- This is a QAT model, and the do_quantization of rknn.build needs to be set to False.
+
+## Expected Results
+This example will print the TOP5 labels and corresponding scores of the test image classification results, as follows:
+```
+-----TOP 5-----
+[ 156] score:0.984375 class:"Shih-Tzu"
+[ 155] score:0.007812 class:"Pekinese, Pekingese, Peke"
+[ 205] score:0.003906 class:"Lhasa, Lhasa apso"
+[ -1]: 0.0
+[ -1]: 0.0
+```
+- Note: Different platforms, different versions of tools and drivers may have slightly different results.
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/dog_224x224.jpg b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/dog_224x224.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..004b0416e23454a12eb06eaba238c7e2d5f2b0fc
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/dog_224x224.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c350299c6283d5f62fecf1f845b6b3be9aafec8dff528ca09a129990f0a584b0
+size 18889
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/labels.txt b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/labels.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dcd01c14b4635096ae295a8e81de0f65188bc1f8
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/labels.txt
@@ -0,0 +1,1001 @@
+0:__background__
+1:tench, Tinca tinca
+2:goldfish, Carassius auratus
+3:great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
+4:tiger shark, Galeocerdo cuvieri
+5:hammerhead, hammerhead shark
+6:electric ray, crampfish, numbfish, torpedo
+7:stingray
+8:cock
+9:hen
+10:ostrich, Struthio camelus
+11:brambling, Fringilla montifringilla
+12:goldfinch, Carduelis carduelis
+13:house finch, linnet, Carpodacus mexicanus
+14:junco, snowbird
+15:indigo bunting, indigo finch, indigo bird, Passerina cyanea
+16:robin, American robin, Turdus migratorius
+17:bulbul
+18:jay
+19:magpie
+20:chickadee
+21:water ouzel, dipper
+22:kite
+23:bald eagle, American eagle, Haliaeetus leucocephalus
+24:vulture
+25:great grey owl, great gray owl, Strix nebulosa
+26:European fire salamander, Salamandra salamandra
+27:common newt, Triturus vulgaris
+28:eft
+29:spotted salamander, Ambystoma maculatum
+30:axolotl, mud puppy, Ambystoma mexicanum
+31:bullfrog, Rana catesbeiana
+32:tree frog, tree-frog
+33:tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui
+34:loggerhead, loggerhead turtle, Caretta caretta
+35:leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea
+36:mud turtle
+37:terrapin
+38:box turtle, box tortoise
+39:banded gecko
+40:common iguana, iguana, Iguana iguana
+41:American chameleon, anole, Anolis carolinensis
+42:whiptail, whiptail lizard
+43:agama
+44:frilled lizard, Chlamydosaurus kingi
+45:alligator lizard
+46:Gila monster, Heloderma suspectum
+47:green lizard, Lacerta viridis
+48:African chameleon, Chamaeleo chamaeleon
+49:Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis
+50:African crocodile, Nile crocodile, Crocodylus niloticus
+51:American alligator, Alligator mississipiensis
+52:triceratops
+53:thunder snake, worm snake, Carphophis amoenus
+54:ringneck snake, ring-necked snake, ring snake
+55:hognose snake, puff adder, sand viper
+56:green snake, grass snake
+57:king snake, kingsnake
+58:garter snake, grass snake
+59:water snake
+60:vine snake
+61:night snake, Hypsiglena torquata
+62:boa constrictor, Constrictor constrictor
+63:rock python, rock snake, Python sebae
+64:Indian cobra, Naja naja
+65:green mamba
+66:sea snake
+67:horned viper, cerastes, sand viper, horned asp, Cerastes cornutus
+68:diamondback, diamondback rattlesnake, Crotalus adamanteus
+69:sidewinder, horned rattlesnake, Crotalus cerastes
+70:trilobite
+71:harvestman, daddy longlegs, Phalangium opilio
+72:scorpion
+73:black and gold garden spider, Argiope aurantia
+74:barn spider, Araneus cavaticus
+75:garden spider, Aranea diademata
+76:black widow, Latrodectus mactans
+77:tarantula
+78:wolf spider, hunting spider
+79:tick
+80:centipede
+81:black grouse
+82:ptarmigan
+83:ruffed grouse, partridge, Bonasa umbellus
+84:prairie chicken, prairie grouse, prairie fowl
+85:peacock
+86:quail
+87:partridge
+88:African grey, African gray, Psittacus erithacus
+89:macaw
+90:sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita
+91:lorikeet
+92:coucal
+93:bee eater
+94:hornbill
+95:hummingbird
+96:jacamar
+97:toucan
+98:drake
+99:red-breasted merganser, Mergus serrator
+100:goose
+101:black swan, Cygnus atratus
+102:tusker
+103:echidna, spiny anteater, anteater
+104:platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus
+105:wallaby, brush kangaroo
+106:koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus
+107:wombat
+108:jellyfish
+109:sea anemone, anemone
+110:brain coral
+111:flatworm, platyhelminth
+112:nematode, nematode worm, roundworm
+113:conch
+114:snail
+115:slug
+116:sea slug, nudibranch
+117:chiton, coat-of-mail shell, sea cradle, polyplacophore
+118:chambered nautilus, pearly nautilus, nautilus
+119:Dungeness crab, Cancer magister
+120:rock crab, Cancer irroratus
+121:fiddler crab
+122:king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica
+123:American lobster, Northern lobster, Maine lobster, Homarus americanus
+124:spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish
+125:crayfish, crawfish, crawdad, crawdaddy
+126:hermit crab
+127:isopod
+128:white stork, Ciconia ciconia
+129:black stork, Ciconia nigra
+130:spoonbill
+131:flamingo
+132:little blue heron, Egretta caerulea
+133:American egret, great white heron, Egretta albus
+134:bittern
+135:crane
+136:limpkin, Aramus pictus
+137:European gallinule, Porphyrio porphyrio
+138:American coot, marsh hen, mud hen, water hen, Fulica americana
+139:bustard
+140:ruddy turnstone, Arenaria interpres
+141:red-backed sandpiper, dunlin, Erolia alpina
+142:redshank, Tringa totanus
+143:dowitcher
+144:oystercatcher, oyster catcher
+145:pelican
+146:king penguin, Aptenodytes patagonica
+147:albatross, mollymawk
+148:grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus
+149:killer whale, killer, orca, grampus, sea wolf, Orcinus orca
+150:dugong, Dugong dugon
+151:sea lion
+152:Chihuahua
+153:Japanese spaniel
+154:Maltese dog, Maltese terrier, Maltese
+155:Pekinese, Pekingese, Peke
+156:Shih-Tzu
+157:Blenheim spaniel
+158:papillon
+159:toy terrier
+160:Rhodesian ridgeback
+161:Afghan hound, Afghan
+162:basset, basset hound
+163:beagle
+164:bloodhound, sleuthhound
+165:bluetick
+166:black-and-tan coonhound
+167:Walker hound, Walker foxhound
+168:English foxhound
+169:redbone
+170:borzoi, Russian wolfhound
+171:Irish wolfhound
+172:Italian greyhound
+173:whippet
+174:Ibizan hound, Ibizan Podenco
+175:Norwegian elkhound, elkhound
+176:otterhound, otter hound
+177:Saluki, gazelle hound
+178:Scottish deerhound, deerhound
+179:Weimaraner
+180:Staffordshire bullterrier, Staffordshire bull terrier
+181:American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier
+182:Bedlington terrier
+183:Border terrier
+184:Kerry blue terrier
+185:Irish terrier
+186:Norfolk terrier
+187:Norwich terrier
+188:Yorkshire terrier
+189:wire-haired fox terrier
+190:Lakeland terrier
+191:Sealyham terrier, Sealyham
+192:Airedale, Airedale terrier
+193:cairn, cairn terrier
+194:Australian terrier
+195:Dandie Dinmont, Dandie Dinmont terrier
+196:Boston bull, Boston terrier
+197:miniature schnauzer
+198:giant schnauzer
+199:standard schnauzer
+200:Scotch terrier, Scottish terrier, Scottie
+201:Tibetan terrier, chrysanthemum dog
+202:silky terrier, Sydney silky
+203:soft-coated wheaten terrier
+204:West Highland white terrier
+205:Lhasa, Lhasa apso
+206:flat-coated retriever
+207:curly-coated retriever
+208:golden retriever
+209:Labrador retriever
+210:Chesapeake Bay retriever
+211:German short-haired pointer
+212:vizsla, Hungarian pointer
+213:English setter
+214:Irish setter, red setter
+215:Gordon setter
+216:Brittany spaniel
+217:clumber, clumber spaniel
+218:English springer, English springer spaniel
+219:Welsh springer spaniel
+220:cocker spaniel, English cocker spaniel, cocker
+221:Sussex spaniel
+222:Irish water spaniel
+223:kuvasz
+224:schipperke
+225:groenendael
+226:malinois
+227:briard
+228:kelpie
+229:komondor
+230:Old English sheepdog, bobtail
+231:Shetland sheepdog, Shetland sheep dog, Shetland
+232:collie
+233:Border collie
+234:Bouvier des Flandres, Bouviers des Flandres
+235:Rottweiler
+236:German shepherd, German shepherd dog, German police dog, alsatian
+237:Doberman, Doberman pinscher
+238:miniature pinscher
+239:Greater Swiss Mountain dog
+240:Bernese mountain dog
+241:Appenzeller
+242:EntleBucher
+243:boxer
+244:bull mastiff
+245:Tibetan mastiff
+246:French bulldog
+247:Great Dane
+248:Saint Bernard, St Bernard
+249:Eskimo dog, husky
+250:malamute, malemute, Alaskan malamute
+251:Siberian husky
+252:dalmatian, coach dog, carriage dog
+253:affenpinscher, monkey pinscher, monkey dog
+254:basenji
+255:pug, pug-dog
+256:Leonberg
+257:Newfoundland, Newfoundland dog
+258:Great Pyrenees
+259:Samoyed, Samoyede
+260:Pomeranian
+261:chow, chow chow
+262:keeshond
+263:Brabancon griffon
+264:Pembroke, Pembroke Welsh corgi
+265:Cardigan, Cardigan Welsh corgi
+266:toy poodle
+267:miniature poodle
+268:standard poodle
+269:Mexican hairless
+270:timber wolf, grey wolf, gray wolf, Canis lupus
+271:white wolf, Arctic wolf, Canis lupus tundrarum
+272:red wolf, maned wolf, Canis rufus, Canis niger
+273:coyote, prairie wolf, brush wolf, Canis latrans
+274:dingo, warrigal, warragal, Canis dingo
+275:dhole, Cuon alpinus
+276:African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus
+277:hyena, hyaena
+278:red fox, Vulpes vulpes
+279:kit fox, Vulpes macrotis
+280:Arctic fox, white fox, Alopex lagopus
+281:grey fox, gray fox, Urocyon cinereoargenteus
+282:tabby, tabby cat
+283:tiger cat
+284:Persian cat
+285:Siamese cat, Siamese
+286:Egyptian cat
+287:cougar, puma, catamount, mountain lion, painter, panther, Felis concolor
+288:lynx, catamount
+289:leopard, Panthera pardus
+290:snow leopard, ounce, Panthera uncia
+291:jaguar, panther, Panthera onca, Felis onca
+292:lion, king of beasts, Panthera leo
+293:tiger, Panthera tigris
+294:cheetah, chetah, Acinonyx jubatus
+295:brown bear, bruin, Ursus arctos
+296:American black bear, black bear, Ursus americanus, Euarctos americanus
+297:ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus
+298:sloth bear, Melursus ursinus, Ursus ursinus
+299:mongoose
+300:meerkat, mierkat
+301:tiger beetle
+302:ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle
+303:ground beetle, carabid beetle
+304:long-horned beetle, longicorn, longicorn beetle
+305:leaf beetle, chrysomelid
+306:dung beetle
+307:rhinoceros beetle
+308:weevil
+309:fly
+310:bee
+311:ant, emmet, pismire
+312:grasshopper, hopper
+313:cricket
+314:walking stick, walkingstick, stick insect
+315:cockroach, roach
+316:mantis, mantid
+317:cicada, cicala
+318:leafhopper
+319:lacewing, lacewing fly
+320:dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk
+321:damselfly
+322:admiral
+323:ringlet, ringlet butterfly
+324:monarch, monarch butterfly, milkweed butterfly, Danaus plexippus
+325:cabbage butterfly
+326:sulphur butterfly, sulfur butterfly
+327:lycaenid, lycaenid butterfly
+328:starfish, sea star
+329:sea urchin
+330:sea cucumber, holothurian
+331:wood rabbit, cottontail, cottontail rabbit
+332:hare
+333:Angora, Angora rabbit
+334:hamster
+335:porcupine, hedgehog
+336:fox squirrel, eastern fox squirrel, Sciurus niger
+337:marmot
+338:beaver
+339:guinea pig, Cavia cobaya
+340:sorrel
+341:zebra
+342:hog, pig, grunter, squealer, Sus scrofa
+343:wild boar, boar, Sus scrofa
+344:warthog
+345:hippopotamus, hippo, river horse, Hippopotamus amphibius
+346:ox
+347:water buffalo, water ox, Asiatic buffalo, Bubalus bubalis
+348:bison
+349:ram, tup
+350:bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis
+351:ibex, Capra ibex
+352:hartebeest
+353:impala, Aepyceros melampus
+354:gazelle
+355:Arabian camel, dromedary, Camelus dromedarius
+356:llama
+357:weasel
+358:mink
+359:polecat, fitch, foulmart, foumart, Mustela putorius
+360:black-footed ferret, ferret, Mustela nigripes
+361:otter
+362:skunk, polecat, wood pussy
+363:badger
+364:armadillo
+365:three-toed sloth, ai, Bradypus tridactylus
+366:orangutan, orang, orangutang, Pongo pygmaeus
+367:gorilla, Gorilla gorilla
+368:chimpanzee, chimp, Pan troglodytes
+369:gibbon, Hylobates lar
+370:siamang, Hylobates syndactylus, Symphalangus syndactylus
+371:guenon, guenon monkey
+372:patas, hussar monkey, Erythrocebus patas
+373:baboon
+374:macaque
+375:langur
+376:colobus, colobus monkey
+377:proboscis monkey, Nasalis larvatus
+378:marmoset
+379:capuchin, ringtail, Cebus capucinus
+380:howler monkey, howler
+381:titi, titi monkey
+382:spider monkey, Ateles geoffroyi
+383:squirrel monkey, Saimiri sciureus
+384:Madagascar cat, ring-tailed lemur, Lemur catta
+385:indri, indris, Indri indri, Indri brevicaudatus
+386:Indian elephant, Elephas maximus
+387:African elephant, Loxodonta africana
+388:lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens
+389:giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca
+390:barracouta, snoek
+391:eel
+392:coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch
+393:rock beauty, Holocanthus tricolor
+394:anemone fish
+395:sturgeon
+396:gar, garfish, garpike, billfish, Lepisosteus osseus
+397:lionfish
+398:puffer, pufferfish, blowfish, globefish
+399:abacus
+400:abaya
+401:academic gown, academic robe, judge's robe
+402:accordion, piano accordion, squeeze box
+403:acoustic guitar
+404:aircraft carrier, carrier, flattop, attack aircraft carrier
+405:airliner
+406:airship, dirigible
+407:altar
+408:ambulance
+409:amphibian, amphibious vehicle
+410:analog clock
+411:apiary, bee house
+412:apron
+413:ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin
+414:assault rifle, assault gun
+415:backpack, back pack, knapsack, packsack, rucksack, haversack
+416:bakery, bakeshop, bakehouse
+417:balance beam, beam
+418:balloon
+419:ballpoint, ballpoint pen, ballpen, Biro
+420:Band Aid
+421:banjo
+422:bannister, banister, balustrade, balusters, handrail
+423:barbell
+424:barber chair
+425:barbershop
+426:barn
+427:barometer
+428:barrel, cask
+429:barrow, garden cart, lawn cart, wheelbarrow
+430:baseball
+431:basketball
+432:bassinet
+433:bassoon
+434:bathing cap, swimming cap
+435:bath towel
+436:bathtub, bathing tub, bath, tub
+437:beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon
+438:beacon, lighthouse, beacon light, pharos
+439:beaker
+440:bearskin, busby, shako
+441:beer bottle
+442:beer glass
+443:bell cote, bell cot
+444:bib
+445:bicycle-built-for-two, tandem bicycle, tandem
+446:bikini, two-piece
+447:binder, ring-binder
+448:binoculars, field glasses, opera glasses
+449:birdhouse
+450:boathouse
+451:bobsled, bobsleigh, bob
+452:bolo tie, bolo, bola tie, bola
+453:bonnet, poke bonnet
+454:bookcase
+455:bookshop, bookstore, bookstall
+456:bottlecap
+457:bow
+458:bow tie, bow-tie, bowtie
+459:brass, memorial tablet, plaque
+460:brassiere, bra, bandeau
+461:breakwater, groin, groyne, mole, bulwark, seawall, jetty
+462:breastplate, aegis, egis
+463:broom
+464:bucket, pail
+465:buckle
+466:bulletproof vest
+467:bullet train, bullet
+468:butcher shop, meat market
+469:cab, hack, taxi, taxicab
+470:caldron, cauldron
+471:candle, taper, wax light
+472:cannon
+473:canoe
+474:can opener, tin opener
+475:cardigan
+476:car mirror
+477:carousel, carrousel, merry-go-round, roundabout, whirligig
+478:carpenter's kit, tool kit
+479:carton
+480:car wheel
+481:cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM
+482:cassette
+483:cassette player
+484:castle
+485:catamaran
+486:CD player
+487:cello, violoncello
+488:cellular telephone, cellular phone, cellphone, cell, mobile phone
+489:chain
+490:chainlink fence
+491:chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour
+492:chain saw, chainsaw
+493:chest
+494:chiffonier, commode
+495:chime, bell, gong
+496:china cabinet, china closet
+497:Christmas stocking
+498:church, church building
+499:cinema, movie theater, movie theatre, movie house, picture palace
+500:cleaver, meat cleaver, chopper
+501:cliff dwelling
+502:cloak
+503:clog, geta, patten, sabot
+504:cocktail shaker
+505:coffee mug
+506:coffeepot
+507:coil, spiral, volute, whorl, helix
+508:combination lock
+509:computer keyboard, keypad
+510:confectionery, confectionary, candy store
+511:container ship, containership, container vessel
+512:convertible
+513:corkscrew, bottle screw
+514:cornet, horn, trumpet, trump
+515:cowboy boot
+516:cowboy hat, ten-gallon hat
+517:cradle
+518:crane
+519:crash helmet
+520:crate
+521:crib, cot
+522:Crock Pot
+523:croquet ball
+524:crutch
+525:cuirass
+526:dam, dike, dyke
+527:desk
+528:desktop computer
+529:dial telephone, dial phone
+530:diaper, nappy, napkin
+531:digital clock
+532:digital watch
+533:dining table, board
+534:dishrag, dishcloth
+535:dishwasher, dish washer, dishwashing machine
+536:disk brake, disc brake
+537:dock, dockage, docking facility
+538:dogsled, dog sled, dog sleigh
+539:dome
+540:doormat, welcome mat
+541:drilling platform, offshore rig
+542:drum, membranophone, tympan
+543:drumstick
+544:dumbbell
+545:Dutch oven
+546:electric fan, blower
+547:electric guitar
+548:electric locomotive
+549:entertainment center
+550:envelope
+551:espresso maker
+552:face powder
+553:feather boa, boa
+554:file, file cabinet, filing cabinet
+555:fireboat
+556:fire engine, fire truck
+557:fire screen, fireguard
+558:flagpole, flagstaff
+559:flute, transverse flute
+560:folding chair
+561:football helmet
+562:forklift
+563:fountain
+564:fountain pen
+565:four-poster
+566:freight car
+567:French horn, horn
+568:frying pan, frypan, skillet
+569:fur coat
+570:garbage truck, dustcart
+571:gasmask, respirator, gas helmet
+572:gas pump, gasoline pump, petrol pump, island dispenser
+573:goblet
+574:go-kart
+575:golf ball
+576:golfcart, golf cart
+577:gondola
+578:gong, tam-tam
+579:gown
+580:grand piano, grand
+581:greenhouse, nursery, glasshouse
+582:grille, radiator grille
+583:grocery store, grocery, food market, market
+584:guillotine
+585:hair slide
+586:hair spray
+587:half track
+588:hammer
+589:hamper
+590:hand blower, blow dryer, blow drier, hair dryer, hair drier
+591:hand-held computer, hand-held microcomputer
+592:handkerchief, hankie, hanky, hankey
+593:hard disc, hard disk, fixed disk
+594:harmonica, mouth organ, harp, mouth harp
+595:harp
+596:harvester, reaper
+597:hatchet
+598:holster
+599:home theater, home theatre
+600:honeycomb
+601:hook, claw
+602:hoopskirt, crinoline
+603:horizontal bar, high bar
+604:horse cart, horse-cart
+605:hourglass
+606:iPod
+607:iron, smoothing iron
+608:jack-o'-lantern
+609:jean, blue jean, denim
+610:jeep, landrover
+611:jersey, T-shirt, tee shirt
+612:jigsaw puzzle
+613:jinrikisha, ricksha, rickshaw
+614:joystick
+615:kimono
+616:knee pad
+617:knot
+618:lab coat, laboratory coat
+619:ladle
+620:lampshade, lamp shade
+621:laptop, laptop computer
+622:lawn mower, mower
+623:lens cap, lens cover
+624:letter opener, paper knife, paperknife
+625:library
+626:lifeboat
+627:lighter, light, igniter, ignitor
+628:limousine, limo
+629:liner, ocean liner
+630:lipstick, lip rouge
+631:Loafer
+632:lotion
+633:loudspeaker, speaker, speaker unit, loudspeaker system, speaker system
+634:loupe, jeweler's loupe
+635:lumbermill, sawmill
+636:magnetic compass
+637:mailbag, postbag
+638:mailbox, letter box
+639:maillot
+640:maillot, tank suit
+641:manhole cover
+642:maraca
+643:marimba, xylophone
+644:mask
+645:matchstick
+646:maypole
+647:maze, labyrinth
+648:measuring cup
+649:medicine chest, medicine cabinet
+650:megalith, megalithic structure
+651:microphone, mike
+652:microwave, microwave oven
+653:military uniform
+654:milk can
+655:minibus
+656:miniskirt, mini
+657:minivan
+658:missile
+659:mitten
+660:mixing bowl
+661:mobile home, manufactured home
+662:Model T
+663:modem
+664:monastery
+665:monitor
+666:moped
+667:mortar
+668:mortarboard
+669:mosque
+670:mosquito net
+671:motor scooter, scooter
+672:mountain bike, all-terrain bike, off-roader
+673:mountain tent
+674:mouse, computer mouse
+675:mousetrap
+676:moving van
+677:muzzle
+678:nail
+679:neck brace
+680:necklace
+681:nipple
+682:notebook, notebook computer
+683:obelisk
+684:oboe, hautboy, hautbois
+685:ocarina, sweet potato
+686:odometer, hodometer, mileometer, milometer
+687:oil filter
+688:organ, pipe organ
+689:oscilloscope, scope, cathode-ray oscilloscope, CRO
+690:overskirt
+691:oxcart
+692:oxygen mask
+693:packet
+694:paddle, boat paddle
+695:paddlewheel, paddle wheel
+696:padlock
+697:paintbrush
+698:pajama, pyjama, pj's, jammies
+699:palace
+700:panpipe, pandean pipe, syrinx
+701:paper towel
+702:parachute, chute
+703:parallel bars, bars
+704:park bench
+705:parking meter
+706:passenger car, coach, carriage
+707:patio, terrace
+708:pay-phone, pay-station
+709:pedestal, plinth, footstall
+710:pencil box, pencil case
+711:pencil sharpener
+712:perfume, essence
+713:Petri dish
+714:photocopier
+715:pick, plectrum, plectron
+716:pickelhaube
+717:picket fence, paling
+718:pickup, pickup truck
+719:pier
+720:piggy bank, penny bank
+721:pill bottle
+722:pillow
+723:ping-pong ball
+724:pinwheel
+725:pirate, pirate ship
+726:pitcher, ewer
+727:plane, carpenter's plane, woodworking plane
+728:planetarium
+729:plastic bag
+730:plate rack
+731:plow, plough
+732:plunger, plumber's helper
+733:Polaroid camera, Polaroid Land camera
+734:pole
+735:police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria
+736:poncho
+737:pool table, billiard table, snooker table
+738:pop bottle, soda bottle
+739:pot, flowerpot
+740:potter's wheel
+741:power drill
+742:prayer rug, prayer mat
+743:printer
+744:prison, prison house
+745:projectile, missile
+746:projector
+747:puck, hockey puck
+748:punching bag, punch bag, punching ball, punchball
+749:purse
+750:quill, quill pen
+751:quilt, comforter, comfort, puff
+752:racer, race car, racing car
+753:racket, racquet
+754:radiator
+755:radio, wireless
+756:radio telescope, radio reflector
+757:rain barrel
+758:recreational vehicle, RV, R.V.
+759:reel
+760:reflex camera
+761:refrigerator, icebox
+762:remote control, remote
+763:restaurant, eating house, eating place, eatery
+764:revolver, six-gun, six-shooter
+765:rifle
+766:rocking chair, rocker
+767:rotisserie
+768:rubber eraser, rubber, pencil eraser
+769:rugby ball
+770:rule, ruler
+771:running shoe
+772:safe
+773:safety pin
+774:saltshaker, salt shaker
+775:sandal
+776:sarong
+777:sax, saxophone
+778:scabbard
+779:scale, weighing machine
+780:school bus
+781:schooner
+782:scoreboard
+783:screen, CRT screen
+784:screw
+785:screwdriver
+786:seat belt, seatbelt
+787:sewing machine
+788:shield, buckler
+789:shoe shop, shoe-shop, shoe store
+790:shoji
+791:shopping basket
+792:shopping cart
+793:shovel
+794:shower cap
+795:shower curtain
+796:ski
+797:ski mask
+798:sleeping bag
+799:slide rule, slipstick
+800:sliding door
+801:slot, one-armed bandit
+802:snorkel
+803:snowmobile
+804:snowplow, snowplough
+805:soap dispenser
+806:soccer ball
+807:sock
+808:solar dish, solar collector, solar furnace
+809:sombrero
+810:soup bowl
+811:space bar
+812:space heater
+813:space shuttle
+814:spatula
+815:speedboat
+816:spider web, spider's web
+817:spindle
+818:sports car, sport car
+819:spotlight, spot
+820:stage
+821:steam locomotive
+822:steel arch bridge
+823:steel drum
+824:stethoscope
+825:stole
+826:stone wall
+827:stopwatch, stop watch
+828:stove
+829:strainer
+830:streetcar, tram, tramcar, trolley, trolley car
+831:stretcher
+832:studio couch, day bed
+833:stupa, tope
+834:submarine, pigboat, sub, U-boat
+835:suit, suit of clothes
+836:sundial
+837:sunglass
+838:sunglasses, dark glasses, shades
+839:sunscreen, sunblock, sun blocker
+840:suspension bridge
+841:swab, swob, mop
+842:sweatshirt
+843:swimming trunks, bathing trunks
+844:swing
+845:switch, electric switch, electrical switch
+846:syringe
+847:table lamp
+848:tank, army tank, armored combat vehicle, armoured combat vehicle
+849:tape player
+850:teapot
+851:teddy, teddy bear
+852:television, television system
+853:tennis ball
+854:thatch, thatched roof
+855:theater curtain, theatre curtain
+856:thimble
+857:thresher, thrasher, threshing machine
+858:throne
+859:tile roof
+860:toaster
+861:tobacco shop, tobacconist shop, tobacconist
+862:toilet seat
+863:torch
+864:totem pole
+865:tow truck, tow car, wrecker
+866:toyshop
+867:tractor
+868:trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi
+869:tray
+870:trench coat
+871:tricycle, trike, velocipede
+872:trimaran
+873:tripod
+874:triumphal arch
+875:trolleybus, trolley coach, trackless trolley
+876:trombone
+877:tub, vat
+878:turnstile
+879:typewriter keyboard
+880:umbrella
+881:unicycle, monocycle
+882:upright, upright piano
+883:vacuum, vacuum cleaner
+884:vase
+885:vault
+886:velvet
+887:vending machine
+888:vestment
+889:viaduct
+890:violin, fiddle
+891:volleyball
+892:waffle iron
+893:wall clock
+894:wallet, billfold, notecase, pocketbook
+895:wardrobe, closet, press
+896:warplane, military plane
+897:washbasin, handbasin, washbowl, lavabo, wash-hand basin
+898:washer, automatic washer, washing machine
+899:water bottle
+900:water jug
+901:water tower
+902:whiskey jug
+903:whistle
+904:wig
+905:window screen
+906:window shade
+907:Windsor tie
+908:wine bottle
+909:wing
+910:wok
+911:wooden spoon
+912:wool, woolen, woollen
+913:worm fence, snake fence, snake-rail fence, Virginia fence
+914:wreck
+915:yawl
+916:yurt
+917:web site, website, internet site, site
+918:comic book
+919:crossword puzzle, crossword
+920:street sign
+921:traffic light, traffic signal, stoplight
+922:book jacket, dust cover, dust jacket, dust wrapper
+923:menu
+924:plate
+925:guacamole
+926:consomme
+927:hot pot, hotpot
+928:trifle
+929:ice cream, icecream
+930:ice lolly, lolly, lollipop, popsicle
+931:French loaf
+932:bagel, beigel
+933:pretzel
+934:cheeseburger
+935:hotdog, hot dog, red hot
+936:mashed potato
+937:head cabbage
+938:broccoli
+939:cauliflower
+940:zucchini, courgette
+941:spaghetti squash
+942:acorn squash
+943:butternut squash
+944:cucumber, cuke
+945:artichoke, globe artichoke
+946:bell pepper
+947:cardoon
+948:mushroom
+949:Granny Smith
+950:strawberry
+951:orange
+952:lemon
+953:fig
+954:pineapple, ananas
+955:banana
+956:jackfruit, jak, jack
+957:custard apple
+958:pomegranate
+959:hay
+960:carbonara
+961:chocolate sauce, chocolate syrup
+962:dough
+963:meat loaf, meatloaf
+964:pizza, pizza pie
+965:potpie
+966:burrito
+967:red wine
+968:espresso
+969:cup
+970:eggnog
+971:alp
+972:bubble
+973:cliff, drop, drop-off
+974:coral reef
+975:geyser
+976:lakeside, lakeshore
+977:promontory, headland, head, foreland
+978:sandbar, sand bar
+979:seashore, coast, seacoast, sea-coast
+980:valley, vale
+981:volcano
+982:ballplayer, baseball player
+983:groom, bridegroom
+984:scuba diver
+985:rapeseed
+986:daisy
+987:yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum
+988:corn
+989:acorn
+990:hip, rose hip, rosehip
+991:buckeye, horse chestnut, conker
+992:coral fungus
+993:agaric
+994:gyromitra
+995:stinkhorn, carrion fungus
+996:earthstar
+997:hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa
+998:bolete
+999:ear, spike, capitulum
+1000:toilet tissue, toilet paper, bathroom tissue
\ No newline at end of file
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/mobilenet_v1_1.0_224_quant.tflite b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/mobilenet_v1_1.0_224_quant.tflite
new file mode 100755
index 0000000000000000000000000000000000000000..b5807f4d1ef84d4a646f46ec578dbcee751643e5
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/mobilenet_v1_1.0_224_quant.tflite
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ecc3a67c47c5a609ec35f6a58a7d97532834e43df4cb7d3f1204a8164b7d20dd
+size 4276352
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/model_config.yml b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/model_config.yml
new file mode 100755
index 0000000000000000000000000000000000000000..ad8e93495a3f4dcab23eeee916370228fb2388f6
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/model_config.yml
@@ -0,0 +1,9 @@
+models:
+ name: mobilenet_v1 # 模型输出名称
+ platform: tflite # 原始模型使用的框架
+ model_file_path: ./mobilenet_v1_1.0_224_quant.tflite # 原模型路径
+ quantize: False # QAT量化过
+ configs:
+ mean_values: [128, 128, 128] # rknn.config的mean_values参数
+ std_values: [128, 128, 128] # rknn.config的std_values参数
+ quant_img_RGB2BGR: false # 不进行RGB2BGR转换
diff --git a/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/test.py b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/test.py
new file mode 100755
index 0000000000000000000000000000000000000000..61a44ad2d61ef2d342f203757f85d7ad31fd8dc5
--- /dev/null
+++ b/rknn-toolkit2/examples/tflite/mobilenet_v1_qat/test.py
@@ -0,0 +1,79 @@
+import numpy as np
+import cv2
+from rknn.api import RKNN
+
+
+def show_outputs(outputs):
+ output = outputs[0][0]
+ index = sorted(range(len(output)), key=lambda k : output[k], reverse=True)
+ fp = open('./labels.txt', 'r')
+ labels = fp.readlines()
+ top5_str = 'mobilenet_v1\n-----TOP 5-----\n'
+ for i in range(5):
+ value = output[index[i]]
+ if value > 0:
+ topi = '[{:>4d}] score:{:.6f} class:"{}"\n'.format(index[i], value, labels[index[i]].strip().split(':')[-1])
+ else:
+ topi = '[ -1]: 0.0\n'
+ top5_str += topi
+ print(top5_str.strip())
+
+def dequantize(outputs, scale, zp):
+ outputs[0] = (outputs[0] - zp) * scale
+ return outputs
+
+if __name__ == '__main__':
+
+ # Create RKNN object
+ rknn = RKNN(verbose=True)
+
+ # Pre-process config
+ print('--> Config model')
+ rknn.config(mean_values=[128, 128, 128], std_values=[128, 128, 128], target_platform='rk3566')
+ print('done')
+
+ # Load model (from https://www.tensorflow.org/lite/examples/image_classification/overview?hl=zh-cn)
+ print('--> Loading model')
+ ret = rknn.load_tflite(model='mobilenet_v1_1.0_224_quant.tflite')
+ if ret != 0:
+ print('Load model failed!')
+ exit(ret)
+ print('done')
+
+ # Build model
+ print('--> Building model')
+ ret = rknn.build(do_quantization=False)
+ if ret != 0:
+ print('Build model failed!')
+ exit(ret)
+ print('done')
+
+ # Export rknn model
+ print('--> Export rknn model')
+ ret = rknn.export_rknn('./mobilenet_v1.rknn')
+ if ret != 0:
+ print('Export rknn model failed!')
+ exit(ret)
+ print('done')
+
+ # Set inputs
+ img = cv2.imread('./dog_224x224.jpg')
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ img = np.expand_dims(img, 0)
+
+ # Init runtime environment
+ print('--> Init runtime environment')
+ ret = rknn.init_runtime()
+ if ret != 0:
+ print('Init runtime environment failed!')
+ exit(ret)
+ print('done')
+
+ # Inference
+ print('--> Running model')
+ outputs = rknn.inference(inputs=[img], data_format=['nhwc'])
+ np.save('./tflite_mobilenet_v1_qat_0.npy', outputs[0])
+ show_outputs(dequantize(outputs, scale=0.00390625, zp=0))
+ print('done')
+
+ rknn.release()
diff --git a/rknn-toolkit2/packages/md5sum.txt b/rknn-toolkit2/packages/md5sum.txt
new file mode 100644
index 0000000000000000000000000000000000000000..734a77e9cc2ba8f9704433c37439449b1830f7f0
--- /dev/null
+++ b/rknn-toolkit2/packages/md5sum.txt
@@ -0,0 +1,6 @@
+49dc6e0b6c276db1db44ba38e6f4a277 rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl
+3ed72827476a2b2905471c8dddd33a04 rknn_toolkit2-2.1.0+708089d1-cp311-cp311-linux_x86_64.whl
+5d8441cb5951cff671cb678584c83d93 rknn_toolkit2-2.1.0+708089d1-cp36-cp36m-linux_x86_64.whl
+004c4d1eebc3f55572858020145ed147 rknn_toolkit2-2.1.0+708089d1-cp37-cp37m-linux_x86_64.whl
+f819ebb2a3badbc44b21924969c7f588 rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl
+f84006e40bf8039757a2ae67013c8a11 rknn_toolkit2-2.1.0+708089d1-cp39-cp39-linux_x86_64.whl
diff --git a/rknn-toolkit2/packages/requirements_cp310-2.1.0.txt b/rknn-toolkit2/packages/requirements_cp310-2.1.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6b22f2aef8306c8d751380249239fb0558a2619d
--- /dev/null
+++ b/rknn-toolkit2/packages/requirements_cp310-2.1.0.txt
@@ -0,0 +1,20 @@
+# if install failed, please change the pip source to 'https://pypi.tuna.tsinghua.edu.cn/simple/'
+
+# base deps
+protobuf==3.20.3
+
+# utils
+psutil>=5.9.0
+ruamel.yaml>=0.17.21
+scipy>=1.9.3
+tqdm>=4.64.1
+opencv-python>=4.5.5.64
+fast-histogram>=0.11
+numpy<=1.26.4
+
+# base
+onnx==1.14.1
+onnxoptimizer==0.3.8
+onnxruntime==1.16.0
+torch>=1.13.1,<=2.1.0
+tensorflow==2.8.1
\ No newline at end of file
diff --git a/rknn-toolkit2/packages/requirements_cp311-2.1.0.txt b/rknn-toolkit2/packages/requirements_cp311-2.1.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b4320ac76fcbd1fb00aac3f6e23429c5400c216b
--- /dev/null
+++ b/rknn-toolkit2/packages/requirements_cp311-2.1.0.txt
@@ -0,0 +1,21 @@
+# if install failed, please change the pip source to 'https://pypi.tuna.tsinghua.edu.cn/simple/'
+
+# base deps
+protobuf==3.20.3
+
+# utils
+psutil>=5.9.0
+ruamel.yaml>=0.17.21
+scipy>=1.9.3
+tqdm>=4.64.1
+opencv-python>=4.5.5.64
+fast-histogram>=0.11
+Pillow>=10.0.1
+numpy<=1.26.4
+
+# base
+onnx==1.14.1
+onnxoptimizer==0.3.8
+onnxruntime==1.16.0
+torch>=1.13.1,<=2.1.0
+tensorflow==2.14.0
\ No newline at end of file
diff --git a/rknn-toolkit2/packages/requirements_cp36-2.1.0.txt b/rknn-toolkit2/packages/requirements_cp36-2.1.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e63f7bbdd05b39616c66dfd29c5652b09abec9ca
--- /dev/null
+++ b/rknn-toolkit2/packages/requirements_cp36-2.1.0.txt
@@ -0,0 +1,20 @@
+# if install failed, please change the pip source to 'https://pypi.tuna.tsinghua.edu.cn/simple/'
+
+# base deps
+protobuf==3.12.2
+
+# utils
+psutil>=5.9.0
+ruamel.yaml>=0.17.4
+scipy>=1.5.4
+tqdm>=4.64.0
+opencv-python>=4.5.5.64,<=4.6.0.66
+fast-histogram>=0.11
+numpy<=1.26.4
+
+# base
+onnx==1.10.0
+onnxoptimizer==0.2.7
+onnxruntime==1.10.0
+torch>=1.10.1,<=2.1.0
+tensorflow==2.6.2
\ No newline at end of file
diff --git a/rknn-toolkit2/packages/requirements_cp37-2.1.0.txt b/rknn-toolkit2/packages/requirements_cp37-2.1.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..14f2bc5159b52ac39925a68327d8967cf549d565
--- /dev/null
+++ b/rknn-toolkit2/packages/requirements_cp37-2.1.0.txt
@@ -0,0 +1,20 @@
+# if install failed, please change the pip source to 'https://pypi.tuna.tsinghua.edu.cn/simple/'
+
+# base deps
+protobuf==3.20.3
+
+# utils
+psutil>=5.9.0
+ruamel.yaml>=0.17.4
+scipy>=1.5.4
+tqdm>=4.64.0
+opencv-python>=4.5.5.64
+fast-histogram>=0.11
+numpy<=1.26.4
+
+# base
+onnx==1.14.1
+onnxoptimizer==0.2.7
+onnxruntime==1.14.1
+torch>=1.10.1,<=2.1.0
+tensorflow==2.8.1
\ No newline at end of file
diff --git a/rknn-toolkit2/packages/requirements_cp38-2.1.0.txt b/rknn-toolkit2/packages/requirements_cp38-2.1.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..44b71bad88b7a412694dad34fd489e08ed709cca
--- /dev/null
+++ b/rknn-toolkit2/packages/requirements_cp38-2.1.0.txt
@@ -0,0 +1,20 @@
+# if install failed, please change the pip source to 'https://pypi.tuna.tsinghua.edu.cn/simple/'
+
+# base deps
+protobuf==3.20.3
+
+# utils
+psutil>=5.9.0
+ruamel.yaml>=0.17.4
+scipy>=1.5.4
+tqdm>=4.64.0
+opencv-python>=4.5.5.64
+fast-histogram>=0.11
+numpy<=1.26.4
+
+# base
+onnx==1.14.1
+onnxoptimizer==0.2.7
+onnxruntime==1.16.0
+torch>=1.10.1,<=2.1.0
+tensorflow==2.8.1
\ No newline at end of file
diff --git a/rknn-toolkit2/packages/requirements_cp39-2.1.0.txt b/rknn-toolkit2/packages/requirements_cp39-2.1.0.txt
new file mode 100644
index 0000000000000000000000000000000000000000..44b71bad88b7a412694dad34fd489e08ed709cca
--- /dev/null
+++ b/rknn-toolkit2/packages/requirements_cp39-2.1.0.txt
@@ -0,0 +1,20 @@
+# if install failed, please change the pip source to 'https://pypi.tuna.tsinghua.edu.cn/simple/'
+
+# base deps
+protobuf==3.20.3
+
+# utils
+psutil>=5.9.0
+ruamel.yaml>=0.17.4
+scipy>=1.5.4
+tqdm>=4.64.0
+opencv-python>=4.5.5.64
+fast-histogram>=0.11
+numpy<=1.26.4
+
+# base
+onnx==1.14.1
+onnxoptimizer==0.2.7
+onnxruntime==1.16.0
+torch>=1.10.1,<=2.1.0
+tensorflow==2.8.1
\ No newline at end of file
diff --git a/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..33c85905ba5c782e145634e5e217f56d6711c61c
--- /dev/null
+++ b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp310-cp310-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4f85d6a28666e39f5804e64ebdd830cc6399530842fe38e5754413c92f8f96b
+size 44811343
diff --git a/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp311-cp311-linux_x86_64.whl b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp311-cp311-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..97ba6eaf2e866903d54dcd3b5da6d372b3853d97
--- /dev/null
+++ b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp311-cp311-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4705565323678930b9fc41961a553f6e4a6f93287dc7f55c53747a044b903509
+size 44830336
diff --git a/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp36-cp36m-linux_x86_64.whl b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp36-cp36m-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..0e5171f73f59915cc4d9691c6b8b7048e9a1ff3f
--- /dev/null
+++ b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp36-cp36m-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c7731c97f7676945365cfd19fca8f07b6efbe98dca1f6a2a514082eaca2ab89
+size 43939251
diff --git a/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp37-cp37m-linux_x86_64.whl b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp37-cp37m-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..1adad530a38f337a2d243c4deed548ff8e3be35c
--- /dev/null
+++ b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp37-cp37m-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a978410143654a48b5d70344ceb89aaad706a04764d6b7e8c37b65115a6e6556
+size 45696542
diff --git a/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..db60a57870ff1ade743420d18f9b641fc62e47eb
--- /dev/null
+++ b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp38-cp38-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce5f162e56e4e0117b939b4dd59e12fbf69d4d8503b7d4f17d88cba1a9492aab
+size 48556997
diff --git a/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp39-cp39-linux_x86_64.whl b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp39-cp39-linux_x86_64.whl
new file mode 100644
index 0000000000000000000000000000000000000000..4e11ec1caf750a0b15eebe2d56af3aa97f0ec7db
--- /dev/null
+++ b/rknn-toolkit2/packages/rknn_toolkit2-2.1.0+708089d1-cp39-cp39-linux_x86_64.whl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24b27f7bb96d4b81565c787bbc3154887327455e079c3df6ba2d22d168d52618
+size 48518610
diff --git a/rknpu2/examples/3rdparty/cnpy/cnpy.cpp b/rknpu2/examples/3rdparty/cnpy/cnpy.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5754a681e9df3e988f6d13792c43de111c8cf12f
--- /dev/null
+++ b/rknpu2/examples/3rdparty/cnpy/cnpy.cpp
@@ -0,0 +1,403 @@
+// Copyright (C) 2011 Carl Rogers
+// Released under MIT License
+// license available in LICENSE file, or at http://www.opensource.org/licenses/mit-license.php
+
+#include "cnpy.h"
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+char cnpy::BigEndianTest(int size)
+{
+ if (size == 1)
+ return '|';
+ int x = 1;
+ return (((char*)&x)[0]) ? '<' : '>';
+}
+
+char cnpy::map_type(const std::type_info& t)
+{
+ if (t == typeid(float))
+ return 'f';
+ if (t == typeid(double))
+ return 'f';
+ if (t == typeid(long double))
+ return 'f';
+
+ if (t == typeid(int))
+ return 'i';
+ if (t == typeid(char))
+ return 'i';
+ if (t == typeid(signed char))
+ return 'i';
+ if (t == typeid(short))
+ return 'i';
+ if (t == typeid(long))
+ return 'i';
+ if (t == typeid(long long))
+ return 'i';
+
+ if (t == typeid(unsigned char))
+ return 'u';
+ if (t == typeid(unsigned short))
+ return 'u';
+ if (t == typeid(unsigned long))
+ return 'u';
+ if (t == typeid(unsigned long long))
+ return 'u';
+ if (t == typeid(unsigned int))
+ return 'u';
+
+ if (t == typeid(bool))
+ return 'b';
+
+ if (t == typeid(std::complex))
+ return 'c';
+ if (t == typeid(std::complex))
+ return 'c';
+ if (t == typeid(std::complex))
+ return 'c';
+
+ else
+ return '?';
+}
+
+template <>
+std::vector& cnpy::operator+=(std::vector& lhs, const std::string rhs)
+{
+ lhs.insert(lhs.end(), rhs.begin(), rhs.end());
+ return lhs;
+}
+
+template <>
+std::vector& cnpy::operator+=(std::vector& lhs, const char* rhs)
+{
+ // write in little endian
+ size_t len = strlen(rhs);
+ lhs.reserve(len);
+ for (size_t byte = 0; byte < len; byte++) {
+ lhs.push_back(rhs[byte]);
+ }
+ return lhs;
+}
+
+void cnpy::parse_npy_header(unsigned char* buffer, size_t& word_size, std::vector& shape, bool& fortran_order,
+ std::string& typeName)
+{
+ // std::string magic_string(buffer,6);
+ uint8_t major_version = *reinterpret_cast(buffer + 6);
+ uint8_t minor_version = *reinterpret_cast(buffer + 7);
+ uint16_t header_len = *reinterpret_cast(buffer + 8);
+ std::string header(reinterpret_cast(buffer + 9), header_len);
+
+ size_t loc1, loc2;
+
+ // fortran order
+ loc1 = header.find("fortran_order") + 16;
+ fortran_order = (header.substr(loc1, 4) == "True" ? true : false);
+ if (fortran_order)
+ throw std::runtime_error("npy input file: 'fortran_order' must be false, use: arr2 = np.ascontiguousarray(arr1)");
+
+ // shape
+ loc1 = header.find("(");
+ loc2 = header.find(")");
+
+ std::regex num_regex("[0-9][0-9]*");
+ std::smatch sm;
+ shape.clear();
+
+ std::string str_shape = header.substr(loc1 + 1, loc2 - loc1 - 1);
+ while (std::regex_search(str_shape, sm, num_regex)) {
+ shape.push_back(std::stoi(sm[0].str()));
+ str_shape = sm.suffix().str();
+ }
+
+ // endian, word size, data type
+ // byte order code | stands for not applicable.
+ // not sure when this applies except for byte array
+ loc1 = header.find("descr") + 9;
+ bool littleEndian = (header[loc1] == '<' || header[loc1] == '|' ? true : false);
+ assert(littleEndian);
+
+ // char type = header[loc1+1];
+ // assert(type == map_type(T));
+
+ std::string str_ws = header.substr(loc1 + 2);
+ loc2 = str_ws.find("'");
+ word_size = atoi(str_ws.substr(0, loc2).c_str());
+ if (header.substr(loc1 + 1, 1) == "i") {
+ typeName = "int";
+ } else if (header.substr(loc1 + 1, 1) == "u") {
+ typeName = "uint";
+ } else if (header.substr(loc1 + 1, 1) == "f") {
+ typeName = "float";
+ }
+ typeName = typeName + std::to_string(word_size * 8);
+}
+
+void cnpy::parse_npy_header(FILE* fp, size_t& word_size, std::vector& shape, bool& fortran_order,
+ std::string& typeName)
+{
+ char buffer[256];
+ size_t res = fread(buffer, sizeof(char), 11, fp);
+ if (res != 11)
+ throw std::runtime_error("parse_npy_header: failed fread");
+ std::string header = fgets(buffer, 256, fp);
+ assert(header[header.size() - 1] == '\n');
+
+ size_t loc1, loc2;
+
+ // fortran order
+ loc1 = header.find("fortran_order");
+ if (loc1 == std::string::npos)
+ throw std::runtime_error("parse_npy_header: failed to find header keyword: 'fortran_order'");
+ loc1 += 16;
+ fortran_order = (header.substr(loc1, 4) == "True" ? true : false);
+ if (fortran_order)
+ throw std::runtime_error("npy input file: 'fortran_order' must be false, use: arr2 = np.ascontiguousarray(arr1)");
+
+ // shape
+ loc1 = header.find("(");
+ loc2 = header.find(")");
+ if (loc1 == std::string::npos || loc2 == std::string::npos)
+ throw std::runtime_error("parse_npy_header: failed to find header keyword: '(' or ')'");
+
+ std::regex num_regex("[0-9][0-9]*");
+ std::smatch sm;
+ shape.clear();
+
+ std::string str_shape = header.substr(loc1 + 1, loc2 - loc1 - 1);
+ while (std::regex_search(str_shape, sm, num_regex)) {
+ shape.push_back(std::stoi(sm[0].str()));
+ str_shape = sm.suffix().str();
+ }
+
+ // endian, word size, data type
+ // byte order code | stands for not applicable.
+ // not sure when this applies except for byte array
+ loc1 = header.find("descr");
+ if (loc1 == std::string::npos)
+ throw std::runtime_error("parse_npy_header: failed to find header keyword: 'descr'");
+ loc1 += 9;
+ bool littleEndian = (header[loc1] == '<' || header[loc1] == '|' ? true : false);
+ assert(littleEndian);
+
+ // char type = header[loc1+1];
+ // assert(type == map_type(T));
+
+ std::string str_ws = header.substr(loc1 + 2);
+ loc2 = str_ws.find("'");
+ word_size = atoi(str_ws.substr(0, loc2).c_str());
+ if (header.substr(loc1 + 1, 1) == "i") {
+ typeName = "int";
+ } else if (header.substr(loc1 + 1, 1) == "u") {
+ typeName = "uint";
+ } else if (header.substr(loc1 + 1, 1) == "f") {
+ typeName = "float";
+ }
+ typeName = typeName + std::to_string(word_size * 8);
+}
+
+void cnpy::parse_zip_footer(FILE* fp, uint16_t& nrecs, size_t& global_header_size, size_t& global_header_offset)
+{
+ std::vector footer(22);
+ fseek(fp, -22, SEEK_END);
+ size_t res = fread(&footer[0], sizeof(char), 22, fp);
+ if (res != 22)
+ throw std::runtime_error("parse_zip_footer: failed fread");
+
+ uint16_t disk_no, disk_start, nrecs_on_disk, comment_len;
+ disk_no = *(uint16_t*)&footer[4];
+ disk_start = *(uint16_t*)&footer[6];
+ nrecs_on_disk = *(uint16_t*)&footer[8];
+ nrecs = *(uint16_t*)&footer[10];
+ global_header_size = *(uint32_t*)&footer[12];
+ global_header_offset = *(uint32_t*)&footer[16];
+ comment_len = *(uint16_t*)&footer[20];
+
+ assert(disk_no == 0);
+ assert(disk_start == 0);
+ assert(nrecs_on_disk == nrecs);
+ assert(comment_len == 0);
+}
+
+cnpy::NpyArray load_the_npy_file(FILE* fp)
+{
+ std::vector shape;
+ size_t word_size;
+ std::string typeName;
+ bool fortran_order;
+ cnpy::parse_npy_header(fp, word_size, shape, fortran_order, typeName);
+
+ cnpy::NpyArray arr(shape, word_size, fortran_order, typeName);
+ size_t nread = fread(arr.data(), 1, arr.num_bytes(), fp);
+ if (nread != arr.num_bytes())
+ throw std::runtime_error("load_the_npy_file: failed fread");
+ return arr;
+}
+
+cnpy::NpyArray load_the_npz_array(FILE* fp, uint32_t compr_bytes, uint32_t uncompr_bytes)
+{
+ std::vector buffer_compr(compr_bytes);
+ std::vector buffer_uncompr(uncompr_bytes);
+ size_t nread = fread(&buffer_compr[0], 1, compr_bytes, fp);
+ if (nread != compr_bytes)
+ throw std::runtime_error("load_the_npy_file: failed fread");
+
+#if 0
+ int err;
+ z_stream d_stream;
+
+ d_stream.zalloc = Z_NULL;
+ d_stream.zfree = Z_NULL;
+ d_stream.opaque = Z_NULL;
+ d_stream.avail_in = 0;
+ d_stream.next_in = Z_NULL;
+ err = inflateInit2(&d_stream, -MAX_WBITS);
+
+ d_stream.avail_in = compr_bytes;
+ d_stream.next_in = &buffer_compr[0];
+ d_stream.avail_out = uncompr_bytes;
+ d_stream.next_out = &buffer_uncompr[0];
+
+ err = inflate(&d_stream, Z_FINISH);
+ err = inflateEnd(&d_stream);
+#endif
+
+ std::vector shape;
+ size_t word_size;
+ bool fortran_order;
+ std::string typeName;
+ cnpy::parse_npy_header(&buffer_uncompr[0], word_size, shape, fortran_order, typeName);
+
+ cnpy::NpyArray array(shape, word_size, fortran_order, typeName);
+
+ size_t offset = uncompr_bytes - array.num_bytes();
+ memcpy(array.data(), &buffer_uncompr[0] + offset, array.num_bytes());
+
+ return array;
+}
+
+cnpy::npz_t cnpy::npz_load(std::string fname)
+{
+ FILE* fp = fopen(fname.c_str(), "rb");
+
+ if (!fp) {
+ throw std::runtime_error("npz_load: Error! Unable to open file " + fname + "!");
+ }
+
+ cnpy::npz_t arrays;
+
+ while (1) {
+ std::vector local_header(30);
+ size_t headerres = fread(&local_header[0], sizeof(char), 30, fp);
+ if (headerres != 30)
+ throw std::runtime_error("npz_load: failed fread");
+
+ // if we've reached the global header, stop reading
+ if (local_header[2] != 0x03 || local_header[3] != 0x04)
+ break;
+
+ // read in the variable name
+ uint16_t name_len = *(uint16_t*)&local_header[26];
+ std::string varname(name_len, ' ');
+ size_t vname_res = fread(&varname[0], sizeof(char), name_len, fp);
+ if (vname_res != name_len)
+ throw std::runtime_error("npz_load: failed fread");
+
+ // erase the lagging .npy
+ varname.erase(varname.end() - 4, varname.end());
+
+ // read in the extra field
+ uint16_t extra_field_len = *(uint16_t*)&local_header[28];
+ if (extra_field_len > 0) {
+ std::vector buff(extra_field_len);
+ size_t efield_res = fread(&buff[0], sizeof(char), extra_field_len, fp);
+ if (efield_res != extra_field_len)
+ throw std::runtime_error("npz_load: failed fread");
+ }
+
+ uint16_t compr_method = *reinterpret_cast(&local_header[0] + 8);
+ uint32_t compr_bytes = *reinterpret_cast(&local_header[0] + 18);
+ uint32_t uncompr_bytes = *reinterpret_cast(&local_header[0] + 22);
+
+ if (compr_method == 0) {
+ arrays[varname] = load_the_npy_file(fp);
+ } else {
+ arrays[varname] = load_the_npz_array(fp, compr_bytes, uncompr_bytes);
+ }
+ }
+
+ fclose(fp);
+ return arrays;
+}
+
+cnpy::NpyArray cnpy::npz_load(std::string fname, std::string varname)
+{
+ FILE* fp = fopen(fname.c_str(), "rb");
+
+ if (!fp)
+ throw std::runtime_error("npz_load: Unable to open file " + fname);
+
+ while (1) {
+ std::vector local_header(30);
+ size_t header_res = fread(&local_header[0], sizeof(char), 30, fp);
+ if (header_res != 30)
+ throw std::runtime_error("npz_load: failed fread");
+
+ // if we've reached the global header, stop reading
+ if (local_header[2] != 0x03 || local_header[3] != 0x04)
+ break;
+
+ // read in the variable name
+ uint16_t name_len = *(uint16_t*)&local_header[26];
+ std::string vname(name_len, ' ');
+ size_t vname_res = fread(&vname[0], sizeof(char), name_len, fp);
+ if (vname_res != name_len)
+ throw std::runtime_error("npz_load: failed fread");
+ vname.erase(vname.end() - 4, vname.end()); // erase the lagging .npy
+
+ // read in the extra field
+ uint16_t extra_field_len = *(uint16_t*)&local_header[28];
+ fseek(fp, extra_field_len, SEEK_CUR); // skip past the extra field
+
+ uint16_t compr_method = *reinterpret_cast(&local_header[0] + 8);
+ uint32_t compr_bytes = *reinterpret_cast(&local_header[0] + 18);
+ uint32_t uncompr_bytes = *reinterpret_cast(&local_header[0] + 22);
+
+ if (vname == varname) {
+ NpyArray array = (compr_method == 0) ? load_the_npy_file(fp) : load_the_npz_array(fp, compr_bytes, uncompr_bytes);
+ fclose(fp);
+ return array;
+ } else {
+ // skip past the data
+ uint32_t size = *(uint32_t*)&local_header[22];
+ fseek(fp, size, SEEK_CUR);
+ }
+ }
+
+ fclose(fp);
+
+ // if we get here, we haven't found the variable in the file
+ throw std::runtime_error("npz_load: Variable name " + varname + " not found in " + fname);
+}
+
+cnpy::NpyArray cnpy::npy_load(std::string fname)
+{
+ FILE* fp = fopen(fname.c_str(), "rb");
+
+ if (!fp)
+ throw std::runtime_error("npy_load: Unable to open file " + fname);
+
+ NpyArray arr = load_the_npy_file(fp);
+
+ fclose(fp);
+ return arr;
+}
diff --git a/rknpu2/examples/3rdparty/cnpy/cnpy.h b/rknpu2/examples/3rdparty/cnpy/cnpy.h
new file mode 100644
index 0000000000000000000000000000000000000000..0252b4bf09a61472a37f9282f1c2b3c7efa72314
--- /dev/null
+++ b/rknpu2/examples/3rdparty/cnpy/cnpy.h
@@ -0,0 +1,321 @@
+// Copyright (C) 2011 Carl Rogers
+// Released under MIT License
+// license available in LICENSE file, or at http://www.opensource.org/licenses/mit-license.php
+
+#ifndef LIBCNPY_H_
+#define LIBCNPY_H_
+
+#if 0
+#include
+#endif
+
+#include
+
+#include
+#include
+#include
+#include
+#include