diff --git a/src/LayerPacker.php b/src/LayerPacker.php index e74fe146..0e42d761 100644 --- a/src/LayerPacker.php +++ b/src/LayerPacker.php @@ -104,23 +104,26 @@ public function packLayer(ItemList &$items, PackedItemList $packedItemList, int if ($orientatedItem instanceof OrientatedItem) { $packedItem = PackedItem::fromOrientatedItem($orientatedItem, $x, $y, $z); $layer->insert($packedItem); - $remainingWeightAllowed -= $itemToPack->getWeight(); $packedItemList->insert($packedItem); $rowLength = max($rowLength, $packedItem->getLength()); + $prevItem = $orientatedItem; - //Figure out if we can stack the next item vertically on top of this rather than side by side + //Figure out if we can stack items on top of this rather than side by side //e.g. when we've packed a tall item, and have just put a shorter one next to it. - $this->packVerticallyInsideItemFootprint($layer, $packedItem, $packedItemList, $items, $remainingWeightAllowed, $guidelineLayerDepth, $rowLength, $x, $y, $z, $considerStability); - - $prevItem = $orientatedItem; + $stackableDepth = ($guidelineLayerDepth ?: $layer->getDepth()) - $packedItem->getDepth(); + if ($stackableDepth > 0) { + $stackedLayer = $this->packLayer($items, $packedItemList, $x, $y, $z + $packedItem->getDepth(), $x + $packedItem->getWidth(), $y + $packedItem->getLength(), $stackableDepth, $stackableDepth, $considerStability); + $layer->merge($stackedLayer); + } //Having now placed an item, there is space *within the same row* along the length. Pack into that. - if (!$this->singlePassMode && $rowLength - $orientatedItem->getLength() > 0) { + if ($rowLength - $orientatedItem->getLength() > 0) { $layer->merge($this->packLayer($items, $packedItemList, $x, $y + $orientatedItem->getLength(), $z, $widthForLayer, $rowLength, $depthForLayer, $layer->getDepth(), $considerStability)); } $x += $packedItem->getWidth(); + $remainingWeightAllowed = $this->box->getMaxWeight() - $this->box->getEmptyWeight() - $packedItemList->getWeight(); // remember may have packed additional items if ($items->count() === 0 && $skippedItems) { $items = ItemList::fromArray(array_merge($skippedItems, iterator_to_array($items)), true); @@ -162,42 +165,6 @@ public function packLayer(ItemList &$items, PackedItemList $packedItemList, int return $layer; } - private function packVerticallyInsideItemFootprint(PackedLayer $layer, PackedItem $packedItem, PackedItemList $packedItemList, ItemList &$items, int &$remainingWeightAllowed, int $guidelineLayerDepth, int $rowLength, int $x, int $y, int $z, bool $considerStability): void - { - $stackableDepth = ($guidelineLayerDepth ?: $layer->getDepth()) - $packedItem->getDepth(); - $stackedZ = $z + $packedItem->getDepth(); - $stackSkippedItems = []; - $stackedItem = $packedItem->toOrientatedItem(); - while ($stackableDepth > 0 && $items->count() > 0) { - $itemToTryStacking = $items->extract(); - - //skip items that will never fit - if (!$this->checkNonDimensionalConstraints($itemToTryStacking, $remainingWeightAllowed, $packedItemList)) { - continue; - } - - $stackedItem = $this->orientatedItemFactory->getBestOrientation($itemToTryStacking, $stackedItem, $items, $packedItem->getWidth(), $packedItem->getLength(), $stackableDepth, $rowLength, $x, $y, $stackedZ, $packedItemList, $considerStability); - if ($stackedItem) { - $packedStackedItem = PackedItem::fromOrientatedItem($stackedItem, $x, $y, $stackedZ); - $layer->insert($packedStackedItem); - $remainingWeightAllowed -= $itemToTryStacking->getWeight(); - $packedItemList->insert($packedStackedItem); - $stackableDepth -= $stackedItem->getDepth(); - $stackedZ += $stackedItem->getDepth(); - continue; - } - - $stackSkippedItems[] = $itemToTryStacking; - // abandon here if next item is the same, no point trying to keep going - while ($items->count() > 0 && static::isSameDimensions($itemToTryStacking, $items->top())) { - $stackSkippedItems[] = $items->extract(); - } - } - if ($stackSkippedItems) { - $items = ItemList::fromArray(array_merge($stackSkippedItems, iterator_to_array($items)), true); - } - } - /** * As well as purely dimensional constraints, there are other constraints that need to be met * e.g. weight limits or item-specific restrictions (e.g. max batteries per box). diff --git a/tests/InfalliblePackerTest.php b/tests/InfalliblePackerTest.php index 06750bb1..b3902c3c 100644 --- a/tests/InfalliblePackerTest.php +++ b/tests/InfalliblePackerTest.php @@ -453,6 +453,6 @@ public function testIssue182B(): void /** @var PackedBox[] $packedBoxes */ $packedBoxes = iterator_to_array($packer->pack(), false); - self::assertCount(41, $packedBoxes); + self::assertCount(42, $packedBoxes); } } diff --git a/tests/PackerTest.php b/tests/PackerTest.php index 0243ad15..9ee4ba3f 100644 --- a/tests/PackerTest.php +++ b/tests/PackerTest.php @@ -557,4 +557,20 @@ public function testIssue206(): void self::assertCount(2, $packedBoxes); } + + public function testIssue231(): void + { + $packer = new Packer(); + $packer->setMaxBoxesToBalanceWeight(0); + $packer->addBox(new TestBox('Box 2.5-1', 30, 20, 20, 2, 30, 20, 20, 1000)); + + $packer->addItem(new TestItem('Item 1', 20, 20, 2, 0, false), 4); + $packer->addItem(new TestItem('Item 2', 8, 3, 2, 0, false), 5); + $packer->addItem(new TestItem('Item 3', 10, 10, 10, 0, false), 4); + $packer->addItem(new TestItem('Item 4', 12, 12, 10, 0, false), 2); + $packer->addItem(new TestItem('Item 5', 6, 4, 2, 0, false), 2); + $packedBoxes = $packer->pack(); + + self::assertCount(1, $packedBoxes); + } } diff --git a/tests/data/expected.csv b/tests/data/expected.csv index c20d75bc..8aa84338 100644 --- a/tests/data/expected.csv +++ b/tests/data/expected.csv @@ -393,7 +393,7 @@ 1672e9897bfb16f7f644365da8d6992c,1,0,26.4,1,0,26.4 167db38fa514a30e70f167f70d19f214,1,0,16.2,1,0,16.2 168065302d10d2f4b683e3d5e7475594,2,180200.3,32.7,1,0,19.8 -1680b70ba864c313d28c9386ce54ac25,3,11023938.7,44,3,8617.6,38.5 +1680b70ba864c313d28c9386ce54ac25,3,11023938.7,44,3,6590.9,38.5 1694662b95ac32661ee2b45826bb54f6,1,0,42.4,1,0,42.4 16a2283358cddda00bf2e47e5ad746d3,1,0,24,1,0,24 16a59c72d05be053c19e4b32ceafaef0,1,0,29.2,1,0,29.2 @@ -1039,7 +1039,7 @@ 3bdea76452dfd0a2dd349e05688ceea7,1,0,36.2,1,0,36.2 3bec6daa3c92aab45d0db63b688bad9e,5,89240,34.3,2,3543806.3,18.1 3becb246809835f192b15039849f3528,1,0,27.5,1,0,27.5 -3bee0a82a9098c92945daac991fca070,2,12.3,23.7,1,0,7.1 +3bee0a82a9098c92945daac991fca070,2,812.3,23.7,1,0,7.1 3c1b74fc52f870503d59c3327da6d203,2,607620.3,40,1,0,24.2 3c29ccbdb900b4ade8f05884d9bafb1c,1,0,38.1,1,0,38.1 3c2bc39429c8d1a0db6369149f454d65,2,2916,39.5,1,0,11.9 @@ -1379,7 +1379,7 @@ 4fb44d17cda18d0c04605f4374ffdb1a,2,35344,31.3,1,0,9.4 4fc2ca67d296a3e0d82f8b854923d168,1,0,15.9,1,0,15.9 4fcd699375dfa7df1c0eb12192d63b7c,3,51416.2,39.8,1,0,17.9 -4fd15118c3e987fccfbad711528ff651,2,20306.3,33.2,1,0,20.1 +4fd15118c3e987fccfbad711528ff651,2,137270.3,33.2,1,0,20.1 4fe79c3227acbda1fe01333d510f123d,1,0,18.8,1,0,18.8 500766fa9c90269017ac1194fa6c1e0e,1,0,22.9,1,0,22.9 500db53f251bd71c4d30a298b982f6ac,1,0,45.5,1,0,45.5 @@ -1890,7 +1890,7 @@ 6d0c88f8167434fcab5a7b9f330f0885,2,0,42.6,2,0,42.6 6d111f1a879a3c039d73657ccfe74005,1,0,31,1,0,31 6d1ebe448310ccf0f310b0236a9992d5,1,0,40.4,1,0,40.4 -6d30ec00cea682d3aadfab28a2665e39,1,0,44.8,1,0,44.8 +6d30ec00cea682d3aadfab28a2665e39,2,2500,22.4,1,0,6.7 6d31a51a06785af8acc76099922e6c77,1,0,33.1,1,0,33.1 6d3a1f35383f5a21e69f0477bfe8ba3b,2,11923209,66.7,2,11923209,66.7 6d3ac65f88396d25753aafd4abbf6b0c,1,0,28.5,1,0,28.5 @@ -2811,7 +2811,7 @@ a4e8c2d7bb8e21c07d5d5bae9a48e4d6,1,0,50.3,1,0,50.3 a4fd5a590aaa3f655ba15495467d6f70,1,0,18.6,1,0,18.6 a4ff6a3aaf181e8d271f83f5f54c08f0,1,0,22.4,1,0,22.4 a519050b60f3a28945c3af20e54c98e5,1,0,34.1,1,0,34.1 -a52ed384032d0d764c40c5b198b0cfe1,1,0,60.9,1,0,60.9 +a52ed384032d0d764c40c5b198b0cfe1,2,506.3,30.4,1,0,9.1 a5328f72f09fcc8322081db3107d25de,1,0,40.1,1,0,40.1 a534bd597a5e786f47acade9b5189bb0,2,2352.3,29.4,1,0,17.8 a536b666854eead81fb1bf325fedcf9a,1,0,42.1,1,0,42.1 @@ -2826,7 +2826,7 @@ a5d6c152df8c6966ed3b39588106079f,1,0,17.2,1,0,17.2 a5ec92541060f2793041970dd5de10c3,1,0,16.2,1,0,16.2 a5efd1b0c6ca442b1c7a59bf00938d3e,1,0,46.9,1,0,46.9 a60d82e7aaff19e99d10de4cc5444356,1,0,27.5,1,0,27.5 -a6301dc72697cfd7e96312f0b33f51ac,2,3152400.3,51,1,0,30.9 +a6301dc72697cfd7e96312f0b33f51ac,2,3106406.3,51,1,0,30.9 a631d607f7a57e526b5c1fe63bab1a62,1,0,20.6,1,0,20.6 a632234c51a55c0ff877973a0198fcba,2,462.3,34.9,1,0,10.5 a6354eea25581f1805f09ffcd40eabe8,1,0,18.1,1,0,18.1 @@ -3736,7 +3736,7 @@ dc9737ca1f92510793b36d8ae7cb5e3d,1,0,15.8,1,0,15.8 dcaca1dd153991ec35057c6d4fee3486,1,0,44.6,1,0,44.6 dcc277e172757d58122d2ccb930f8c4b,1,0,43.9,1,0,43.9 dcf2491716b475d4ecbd6cc3982a415e,2,1156,31.8,1,0,9.5 -dcf5b5a83a9848963949ab6a6ba6abd7,4,4363573.3,46.4,2,23104,38.6 +dcf5b5a83a9848963949ab6a6ba6abd7,4,4363573.3,46.4,2,1156,38.6 dd0a4b2010a740c448bd83907d2980ea,1,0,28.5,1,0,28.5 dd0b36c45e6dd7c0bbca1132041a2bc8,1,0,36.1,1,0,36.1 dd10cf63e03f3226d61c074d9d8e1caf,1,0,20.3,1,0,20.3 @@ -3746,7 +3746,7 @@ dd655a5bf318ca48d36010fce2709553,1,0,22.3,1,0,22.3 dd74f550bb177a933b62b5d2836fa4ac,1,0,47.6,1,0,47.6 dd8191420604dcedf2ec59a470b09b4b,2,6642.3,30.5,1,0,9.1 dd897cf7eea6d6a7cc0380f78f29ba4f,1,0,35.5,1,0,35.5 -dd9218a4b66b8a0378dc16a8fba27f67,2,12089529,45.5,2,27556,35.9 +dd9218a4b66b8a0378dc16a8fba27f67,2,12089529,45.5,2,25,35.9 dd9fb38020ae211a57e53460275d0669,1,0,26.4,1,0,26.4 ddaa30c4e2af2de865dda0e017d98665,2,110.3,49.9,1,0,15 ddd908a2c90918db7e76f544b2a35883,1,0,44,1,0,44 @@ -4199,7 +4199,7 @@ fa5d9ae6b63e9d33769081f7d4f2b115,1,0,30,1,0,30 fa74eadd074843a8c78542d7602c31d4,1,0,48.4,1,0,48.4 faa914e796a804997c19804300db0204,1,0,42.7,1,0,42.7 faae756f0de0eef0384474255db1e662,1,0,41.6,1,0,41.6 -fac6c548649f983888821cb370e87966,1,0,34,1,0,34 +fac6c548649f983888821cb370e87966,1,0,74.5,1,0,34 fad39d2e603bae2ac15387a3662de7ff,2,22201,37.6,1,0,11.3 fae22f77df7666ed2fdc5757bd78ed07,1,0,33.9,1,0,33.9 faec3db769a11d268cd4845fb3966167,1,0,41.1,1,0,41.1 diff --git a/tests/data/thpack-expected.csv b/tests/data/thpack-expected.csv index 9d33a3a2..9fa8e35f 100644 --- a/tests/data/thpack-expected.csv +++ b/tests/data/thpack-expected.csv @@ -26,7 +26,7 @@ Bischoff #3-10,69.7 Bischoff #3-11,71 Bischoff #3-12,79.8 Bischoff #3-13,89.9 -Bischoff #3-14,81 +Bischoff #3-14,81.3 Bischoff #3-15,71.5 Bischoff #3-16,84.1 Bischoff #3-17,87.4 @@ -114,9 +114,9 @@ Bischoff #3-98,81.3 Bischoff #3-99,78 Bischoff #3-100,62.9 Bischoff #5-1,72.9 -Bischoff #5-2,83.8 +Bischoff #5-2,84.3 Bischoff #5-3,71.5 -Bischoff #5-4,65.9 +Bischoff #5-4,73.9 Bischoff #5-5,83.5 Bischoff #5-6,80.4 Bischoff #5-7,75.8 @@ -148,7 +148,7 @@ Bischoff #5-32,81.8 Bischoff #5-33,82.7 Bischoff #5-34,75.8 Bischoff #5-35,84.6 -Bischoff #5-36,73.2 +Bischoff #5-36,74.9 Bischoff #5-37,79.5 Bischoff #5-38,75.6 Bischoff #5-39,82.7 @@ -165,7 +165,7 @@ Bischoff #5-49,85.9 Bischoff #5-50,74.2 Bischoff #5-51,89.3 Bischoff #5-52,87.1 -Bischoff #5-53,71.3 +Bischoff #5-53,72.3 Bischoff #5-54,71.2 Bischoff #5-55,70.3 Bischoff #5-56,83.3 @@ -208,15 +208,15 @@ Bischoff #5-92,74.6 Bischoff #5-93,84.9 Bischoff #5-94,73.7 Bischoff #5-95,85.2 -Bischoff #5-96,83 -Bischoff #5-97,83.3 +Bischoff #5-96,83.2 +Bischoff #5-97,84.1 Bischoff #5-98,82.5 Bischoff #5-99,76.4 Bischoff #5-100,66.6 Bischoff #8-1,70.7 -Bischoff #8-2,84.9 +Bischoff #8-2,85.3 Bischoff #8-3,74.1 -Bischoff #8-4,61.4 +Bischoff #8-4,65 Bischoff #8-5,76.7 Bischoff #8-6,82.7 Bischoff #8-7,67.1 @@ -229,7 +229,7 @@ Bischoff #8-13,79.4 Bischoff #8-14,80.3 Bischoff #8-15,82.7 Bischoff #8-16,84.6 -Bischoff #8-17,75.6 +Bischoff #8-17,75.9 Bischoff #8-18,80.5 Bischoff #8-19,88.1 Bischoff #8-20,77.8 @@ -239,7 +239,7 @@ Bischoff #8-23,83.8 Bischoff #8-24,77.9 Bischoff #8-25,82.1 Bischoff #8-26,88.3 -Bischoff #8-27,77.1 +Bischoff #8-27,77.2 Bischoff #8-28,77.9 Bischoff #8-29,70.1 Bischoff #8-30,73.5 @@ -248,7 +248,7 @@ Bischoff #8-32,77.9 Bischoff #8-33,83.9 Bischoff #8-34,72 Bischoff #8-35,75.1 -Bischoff #8-36,74.9 +Bischoff #8-36,75 Bischoff #8-37,81.8 Bischoff #8-38,72.4 Bischoff #8-39,84 @@ -261,7 +261,7 @@ Bischoff #8-45,81.2 Bischoff #8-46,67.8 Bischoff #8-47,67.1 Bischoff #8-48,81.9 -Bischoff #8-49,73.8 +Bischoff #8-49,74.6 Bischoff #8-50,79.3 Bischoff #8-51,85.4 Bischoff #8-52,91.8 @@ -274,14 +274,14 @@ Bischoff #8-58,84.8 Bischoff #8-59,77.5 Bischoff #8-60,76.9 Bischoff #8-61,73.8 -Bischoff #8-62,81.5 -Bischoff #8-63,85.3 +Bischoff #8-62,82.8 +Bischoff #8-63,85.5 Bischoff #8-64,73.1 Bischoff #8-65,86.8 Bischoff #8-66,82.5 Bischoff #8-67,71.9 Bischoff #8-68,82.6 -Bischoff #8-69,73.1 +Bischoff #8-69,73.7 Bischoff #8-70,71.6 Bischoff #8-71,72.6 Bischoff #8-72,74 @@ -298,8 +298,8 @@ Bischoff #8-82,80.1 Bischoff #8-83,80.1 Bischoff #8-84,75.6 Bischoff #8-85,83.5 -Bischoff #8-86,83.9 -Bischoff #8-87,79 +Bischoff #8-86,84.2 +Bischoff #8-87,79.2 Bischoff #8-88,69 Bischoff #8-89,66.4 Bischoff #8-90,83.8 @@ -308,15 +308,15 @@ Bischoff #8-92,76.6 Bischoff #8-93,67 Bischoff #8-94,80.1 Bischoff #8-95,74.1 -Bischoff #8-96,75.6 -Bischoff #8-97,82.2 +Bischoff #8-96,76.3 +Bischoff #8-97,82.9 Bischoff #8-98,69.9 Bischoff #8-99,83.6 -Bischoff #8-100,76.9 +Bischoff #8-100,77.4 Bischoff #10-1,73.6 -Bischoff #10-2,86.2 +Bischoff #10-2,86.5 Bischoff #10-3,77.9 -Bischoff #10-4,68.8 +Bischoff #10-4,73 Bischoff #10-5,78.9 Bischoff #10-6,81.5 Bischoff #10-7,69.7 @@ -335,20 +335,20 @@ Bischoff #10-19,81 Bischoff #10-20,75.7 Bischoff #10-21,72.7 Bischoff #10-22,76.9 -Bischoff #10-23,84.4 +Bischoff #10-23,86.2 Bischoff #10-24,72.7 Bischoff #10-25,75.2 -Bischoff #10-26,79 -Bischoff #10-27,74.8 +Bischoff #10-26,79.7 +Bischoff #10-27,75.8 Bischoff #10-28,75.2 Bischoff #10-29,68.5 Bischoff #10-30,77.5 Bischoff #10-31,65.4 Bischoff #10-32,73.9 -Bischoff #10-33,84 +Bischoff #10-33,84.1 Bischoff #10-34,76.3 -Bischoff #10-35,74.3 -Bischoff #10-36,65.1 +Bischoff #10-35,74.5 +Bischoff #10-36,66.3 Bischoff #10-37,83.1 Bischoff #10-38,70.5 Bischoff #10-39,70.7 @@ -357,122 +357,122 @@ Bischoff #10-41,79 Bischoff #10-42,79.3 Bischoff #10-43,76 Bischoff #10-44,71.8 -Bischoff #10-45,77.6 +Bischoff #10-45,77.8 Bischoff #10-46,80.3 Bischoff #10-47,69.8 Bischoff #10-48,86.7 Bischoff #10-49,71.9 -Bischoff #10-50,74.1 -Bischoff #10-51,71.3 +Bischoff #10-50,74.4 +Bischoff #10-51,71.6 Bischoff #10-52,80.6 Bischoff #10-53,79.1 Bischoff #10-54,77.1 -Bischoff #10-55,67.1 +Bischoff #10-55,67.5 Bischoff #10-56,78.4 Bischoff #10-57,80.9 Bischoff #10-58,77.1 Bischoff #10-59,78.2 -Bischoff #10-60,74.7 +Bischoff #10-60,75.2 Bischoff #10-61,78.9 -Bischoff #10-62,85.7 +Bischoff #10-62,86.3 Bischoff #10-63,71 Bischoff #10-64,74.9 Bischoff #10-65,82.4 Bischoff #10-66,74.7 Bischoff #10-67,76.3 -Bischoff #10-68,70.1 +Bischoff #10-68,71.4 Bischoff #10-69,77 -Bischoff #10-70,74.3 +Bischoff #10-70,75.3 Bischoff #10-71,83.4 Bischoff #10-72,72.5 Bischoff #10-73,80.7 -Bischoff #10-74,73.5 +Bischoff #10-74,74 Bischoff #10-75,77.2 Bischoff #10-76,81.3 Bischoff #10-77,66.5 Bischoff #10-78,71.4 -Bischoff #10-79,83.7 +Bischoff #10-79,84.6 Bischoff #10-80,77.3 Bischoff #10-81,76.1 -Bischoff #10-82,76 +Bischoff #10-82,76.2 Bischoff #10-83,77.9 Bischoff #10-84,77 -Bischoff #10-85,79.3 +Bischoff #10-85,81.4 Bischoff #10-86,71.6 -Bischoff #10-87,73.7 +Bischoff #10-87,74 Bischoff #10-88,77.5 -Bischoff #10-89,72 +Bischoff #10-89,73.2 Bischoff #10-90,79.8 -Bischoff #10-91,80 +Bischoff #10-91,80.1 Bischoff #10-92,82.8 Bischoff #10-93,68 Bischoff #10-94,79.7 Bischoff #10-95,78.4 Bischoff #10-96,79.9 -Bischoff #10-97,84.9 +Bischoff #10-97,85.4 Bischoff #10-98,70.3 Bischoff #10-99,81 -Bischoff #10-100,83.7 -Bischoff #12-1,69.2 -Bischoff #12-2,80.1 +Bischoff #10-100,84.2 +Bischoff #12-1,70.2 +Bischoff #12-2,80.6 Bischoff #12-3,69 -Bischoff #12-4,79.4 +Bischoff #12-4,82.6 Bischoff #12-5,76.9 Bischoff #12-6,81 Bischoff #12-7,75.2 Bischoff #12-8,73 Bischoff #12-9,78.5 Bischoff #12-10,76.8 -Bischoff #12-11,75.4 +Bischoff #12-11,75.6 Bischoff #12-12,73.5 Bischoff #12-13,76.6 Bischoff #12-14,83.4 Bischoff #12-15,78.1 Bischoff #12-16,78.6 -Bischoff #12-17,77.5 +Bischoff #12-17,78.7 Bischoff #12-18,74.3 Bischoff #12-19,79.1 Bischoff #12-20,74.8 Bischoff #12-21,75.2 Bischoff #12-22,72.9 -Bischoff #12-23,79 +Bischoff #12-23,80.4 Bischoff #12-24,72.9 Bischoff #12-25,71.3 Bischoff #12-26,69.6 -Bischoff #12-27,79.3 +Bischoff #12-27,80.3 Bischoff #12-28,74.2 -Bischoff #12-29,71.6 +Bischoff #12-29,71.8 Bischoff #12-30,82.8 Bischoff #12-31,67.3 Bischoff #12-32,71.4 Bischoff #12-33,80.4 Bischoff #12-34,70.5 -Bischoff #12-35,75.1 +Bischoff #12-35,75.3 Bischoff #12-36,69.3 -Bischoff #12-37,75.4 +Bischoff #12-37,76 Bischoff #12-38,77.8 Bischoff #12-39,76.3 Bischoff #12-40,75.8 Bischoff #12-41,84.1 Bischoff #12-42,79.3 Bischoff #12-43,71.7 -Bischoff #12-44,76.1 +Bischoff #12-44,76.4 Bischoff #12-45,86.1 Bischoff #12-46,70.1 Bischoff #12-47,75.3 Bischoff #12-48,83.9 Bischoff #12-49,67.8 -Bischoff #12-50,77.2 +Bischoff #12-50,77.5 Bischoff #12-51,73.5 Bischoff #12-52,74.3 Bischoff #12-53,87.1 Bischoff #12-54,80.4 Bischoff #12-55,71 -Bischoff #12-56,78.6 +Bischoff #12-56,79.2 Bischoff #12-57,81.7 Bischoff #12-58,81.7 Bischoff #12-59,78 -Bischoff #12-60,70.3 +Bischoff #12-60,71.4 Bischoff #12-61,81.3 Bischoff #12-62,84.8 Bischoff #12-63,69.1 @@ -480,31 +480,31 @@ Bischoff #12-64,74.5 Bischoff #12-65,79.5 Bischoff #12-66,65.6 Bischoff #12-67,72.6 -Bischoff #12-68,69.1 -Bischoff #12-69,77.3 +Bischoff #12-68,70.4 +Bischoff #12-69,78.4 Bischoff #12-70,77.7 Bischoff #12-71,67.1 Bischoff #12-72,74.5 -Bischoff #12-73,81.2 +Bischoff #12-73,81.8 Bischoff #12-74,76.7 Bischoff #12-75,80.4 Bischoff #12-76,85.1 -Bischoff #12-77,65.6 +Bischoff #12-77,67 Bischoff #12-78,67.6 -Bischoff #12-79,79.4 +Bischoff #12-79,80.4 Bischoff #12-80,73.6 Bischoff #12-81,66.1 -Bischoff #12-82,80.5 +Bischoff #12-82,80.7 Bischoff #12-83,82 Bischoff #12-84,77.5 -Bischoff #12-85,82 -Bischoff #12-86,76 -Bischoff #12-87,76.2 +Bischoff #12-85,83.8 +Bischoff #12-86,76.2 +Bischoff #12-87,76.3 Bischoff #12-88,75.7 -Bischoff #12-89,70 -Bischoff #12-90,81.6 -Bischoff #12-91,82.1 -Bischoff #12-92,77.3 +Bischoff #12-89,71.3 +Bischoff #12-90,85 +Bischoff #12-91,83.6 +Bischoff #12-92,78.1 Bischoff #12-93,65.8 Bischoff #12-94,78.4 Bischoff #12-95,73.3 @@ -512,11 +512,11 @@ Bischoff #12-96,75.4 Bischoff #12-97,72.1 Bischoff #12-98,75.1 Bischoff #12-99,79.3 -Bischoff #12-100,79 -Bischoff #15-1,79.6 -Bischoff #15-2,82.5 +Bischoff #12-100,79.6 +Bischoff #15-1,81.1 +Bischoff #15-2,82.6 Bischoff #15-3,70.3 -Bischoff #15-4,85.3 +Bischoff #15-4,85.7 Bischoff #15-5,71.5 Bischoff #15-6,76.3 Bischoff #15-7,78.7 @@ -531,45 +531,45 @@ Bischoff #15-15,76.1 Bischoff #15-16,80.3 Bischoff #15-17,83.9 Bischoff #15-18,77.5 -Bischoff #15-19,76.7 +Bischoff #15-19,77.8 Bischoff #15-20,74.7 Bischoff #15-21,74.4 Bischoff #15-22,78.1 -Bischoff #15-23,82.9 +Bischoff #15-23,83.1 Bischoff #15-24,73.4 Bischoff #15-25,71.9 Bischoff #15-26,79.1 Bischoff #15-27,78.6 -Bischoff #15-28,74.4 +Bischoff #15-28,74.9 Bischoff #15-29,71.8 -Bischoff #15-30,83.9 +Bischoff #15-30,84.5 Bischoff #15-31,71 Bischoff #15-32,76.3 -Bischoff #15-33,77.3 +Bischoff #15-33,77.4 Bischoff #15-34,74.8 -Bischoff #15-35,72.1 -Bischoff #15-36,69.6 +Bischoff #15-35,72.4 +Bischoff #15-36,70.5 Bischoff #15-37,85 Bischoff #15-38,75 Bischoff #15-39,79.4 Bischoff #15-40,72.1 Bischoff #15-41,77.5 -Bischoff #15-42,76.8 +Bischoff #15-42,77.4 Bischoff #15-43,69 Bischoff #15-44,76.6 Bischoff #15-45,81.6 -Bischoff #15-46,75.9 +Bischoff #15-46,76.3 Bischoff #15-47,67.6 Bischoff #15-48,78.6 -Bischoff #15-49,72.8 +Bischoff #15-49,73.5 Bischoff #15-50,82.5 Bischoff #15-51,75 Bischoff #15-52,75.8 Bischoff #15-53,80.4 -Bischoff #15-54,70.3 +Bischoff #15-54,71.1 Bischoff #15-55,70.3 Bischoff #15-56,73.5 -Bischoff #15-57,73.6 +Bischoff #15-57,72 Bischoff #15-58,83.1 Bischoff #15-59,77 Bischoff #15-60,72.2 @@ -577,11 +577,11 @@ Bischoff #15-61,69.7 Bischoff #15-62,81.3 Bischoff #15-63,74 Bischoff #15-64,70.7 -Bischoff #15-65,81.4 +Bischoff #15-65,82.3 Bischoff #15-66,69 Bischoff #15-67,71.4 Bischoff #15-68,76.7 -Bischoff #15-69,75.4 +Bischoff #15-69,76 Bischoff #15-70,76.1 Bischoff #15-71,73.1 Bischoff #15-72,79.6 @@ -589,127 +589,127 @@ Bischoff #15-73,74.6 Bischoff #15-74,69.4 Bischoff #15-75,80 Bischoff #15-76,77.6 -Bischoff #15-77,73.5 +Bischoff #15-77,74 Bischoff #15-78,74.5 -Bischoff #15-79,72.6 +Bischoff #15-79,73.4 Bischoff #15-80,78.5 Bischoff #15-81,71.3 Bischoff #15-82,77.9 Bischoff #15-83,75.3 -Bischoff #15-84,77.8 -Bischoff #15-85,74.4 -Bischoff #15-86,73.6 -Bischoff #15-87,73.7 +Bischoff #15-84,81.2 +Bischoff #15-85,75.5 +Bischoff #15-86,73.8 +Bischoff #15-87,73.8 Bischoff #15-88,66.3 Bischoff #15-89,69.7 Bischoff #15-90,80.9 Bischoff #15-91,77 -Bischoff #15-92,65.9 +Bischoff #15-92,66.4 Bischoff #15-93,69.1 Bischoff #15-94,73 Bischoff #15-95,76.2 -Bischoff #15-96,76.1 +Bischoff #15-96,76.4 Bischoff #15-97,75.8 Bischoff #15-98,70.1 -Bischoff #15-99,77.5 +Bischoff #15-99,79.5 Bischoff #15-100,79.9 -Bischoff #20-1,79.3 -Bischoff #20-2,80.6 +Bischoff #20-1,80.3 +Bischoff #20-2,80.7 Bischoff #20-3,72.7 -Bischoff #20-4,86.2 +Bischoff #20-4,86.9 Bischoff #20-5,75.7 -Bischoff #20-6,70.9 +Bischoff #20-6,71.2 Bischoff #20-7,76.7 Bischoff #20-8,77.9 Bischoff #20-9,74.8 Bischoff #20-10,74.3 Bischoff #20-11,74.6 Bischoff #20-12,75.9 -Bischoff #20-13,69.2 +Bischoff #20-13,70.8 Bischoff #20-14,75.8 Bischoff #20-15,75.4 Bischoff #20-16,77 Bischoff #20-17,73.6 -Bischoff #20-18,76.7 +Bischoff #20-18,77.1 Bischoff #20-19,77.6 -Bischoff #20-20,74.6 -Bischoff #20-21,76.9 +Bischoff #20-20,74.8 +Bischoff #20-21,78.1 Bischoff #20-22,79.7 -Bischoff #20-23,82.9 +Bischoff #20-23,83.3 Bischoff #20-24,73.5 Bischoff #20-25,68.9 Bischoff #20-26,75.7 -Bischoff #20-27,75.5 -Bischoff #20-28,81.8 -Bischoff #20-29,78 -Bischoff #20-30,76.1 +Bischoff #20-27,76.1 +Bischoff #20-28,82 +Bischoff #20-29,78.3 +Bischoff #20-30,76.4 Bischoff #20-31,66.4 Bischoff #20-32,73.9 Bischoff #20-33,75 -Bischoff #20-34,69.6 +Bischoff #20-34,70.3 Bischoff #20-35,76.3 Bischoff #20-36,74.7 Bischoff #20-37,79 Bischoff #20-38,72 Bischoff #20-39,77.8 -Bischoff #20-40,75.2 +Bischoff #20-40,75.4 Bischoff #20-41,78.6 Bischoff #20-42,75.3 Bischoff #20-43,74.8 -Bischoff #20-44,76.8 +Bischoff #20-44,77.3 Bischoff #20-45,88.1 Bischoff #20-46,77.5 Bischoff #20-47,71.9 Bischoff #20-48,70.9 -Bischoff #20-49,69.6 -Bischoff #20-50,74.8 +Bischoff #20-49,70.3 +Bischoff #20-50,77.4 Bischoff #20-51,70.1 Bischoff #20-52,73.9 Bischoff #20-53,84.9 Bischoff #20-54,73.8 Bischoff #20-55,69.5 -Bischoff #20-56,75.6 +Bischoff #20-56,75.9 Bischoff #20-57,76.8 Bischoff #20-58,78.9 -Bischoff #20-59,77.9 +Bischoff #20-59,78.4 Bischoff #20-60,79.6 Bischoff #20-61,68.5 -Bischoff #20-62,74.9 +Bischoff #20-62,75.4 Bischoff #20-63,69.1 Bischoff #20-64,77.5 -Bischoff #20-65,79.1 +Bischoff #20-65,79.8 Bischoff #20-66,72.8 -Bischoff #20-67,71.7 -Bischoff #20-68,69.5 +Bischoff #20-67,72.1 +Bischoff #20-68,70.3 Bischoff #20-69,73.3 Bischoff #20-70,75.7 -Bischoff #20-71,70 -Bischoff #20-72,77.7 -Bischoff #20-73,69.5 +Bischoff #20-71,70.3 +Bischoff #20-72,78.6 +Bischoff #20-73,70.5 Bischoff #20-74,81.3 Bischoff #20-75,73.6 Bischoff #20-76,80.5 -Bischoff #20-77,80.6 +Bischoff #20-77,82.1 Bischoff #20-78,72.1 -Bischoff #20-79,69.4 +Bischoff #20-79,70.2 Bischoff #20-80,78.1 Bischoff #20-81,69.9 -Bischoff #20-82,75.4 +Bischoff #20-82,75.7 Bischoff #20-83,71.7 -Bischoff #20-84,75.5 +Bischoff #20-84,80.3 Bischoff #20-85,74.7 Bischoff #20-86,73.4 -Bischoff #20-87,71.5 +Bischoff #20-87,71.8 Bischoff #20-88,80.2 Bischoff #20-89,72.8 Bischoff #20-90,80.1 Bischoff #20-91,75.6 -Bischoff #20-92,75.4 +Bischoff #20-92,76.1 Bischoff #20-93,68.8 Bischoff #20-94,71.8 Bischoff #20-95,76.1 Bischoff #20-96,79.7 Bischoff #20-97,74.2 Bischoff #20-98,71.6 -Bischoff #20-99,75.6 +Bischoff #20-99,76.1 Bischoff #20-100,73