From 51ba71a14d1780b8ff6a190bca4f8deac435c906 Mon Sep 17 00:00:00 2001 From: Korbinian Riedhammer <korbinianr@gmail.com> Date: Tue, 11 Jun 2019 12:18:16 +0200 Subject: [PATCH] refactored packages --- README.md | 4 +- assets/images/GeneratorSpec.svg | 66 +++---- assets/uml/generator-spec.plantuml | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 55741 -> 55616 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 18 +- gradlew.bat | 184 ++++++++++-------- .../thro/inf/prg3 => ohm/softa}/a12/App.java | 8 +- .../softa}/a12/icndb/ICNDBApi.java | 6 +- .../softa}/a12/icndb/ICNDBService.java | 6 +- .../softa}/a12/icndb/JokeGenerator.java | 6 +- .../a12/icndb/suppliers/AllJokesSupplier.java | 10 +- .../icndb/suppliers/RandomJokeSupplier.java | 10 +- .../prg3 => ohm/softa}/a12/model/JokeDto.java | 2 +- .../softa}/a12/model/ResponseWrapper.java | 2 +- .../softa}/a12/icndb/ICNDBTests.java | 2 +- .../softa}/a12/icndb/JokesGeneratorTests.java | 2 +- 18 files changed, 182 insertions(+), 150 deletions(-) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/App.java (94%) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/icndb/ICNDBApi.java (91%) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/icndb/ICNDBService.java (93%) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/icndb/JokeGenerator.java (87%) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/icndb/suppliers/AllJokesSupplier.java (81%) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/icndb/suppliers/RandomJokeSupplier.java (69%) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/model/JokeDto.java (98%) rename src/main/java/{de/thro/inf/prg3 => ohm/softa}/a12/model/ResponseWrapper.java (97%) rename src/test/java/{de/thro/inf/prg3 => ohm/softa}/a12/icndb/ICNDBTests.java (98%) rename src/test/java/{de/thro/inf/prg3 => ohm/softa}/a12/icndb/JokesGeneratorTests.java (92%) diff --git a/README.md b/README.md index e1bd6d9..663e2e7 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ _This is an assignment to the [Software Architecture](https://ohm-softa.github.i # Assignment 12: Functional - CLI variant -[](https://travis-ci.org/hsro-inf-prg3/12-functional-cli) This assignment covers the basics of the Java 8 `Stream` API. Streams are a functional concept and are relatively new in Java but they are very useful in combination with all kinds of _iterable_ data sources. @@ -26,7 +25,8 @@ _Remark: the given test suite is incomplete but will succeed after the checkout. _Note 1:_ the class structure is already there (including the empty unit tests). -_Note 2:_ the whole logic around the **ICNDB** is already implemented including the `ICNDBService` singleton! There's no possibility to implement asynchronous generators so you'll have to use the `ICNDBService` also in a synchronous way. +_Note 2:_ the whole logic around the **ICNDB** is already implemented including the `ICNDBService` singleton! +There is no way to implement asynchronous generators so you will have to use the `ICNDBService` also in a synchronous way. ## Generators diff --git a/assets/images/GeneratorSpec.svg b/assets/images/GeneratorSpec.svg index 4ff15e9..f935427 100644 --- a/assets/images/GeneratorSpec.svg +++ b/assets/images/GeneratorSpec.svg @@ -1,40 +1,40 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="345px" preserveAspectRatio="none" style="width:788px;height:345px;" version="1.1" viewBox="0 0 788 345" width="788px" zoomAndPan="magnify"><defs><filter height="300%" id="f1v9l2rmpgpt5i" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--cluster java.util.function--><polygon fill="#FFFFFF" filter="url(#f1v9l2rmpgpt5i)" points="417,16,540,16,547,41.0679,550,41.0679,550,118,417,118,417,16" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="417" x2="547" y1="41.0679" y2="41.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="117" x="421" y="32.9659">java.util.function</text><!--cluster de.thro.inf.prg3.a12.icndb--><polygon fill="#FFFFFF" filter="url(#f1v9l2rmpgpt5i)" points="14,126,199,126,206,151.0679,766,151.0679,766,333,14,333,14,126" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="206" y1="151.0679" y2="151.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="179" x="18" y="142.9659">de.thro.inf.prg3.a12.icndb</text><!--cluster suppliers--><polygon fill="#FFFFFF" filter="url(#f1v9l2rmpgpt5i)" points="595,156,664,156,671,181.0679,758,181.0679,758,325,595,325,595,156" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="595" x2="671" y1="181.0679" y2="181.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="63" x="599" y="172.9659">suppliers</text><!--class Supplier--><rect fill="#FEFECE" filter="url(#f1v9l2rmpgpt5i)" height="62.9819" id="Supplier" style="stroke: #A80036; stroke-width: 1.5;" width="86" x="440" y="46.5"/><ellipse cx="455" cy="62.5" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M457.5625,69 L452.0469,69 L452.0469,67.5313 L453.5156,66.8594 L453.5156,59 L452.0469,58.3281 L452.0469,56.8594 L457.5625,56.8594 L457.5625,58.3281 L456.0938,59 L456.0938,66.8594 L457.5625,67.5313 L457.5625,69 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="44" x="469" y="67.156">Supplier</text><rect fill="#FFFFFF" height="18.3441" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="8" x="521" y="43.5"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="6" x="522" y="57.3281">T</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="441" x2="525" y1="78.5" y2="78.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="441" x2="525" y1="86.5" y2="86.5"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="35" x="446" y="102.2589">T get();</text><!--class JokeGenerator--><rect fill="#FEFECE" filter="url(#f1v9l2rmpgpt5i)" height="77.9638" id="JokeGenerator" style="stroke: #A80036; stroke-width: 1.5;" width="342" x="22" y="204"/><ellipse cx="148.25" cy="220" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M147.9375,216.3281 Q146.4531,216.3281 145.6719,217.4375 Q144.8906,218.5469 144.8906,220.4688 Q144.8906,222.4063 145.6094,223.4688 Q146.3281,224.5313 147.9375,224.5313 Q148.6719,224.5313 149.4063,224.3594 Q150.1563,224.1875 151.0313,223.875 L151.0313,226.0469 Q150.2188,226.3594 149.4375,226.5156 Q148.6563,226.6719 147.6875,226.6719 Q145.8281,226.6719 144.6094,225.9063 Q143.3906,225.125 142.8125,223.7188 Q142.2344,222.3125 142.2344,220.4531 Q142.2344,218.6094 142.8906,217.2031 Q143.5625,215.7969 144.8281,215 Q146.0938,214.1875 147.9375,214.1875 Q148.8281,214.1875 149.7344,214.4219 Q150.6563,214.6563 151.4844,215.0469 L150.6563,217.1406 Q149.9688,216.8125 149.2813,216.5781 Q148.5938,216.3281 147.9375,216.3281 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="81" x="168.75" y="224.656">JokeGenerator</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="363" y1="236" y2="236"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="363" y1="244" y2="244"/><ellipse cx="33" cy="256.9909" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="316" x="42" y="259.7589">randomJokesStream(): Stream<ResponseWrapper<JokeDto>></text><ellipse cx="33" cy="271.9728" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="274" x="42" y="274.7408">jokesStream(): Stream<ResponseWrapper<JokeDto>></text><!--class AllJokesSupplier--><rect fill="#FEFECE" filter="url(#f1v9l2rmpgpt5i)" height="48" id="AllJokesSupplier" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="616" y="186"/><ellipse cx="631" cy="202" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M630.6875,198.3281 Q629.2031,198.3281 628.4219,199.4375 Q627.6406,200.5469 627.6406,202.4688 Q627.6406,204.4063 628.3594,205.4688 Q629.0781,206.5313 630.6875,206.5313 Q631.4219,206.5313 632.1563,206.3594 Q632.9063,206.1875 633.7813,205.875 L633.7813,208.0469 Q632.9688,208.3594 632.1875,208.5156 Q631.4063,208.6719 630.4375,208.6719 Q628.5781,208.6719 627.3594,207.9063 Q626.1406,207.125 625.5625,205.7188 Q624.9844,204.3125 624.9844,202.4531 Q624.9844,200.6094 625.6406,199.2031 Q626.3125,197.7969 627.5781,197 Q628.8438,196.1875 630.6875,196.1875 Q631.5781,196.1875 632.4844,196.4219 Q633.4063,196.6563 634.2344,197.0469 L633.4063,199.1406 Q632.7188,198.8125 632.0313,198.5781 Q631.3438,198.3281 630.6875,198.3281 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="89" x="645" y="206.656">AllJokesSupplier</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="617" x2="736" y1="218" y2="218"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="617" x2="736" y1="226" y2="226"/><!--class RandomJokeSupplier--><rect fill="#FEFECE" filter="url(#f1v9l2rmpgpt5i)" height="48" id="RandomJokeSupplier" style="stroke: #A80036; stroke-width: 1.5;" width="147" x="603" y="269"/><ellipse cx="618" cy="285" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M617.6875,281.3281 Q616.2031,281.3281 615.4219,282.4375 Q614.6406,283.5469 614.6406,285.4688 Q614.6406,287.4063 615.3594,288.4688 Q616.0781,289.5313 617.6875,289.5313 Q618.4219,289.5313 619.1563,289.3594 Q619.9063,289.1875 620.7813,288.875 L620.7813,291.0469 Q619.9688,291.3594 619.1875,291.5156 Q618.4063,291.6719 617.4375,291.6719 Q615.5781,291.6719 614.3594,290.9063 Q613.1406,290.125 612.5625,288.7188 Q611.9844,287.3125 611.9844,285.4531 Q611.9844,283.6094 612.6406,282.2031 Q613.3125,280.7969 614.5781,280 Q615.8438,279.1875 617.6875,279.1875 Q618.5781,279.1875 619.4844,279.4219 Q620.4063,279.6563 621.2344,280.0469 L620.4063,282.1406 Q619.7188,281.8125 619.0313,281.5781 Q618.3438,281.3281 617.6875,281.3281 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="632" y="289.656">RandomJokeSupplier</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="604" x2="749" y1="301" y2="301"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="604" x2="749" y1="309" y2="309"/><!--link Supplier to AllJokesSupplier--><path d="M544.3116,105.4015 C554.1376,110.5181 564.0192,116.1202 573,122 C601.8098,140.862 631.4225,166.8321 651.5516,185.6676 " fill="none" id="Supplier-AllJokesSupplier" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="541.1355,111.64,526.32,96.4907,547.349,99.0944,541.1355,111.64" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Supplier to RandomJokeSupplier--><path d="M542.1165,110.1967 C544.9268,112.6638 547.58,115.2657 550,118 C566.7487,136.9235 564.5529,146.1827 573,170 C585.4694,205.1585 571.541,221.9951 595,251 C600.6055,257.9307 607.6586,263.839 615.2576,268.8406 " fill="none" id="Supplier-RandomJokeSupplier" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="537.944,115.8173,526.0187,98.3018,546.2639,104.5576,537.944,115.8173" style="stroke: #A80036; stroke-width: 1.0;"/><!--link JokeGenerator to AllJokesSupplier--><path d="M364.1444,231.319 C451.7535,225.3395 552.9235,218.4344 615.8117,214.1421 " fill="none" id="JokeGenerator-AllJokesSupplier" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="27" x="469.5" y="215.897">uses</text><!--link JokeGenerator to RandomJokeSupplier--><path d="M364.1444,260.6985 C445.9129,269.1544 539.4944,278.8319 602.739,285.3722 " fill="none" id="JokeGenerator-RandomJokeSupplier" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="27" x="469.5" y="262.897">uses</text><!-- -@startuml GeneratorSpec -left to right direction -package java.util.function { - interface Supplier<T> { - T get(); - } -} +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="334px" preserveAspectRatio="none" style="width:812px;height:334px;" version="1.1" viewBox="0 0 812 334" width="812px" zoomAndPan="magnify"><defs><filter height="300%" id="f1lp1nfqy0adly" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--cluster java.util.function--><polygon fill="#FFFFFF" filter="url(#f1lp1nfqy0adly)" points="433,16,559,16,566,38.4883,569,38.4883,569,113,433,113,433,16" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="433" x2="566" y1="38.4883" y2="38.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="120" x="437" y="31.5352">java.util.function</text><!--cluster ohm.softa.a12.icndb--><polygon fill="#FFFFFF" filter="url(#f1lp1nfqy0adly)" points="14,121,163,121,170,143.4883,790,143.4883,790,322,14,322,14,121" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="170" y1="143.4883" y2="143.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="143" x="18" y="136.5352">ohm.softa.a12.icndb</text><!--cluster suppliers--><polygon fill="#FFFFFF" filter="url(#f1lp1nfqy0adly)" points="614,148,687,148,694,170.4883,782,170.4883,782,314,614,314,614,148" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="614" x2="694" y1="170.4883" y2="170.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="67" x="618" y="163.5352">suppliers</text><!--class Supplier--><rect fill="#FEFECE" filter="url(#f1lp1nfqy0adly)" height="60.9551" id="Supplier" style="stroke: #A80036; stroke-width: 1.5;" width="91" x="455" y="43.5"/><ellipse cx="470" cy="59.5" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M466.4277,55.7651 L466.4277,53.6069 L473.8071,53.6069 L473.8071,55.7651 L471.3418,55.7651 L471.3418,63.8418 L473.8071,63.8418 L473.8071,66 L466.4277,66 L466.4277,63.8418 L468.8931,63.8418 L468.8931,55.7651 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="47" x="484" y="64.0352">Supplier</text><rect fill="#FFFFFF" height="16.1328" style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" width="10" x="539" y="40.5"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="8" x="540" y="53.1016">T</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="545" y1="75.5" y2="75.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="545" y1="83.5" y2="83.5"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="38" x="461" y="98.1348">T get();</text><!--class JokeGenerator--><rect fill="#FEFECE" filter="url(#f1lp1nfqy0adly)" height="73.9102" id="JokeGenerator" style="stroke: #A80036; stroke-width: 1.5;" width="358" x="22" y="197"/><ellipse cx="155.25" cy="213" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M157.7231,219.1431 Q157.1421,219.4419 156.5029,219.5913 Q155.8638,219.7407 155.1582,219.7407 Q152.6514,219.7407 151.3315,218.0889 Q150.0117,216.437 150.0117,213.3159 Q150.0117,210.1865 151.3315,208.5347 Q152.6514,206.8828 155.1582,206.8828 Q155.8638,206.8828 156.5112,207.0322 Q157.1587,207.1816 157.7231,207.4805 L157.7231,210.2031 Q157.0923,209.6221 156.4988,209.3523 Q155.9053,209.0825 155.2744,209.0825 Q153.9297,209.0825 153.2449,210.1492 Q152.5601,211.2158 152.5601,213.3159 Q152.5601,215.4077 153.2449,216.4744 Q153.9297,217.541 155.2744,217.541 Q155.9053,217.541 156.4988,217.2712 Q157.0923,217.0015 157.7231,216.4204 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="83" x="175.75" y="217.5352">JokeGenerator</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="379" y1="229" y2="229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="379" y1="237" y2="237"/><ellipse cx="33" cy="248.9775" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="332" x="42" y="251.6348">randomJokesStream(): Stream<ResponseWrapper<JokeDto>></text><ellipse cx="33" cy="261.9326" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="290" x="42" y="264.5898">jokesStream(): Stream<ResponseWrapper<JokeDto>></text><!--class AllJokesSupplier--><rect fill="#FEFECE" filter="url(#f1lp1nfqy0adly)" height="48" id="AllJokesSupplier" style="stroke: #A80036; stroke-width: 1.5;" width="124" x="636" y="175"/><ellipse cx="651" cy="191" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M653.4731,197.1431 Q652.8921,197.4419 652.2529,197.5913 Q651.6138,197.7407 650.9082,197.7407 Q648.4014,197.7407 647.0815,196.0889 Q645.7617,194.437 645.7617,191.3159 Q645.7617,188.1865 647.0815,186.5347 Q648.4014,184.8828 650.9082,184.8828 Q651.6138,184.8828 652.2612,185.0322 Q652.9087,185.1816 653.4731,185.4805 L653.4731,188.2031 Q652.8423,187.6221 652.2488,187.3523 Q651.6553,187.0825 651.0244,187.0825 Q649.6797,187.0825 648.9949,188.1492 Q648.3101,189.2158 648.3101,191.3159 Q648.3101,193.4077 648.9949,194.4744 Q649.6797,195.541 651.0244,195.541 Q651.6553,195.541 652.2488,195.2712 Q652.8423,195.0015 653.4731,194.4204 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="665" y="195.5352">AllJokesSupplier</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="637" x2="759" y1="207" y2="207"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637" x2="759" y1="215" y2="215"/><!--class RandomJokeSupplier--><rect fill="#FEFECE" filter="url(#f1lp1nfqy0adly)" height="48" id="RandomJokeSupplier" style="stroke: #A80036; stroke-width: 1.5;" width="152" x="622" y="258"/><ellipse cx="637" cy="274" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M639.4731,280.1431 Q638.8921,280.4419 638.2529,280.5913 Q637.6138,280.7407 636.9082,280.7407 Q634.4014,280.7407 633.0815,279.0889 Q631.7617,277.437 631.7617,274.3159 Q631.7617,271.1865 633.0815,269.5347 Q634.4014,267.8828 636.9082,267.8828 Q637.6138,267.8828 638.2612,268.0322 Q638.9087,268.1816 639.4731,268.4805 L639.4731,271.2031 Q638.8423,270.6221 638.2488,270.3523 Q637.6553,270.0825 637.0244,270.0825 Q635.6797,270.0825 634.9949,271.1492 Q634.3101,272.2158 634.3101,274.3159 Q634.3101,276.4077 634.9949,277.4744 Q635.6797,278.541 637.0244,278.541 Q637.6553,278.541 638.2488,278.2712 Q638.8423,278.0015 639.4731,277.4204 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="120" x="651" y="278.5352">RandomJokeSupplier</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="623" x2="773" y1="290" y2="290"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="623" x2="773" y1="298" y2="298"/><!--link Supplier to AllJokesSupplier--><path d="M564.6238,101.1015 C573.9933,105.7268 583.3804,110.7471 592,116 C620.5412,133.3935 650.2714,157.2534 670.9566,174.9283 " fill="none" id="Supplier-AllJokesSupplier" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="561.3861,107.3145,546.2574,92.478,567.3362,94.6419,561.3861,107.3145" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Supplier to RandomJokeSupplier--><path d="M562.5288,106.6396 C564.8141,108.666 566.9849,110.7862 569,113 C585.7377,131.3881 583.4103,140.6657 592,164 C604.1477,196.9997 591.4957,212.9796 614,240 C619.8433,247.016 627.1497,252.9722 634.9995,257.9966 " fill="none" id="Supplier-RandomJokeSupplier" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="558.1745,112.1262,546.2241,94.6279,566.4782,100.8547,558.1745,112.1262" style="stroke: #A80036; stroke-width: 1.0;"/><!--link JokeGenerator to AllJokesSupplier--><path d="M380.0773,221.3889 C469.5086,215.0909 571.9823,207.8745 635.8566,203.3763 " fill="none" id="JokeGenerator-AllJokesSupplier" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="29" x="486" y="205.5684">uses</text><!--link JokeGenerator to RandomJokeSupplier--><path d="M380.0773,251.2952 C463.2498,259.3279 557.7031,268.4502 621.8965,274.65 " fill="none" id="JokeGenerator-RandomJokeSupplier" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="29" x="486" y="253.5684">uses</text><!-- +@startuml GeneratorSpec +left to right direction +package java.util.function { + interface Supplier<T> { + T get(); + } +} + +package ohm.softa.a12.icndb { + class JokeGenerator { + +randomJokesStream(): Stream<ResponseWrapper<JokeDto>> + +jokesStream(): Stream<ResponseWrapper<JokeDto>> + } + + package suppliers { + class AllJokesSupplier implements Supplier { + } + + class RandomJokeSupplier implements Supplier { + } + } + + JokeGenerator - - AllJokesSupplier : "uses" + JokeGenerator - - RandomJokeSupplier : "uses" +} + +@enduml -package de.thro.inf.prg3.a12.icndb { - class JokeGenerator { - +randomJokesStream(): Stream<ResponseWrapper<JokeDto>> - +jokesStream(): Stream<ResponseWrapper<JokeDto>> - } - - package suppliers { - class AllJokesSupplier implements Supplier { - } - - class RandomJokeSupplier implements Supplier { - } - } - - JokeGenerator - - AllJokesSupplier : "uses" - JokeGenerator - - RandomJokeSupplier : "uses" -} - -@enduml - -PlantUML version 1.2018.14(Fri Dec 21 17:33:16 CET 2018) +PlantUML version 1.2019.03(Sun Mar 10 12:04:44 CET 2019) (GPL source distribution) Java Runtime: OpenJDK Runtime Environment JVM: OpenJDK 64-Bit Server VM -Java Version: 11.0.1+13 -Operating System: Linux -OS Version: 4.20.0-arch1-1-ARCH +Java Version: 12.0.1+12 +Operating System: Mac OS X +OS Version: 10.14.5 Default Encoding: UTF-8 Language: en -Country: US +Country: GB --></g></svg> \ No newline at end of file diff --git a/assets/uml/generator-spec.plantuml b/assets/uml/generator-spec.plantuml index d7aa3de..edd3fe2 100644 --- a/assets/uml/generator-spec.plantuml +++ b/assets/uml/generator-spec.plantuml @@ -6,7 +6,7 @@ package java.util.function { } } -package de.thro.inf.prg3.a12.icndb { +package ohm.softa.a12.icndb { class JokeGenerator { +randomJokesStream(): Stream<ResponseWrapper<JokeDto>> +jokesStream(): Stream<ResponseWrapper<JokeDto>> diff --git a/build.gradle b/build.gradle index 6c3b3e3..a2a8c70 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ repositories { } -mainClassName = 'de.thro.inf.prg3.a12.App' +mainClassName = 'ohm.softa.a12.App' dependencies { /* Commons Lang3 */ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 457aad0d98108420a977756b7145c93c8910b076..5c2d1cf016b3885f6930543d57b744ea8c220a1a 100644 GIT binary patch delta 19567 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 delta 19692 zcmX@GiFxm4X4U|2W)_i&3q&VM2@8ubFmP}%FfceW*lhlI(UyUMA!MS1uRzj?LtAGx zZTVEh$N*KX%m~(UQxr^3W?__N6xpoA=*!9|GP!{55g)>!Yv*=3Oio}gsPFc<z+Nl3 zsMG#{eCnQHF0%_FciZRAtUhn~{m#yr@%#7xXDN{Hm-R`w*4P~>U95S=dPirgh*)rh z(d}ryX@$2PnfCRHN|#F<o8MZvV!pA;pFd*Gn{=|99ww>w9DV)mU0*={4?h>d^-8O4 zZava6d0uC*QaZ7_NZRXN>GfN?6qD*@!*)*VI#?@t+-a)vy)4c{BHBS$n|D3h>cJv= zbhhupCh<+e?vt)hJI6IeV%aOFe1W~np}7j;r)DHxJRg4VGrvtoD_>i)m)Scbogd2F z>!<l#zZN$!@tur9^JdN4tF*2;U#|XT5o%x;v&7I->Ul-djGT<SIwrpR^P`<^?s&ea zp}s-yWB#KVrx_;e+=?j8+{N!RvE5A0P~_ixBgswb$NW^&+|15ScqynXcfI*+o_BX_ z8>g|jD(A}GJg4hY85V^~T=)LDS+Pysx#7RZ**Sd^IdxC-uDdqnQHs*b=i5*7>{L|U zb~^3QW#wB(Z1zftKl46d)XcJ%!HRXuB_4xqMGUX&wR3e+UfAE`t~;VS<L4KK4+T@N zscbs&_2hbutfHOr9(z7dYM1zY%=Wjy%KRM#49`z@&T%(Mn4e;Q@u#up8-9=HeM>lJ z91Ds6rMWijzPR)|?P``6zm0akp7HKt-j@%?J1%MG2EMM0X=~1Ao96kK5u8rosY&>i zFPG^OJ_d$-Sq28h$rF^tCfBob)axbZBo-IXjpR%axnB9NE_17KRBubfxu>6!nsrO0 zdJc-2nF&pI;8^IY#C`0WLhq8+t9>@s+#0@*EOgh-ZrPIgSVgUG?h(H^_bkk`WhUJy zjk>dJZMAvsWVy`Q^YW^e`p&ip-2eUCg>_p3=Q34&?)$&@|G#_xk4)e9{iZ&{4W;0E z#We@D6~8>}-umWmS5{r9>GjahtD^pz3h$RYH2s4#Tb*%>K%I8W^$)idZTjv9o_()1 z>wfUr_w5@b>k}UE^Zp6s@c!^r;Lwl90(M>Yfv4+N&00U>M;3?t!TBqno#*}2`s-gR zhyR0Y#Xq9|qD<?9z4PMDKW<n2Bm3{(0s9$0jtkVAJ(!=h;GYSTS{(nw`5$|&{&4>@ zZSnqLF8qI8+CS&HUwlnJ`!fGu`Q)em)f#Wp|7&Oc4?Md)^t0^MJquHQt?PW>YS17V zoX{l^BznlN=HisBI#maum4SN|&Z@X^*e1;il0NiV$Y|*~0dL={vo9r_Qeqb8&Ez?m z#5sFY%kon}&h^tIH{F>cx@?V!O46xS0&OW<HM4ypSD%Y@_k6+@ylB}P^QUgXc}A(t zn$o^IBV`M^6@A-sgd%KLPI+9a{<h?nC-<Sh^Q!Bz!jH+92h}Cr_!jGb;evfZ#r*^G zBHlE<``cX0&U#6C#rv}0%=>;noy&|KhiG$iz1qe0{oP&T4-RYUpZ}PbwV*Tj;1X-I zXCJ0q-Mh~Gn&GpX%AU&~&q??9vx;+HA9qL5z~bFzb(yXU)wk@j%T?Z9iEuyjU1+7D zUi%K4ClxPSW(%44RlS?>e97g#om<{7x$-b~D&PIL^So7KtC!UCS)S*<H`PP+&)lYU z%UF-h(m(lUrmu68!**+@lj2|N)q?!u(;iKEEW6cTb*tXH4Rd8S?QM~IuFm|gqG?&& z?g=MEF2)9Il6SdlzWUg#M03+w5~nN9-O;#^wmvV&<*VU+IlJN$^Uh=^_dU7Em6vg9 z?(CvJeFq!o*-US_z0rJPi3$5*Imy69hRaTQN?IxV-SS`ZX^+&Y??w#Y=E#?+T~(?# zHy5k;wxs5`_f1c(=^rN*`@Ma-t<C4w$Fg3_p9V`G`=`3OhaL%;`(lyJ$}>kA7N@LV z{%*^(`>&TA`&0O9lR)y_JU7F{3-Su0FS*moc4!}nol=%68Lj4aN-}IwP(zmaWA16< zS1sp!R5!NkeRo4RW}R2T?@f=g{Ikj~PDpc(;;GLxU2=9pnX{Ef{w=vuw!JM0cV(jU zXJz|KsU)6Q`^0y4`OTL{KE%}Lt$MNUr<ca@*0%2CT``hd)lFXs+4<efOuv22c4gvR zMsxGfjx}CC?^rzhvD5dS;&J)%%+sN&CG(7Dsci4NBlS|(U06J$_s#`v_wK{X{fZ}l z+BIwU-woT3*MFPD>AH1I%PI*E)<bVqTO8j;mW54ubK%8})#5Lvo^3kn^Xj3`rEhZ& zE>g`~^JYTP)~!#2q@JDel&d=Tb%pPaHx{yMo0j^D`g5$@si<zcs9~p``H91i9^G8} zDCUCi^MI|_e5d=p`_v}+WZ{h2AKPT7CiT2^O4z=-SZB`B+o7K~u-1!D7L#jAS6nM4 zFUkG>z+sd7JKp<m^VixCFiCpT(Mh*IWIFz4`miPOpQy9lrmGWf>)uqmt-I6t-IgW6 zWf2u3?>BuAu}eD{TV&3-YJz&KRp;D^mvWM%rX{((oMctMJnP-YCvi7ZA7<JlKh%m_ z!a3zZ?yYCjN<6o#?oQ>`U(G7Ap+05(o6RZvzep4vnAChJ`=p}k+vH2`^HoG*DrS1# zmo$8`LG^Eu%Z4R09=3OXRPPY!>zTLt^2JHLZ@nV&f-~(CJbn74j51D6klFl1S4jN8 zq{l@^CJCS74a<BGStK8~<;jw)ci}~L3##~69ZNf0>>pXd7|vpPsyfrVt<|vN;f;0m zjr->9tG#&8gjsjj{}&hkt#Iqju*`9}ySYz%Yw#4aw>+O$b(~XjzEZxJHKng8xMaRr zLP?AG#OW4O15Msu{I|sUOu+3+oM|B@!6_2i=^|QX>!w#^%Pk2zbGC7vkJ3tGlNrMP zk;gZF(6P%sx#Cih&oN!k6PZmtw{H7wJNZqIH@JS<9Km}+3nM=$UO0cU*jr6yYX8zp zd!@UqrHURDUpdP;<#{ldW802tKBt_we0*?mZ*F<SBhOtu>o$~nvc?FxTz&KN+h^gE z--0`@c>K=0z5VY>&-MjAuV3HJ_^87Fp?Fd0$6H^Pbu8H2&imn#myd;N`aGQ@vo@8n z9$&KfxzN8KOnvqKOBQQh?_Xv-d9q%rL}yW6*AGEkgA$M9+K$?Dyk~x^Ikn=>Bi0bR zoAZy`KHbrynjR{arI2kuyWLdV{?y^Ci|!O8l^rX%{MJ&0cVoC&ZgxWSUc<W^4P|q0 z&A7Mlf3DWcs3N~}!rodb73be2>25AlWVs!4VyDeDfwkIq--qn|R6jMUi+!cgr%NvH zbh-N$Kb}{u7hbSd@9ei5A*Z&VpT46q@@V#In{Ue^#3x0|UT%o+Ir~SmwqAF|COzh~ zuQNZpa4eOr-)@|hKB=eas%m(m<XpSOaT~YV`aScx9<k#^TKC=uM`liJnSM?6d7;|G z_gU2<n(421ANBp*ea0jBX_oiedeeZrAuE-`&RT9>Q^6g)n(_HU9_`DK&Ub?r9$OjX zZys>j=>Iy6z^z-ZoWAOO_o=8x>2qW42QNQuS@zOpx|G?pR+oK6XDd$4YAvjMIAOMG z`!APW>ED_(b*+AjP7+a#3`(5!$MjA?_);eSn}2@Wg}(4L^_lo|?b6x1kLT(y%b6`z zUv{c%Y3!`1qgG2Ze=^>)oU*Rq_lMp`>6cO_N(JxIn;AS?)?z`*I?Ly(HEatUZ-4u; zVrJI9P)qwcC6`yFEb>n}{J8IsWb@y@dAH7g{l(evbKcsR)J^3ok2QG0Jhxuod|a(W z(ER7Jq||>t=l|!=zNF|e`_{=XGT~3Xlc)OT=C5+AKOet&Rod5X@wu0R7k3%GT((p6 zQ(w%H=?DE%>>~F~SXMiA`KRN#f9zYd3<B&lZJ6Gz-SGU#9^0kM&s2x4`BRs@C0VKT znyvHo`;iCx)U{@8yX5R5xhDHm`2NVqI8W!VY`Jk3Ze1tlS1&Rz)qkQbTD#eQ(t{PR zeQ*4e5!H%V)x=d_skP>~)ECDG3LT*y4@`ciGlVFf{OEGhqIE-+<_7t&e%8Of&-d3D zeUMgq8#yPrdfsBkD+&klbBnvTZ1Z)Vclo$a<{_<ZfiqJ6hkct>-10+lkMI9&>%xqM z?gp<}RpM{B`kKzYdFdZD!mqsle$CW>@v5CqxmL}-y-wkR3}=j^Z*l!=QI?$vXFkQU zH^23LvaRuXt_ySCv7kFm9J4lv&EBFDU92va8W}z%b#B;ZukUh~Hm#U9N$WtQ-HcB` zve$x`ybnJMy%Ohs*tF%5QSYwR8>Z-7jhe=`cmGtgjKe}D8TZ2S;^%$0HeIXp@QHGT zc;u5cQESchvd%8D>uyUvtGo7cM7_!C<ac*;ZN8g*+y1I}@lIXWxnd97KPu0<t`u{i zzvy}YM)?OmJ%8P~&#by`q;ci_-&a3Byj+vHv+J0SSUKBzMVb9=s)a^zR=ugU6BEQv zTQi^4op`_`?7|am>s}89nNEqwHC-&5BJM_R-oZKF*xJ`LYPW94?!D{Es%w|1C8cew z*W0&t+bd0<n4`RrF7n4WolmI!aZD#~R~zrg563d^{JHe$SL#;rH*de5e*I;8UZw0_ zv%uet>K8BlVOn)~_NENGW$JU^md@dfbC0Nvn%1hPv%X$X*Kv#MnOCV>Be&RDf0o<3 zT(|q1$Jx>u6KCmI-CDPJrtx;W?%7u2p>gI{s!}f2d!K)~pqh96<&^c0rGL#Xe(7(x zronp0J<qP)8UJ=mDp*Tqe7|t<`z6iY8<=DN-0qco<7ofw(u3ayEq^5*o?+oLIKXE# zf$ySX?GMhjOR7P(&B{M2c^*^-?RR>0UEuiiLYerZoHe}aA4~7}Yd-oR_Wa%f&WFhk zSq1weHf;TU-`%rb>Vr|8%==}|+aGZ5X?M(?@R)UvxVWSiztQgd$79y3ZZDtkK66<{ z&%;lXE9_sL_-IpFZU1WJ$<;qHYaEuYz9N38b8n5s#_8P4wN@TZ{-LnSwY4PAy?4eB z0Xv`5D-P7LZZ)>qaqoZ>^K4$5ya$sS`z0z49dPI6k=WA6aw5HL=gxY8sTr%@FUW42 z#P(cRXkOY1-<w=l_DEC|wVk|Xk-zjqJ4;U53jd?U-jj}n>_2iM{e@#x;L>ZqvTw-b zpG)fAu(Q`b`e(6q{kD(kzfIolh&gj}!M%cAEX>y)KQ?)()9pXuQzn~J-%<T13ro|B zPn*1ZlU*&^`25gZ-6vCz_IYn8VW_`<lp&Azel4%{<I6kLYx2c*&*D5B`zP(<*)wyF zE|Sq(rqS*l?0ac~T$sSkMLfrMcW&P-v3GNaqII{#CgJ%@nln|}{w+7r+ZX(}^s4lV z#r@O7rrvN++V{BFK-1HRx9F+T*^SoSw(U`et2f^ezZd_v@=HqLg7u~~0ln4CGRIdR zu5VA8^M+>&=k?#4Ebc@KbGl^hxFNnikMnzaVGB!p{ILV6?`&3;@lAW*!?HxEH2r~8 z+oOlcTzl?)5^^<}$>RRv3S;lfjeB}$Wl9DlPiEXVNo%XH`uh|w*~B1TgWh8^J@}0~ z<r05sRNr;yUZZmK{DbsLC+qyV^ON-t%$(|z_Vi$V;VldE?;Lyob^lQP#>OEq{bq1Q z?Z%AP-M7~1n9qni|Im0!VB`+gP~(*NwaJrLe%QnH@&?cQ$qt2G!d26v;|@&y!&=&@ z{PfJ(hZg!PoF6{U`5m?XG25a$uWI&usJeOe#>}Ig+hX>_q?Oz)-zi~u`m63w3E3Zx zr~WA}yV%ZIINhsWDYZE8*IBD+k?R5;t=V^0m+54QVbCju`>v~}l{a*Ue@u!yw|+t= z*O|!=Cr{a6UbBDNH%8UmACBARHf~sJXZkSsl`s##`K((9d;UA<$URuDCYC<q$fJWC z)ov;h-LrK!RwQqj+IvxKch|(5I%iT3PM-2v)9Z)fG*kKX)DN6#2QT}q5uA5%*W2@) zQ?BcFB>!0Rt;f|p=JKvqPKNoHce!qmo`3zS<CMrRtlzRK&YA5w5;tLre)hTjJ%+JP zp@|`qt1q_vdVjRA<)1jXuRHm}Ny*7KB(5Qip)780zq5{wfuUydK}r95E)Tz)r4J`5 z%@#PmHTdVG9UC8CQ&oxeR{wTvb?nBdqlVu_oVZ&HvK!l&4s+Kg%vfj~;`xE+A?u8X zl5P7Nj_><$h=*s!{hL!|?h7rG`~Al9{?B*!-~TTA`~3gEZ{-Yq57VveTAtrt@R)V$ znaqkncaiy*3LM>K&aXba{OY?!ZQg6^D?D?3UFU>*2kNSB_28Wzy>Y>|ZmV4hFRzrj z9uCsZk@Y+}&n42Gv2RylX~>6}VHIBSTSe=b&M#V)%oAR!^Eis<)$+$zPO^l3h~%Ar z`9o#nxz5dpA5VAV7FM3V?0kQpSe(F%c{`HgOpCX@)OoV3_I!~T8_TWs*yXQg_t|IP zGOgFV@GLs@<+VR2S2bvGyjitlTWmqi%UIJ~*B<_;zNhmAI#Rh>->h*cxuF}lA^A|z zlbKPKaaG38_UKNv-JWr4^Ro1n#my35#dWhz`tG>rly}hBd)pb^>a?Xwd+(gsx+r#a zRQS^ssizkv1%|DjyewJIqrdOi*#-rJDV&ct+?n%8x}L+|^!}z|*Xx?sZ2Yb2@@{O& zO)XT|t@vv5=kSz^;isN#?RvV_;E3U_l-);F8}}+McHVo`^>X2oSY953F4d_TJ1<(R zrEM11GTQ8A%Koq4o@wo=xD`uQ@2oxc>BY>|F|WS(EPpcX@DJy0>eq7T-Y#-4jXHe0 z^zv;b2|oTOzIl2l>%EpnPE(hE_w~V<GY2@Qwq)Md(es@()xqbmxJgam;prwdkq+rU zQ;u%$P(PG$E2_X}|FgjFPagQxRSWv<S#Q+Fm$LIxC+o}e0!t@P%hlG|nzCt4Quxi7 znbQw%i=KM^s?N*XKB=Gf^*&HyVKKZNmLtb1ceAnmqR(#A^*2_0ZDd!j-yF{={o;5j zb9><t2l+k@32A5J4@UcxKHRwW&N_7Sn@L}IYDCR>YIxUkeA&Bxox-zUZy!x+44>Lm zS9AA(`G;AJ`Kz8rSM(m(ng2QFY~b3xaVm|A59giLTPl0qU)(nHmr<-?=%vd`)g&%Y zkJVqRFl(RB?M!BKXXpE71!BQW{r2@7)0hPFZyqTB5X*f3@ONID_F}0x^ABuw3KM2< zru*F5J14C1|Afy9zWiO?o2JB>>CQjN>9c-&j8)FRE$`XpJ<<H8yeIR4*t+Z=8ymM9 zEPbfXR@e1f=f&Rz<}SB)iZ(L+mgCy_>~Hg}l{4?kvL92^PZP5(w+!)IbFPhJ9#@g9 zTK#I{$#<=MO*YLjJiX`6+>`H2c0A^i_3NB*GH3riy^9R9rR?`fPh#PFd!u=_$i>?g zm7N_N(r=F@ltqQkKi(30*I=8~iw_rSu5QiVH^=C&YomL4QO~cEqIJ(VESJ3NylmRD zYVE|J@AeaR8!ojrPmP^*#(zzgcVy!Flw(uA?wxt)aQ!CXr!`x)tJVJ9yRh=ow6xGX zBa^*BUsGpxmiinIz3|N7mRZmXcZ1>!%wHuLw<xsoY!Z0!RI`a?*Hwmx`=ZYZ*e%}k z+P&{};JjxiE-#AvvUj^;)%QK!9`Em!U;N~!@Fzq;?CGt;Ulnc@aP0n|VjtB|qS40x zSoz^}rvx_^>r{<H^?%(z8WvsjdBWeZP*%Wyy^>Y=j=mdOkBYZ1EW91%9$nt#Eqg3? z%lwy*bM0nzUEBCtY+lg$KJ$qI=g&pIh;+Rk<GgM6Y^Nu6OEh=?o_FH7i`}^Zxwn6L zmCVmPo^@jT(p&#p6kWZu*6(k9yxQa3*HZg3>Hg=*D<foA*4T)yf85znU-)+Y${(_C zJdf@Oa6R2?edG7HTkofK?dx6k{o*pCz~lekG2fBD_vF~b-5%UezKU?#Hab;_zF5-y zop;HX_~*jbpH<#H?d9z`X8Y{_`wIUOgLc_P-nM~4f)jbqwO^eqvntL!QdxkDos*fh zC7I=r=e1`_tCKc;P%R4eSi31tf3s7)dE{dAf;pStJ^o?&=?5#@2XCH5ek((HF23Tp zcR2G;vwYwGC)XeDH|R6<>EJlW)qDBY0gk<vx|1|IY$b$$8|v|Wv^)KK@eHmFMU5v` zKG0ih!`nOU^_HpXy%iac+IKTXi5`3>Y~lDvX307KN!OZsUMw+h?zwQ}{)@|+i&nPm zPmriT|KV|I%cEnvo@l80Pd4IxYj3eq@znj=>>Isiyj2A?W-3`8SsEV<+5Si`|E0_O zIQxxUuDhMVjY1!jU(cIo@JK!3`Tyfo)|X2gAMj=DZEoIOxZ=<1uWDWFUp_k;^-NeU zxMSVDMBbm>HEvCDf0S=kzkkHcl&@^{k?&-n(YDJu-r5WFIwLOZ`lH|YrF+lL1N&++ zn}6{gvp>B2R7=~5C2o;%bNFp${gsE*WgAXOZa%NDib(`9j^DNUzUo&l28JCHlY5no z>uZFsOa8al`TgW`qV!BvroI{5QghVT2skq&OBV>3RS34LJej~Bt?;_1B*|p8vai*p zB}<K8=G|JBd3oBBwQr7jdZgbf=`VS|_j{h(|Mz~AO!+>n-~XVz>i+L<RrgO%K5zF& zqQNw&xl7k#?IM}=(@tkU`4q*vJ~&Y8;L?h{P39W)J8pMZ@2ObKvd8o2?2lsl_g)>n zEwU%pb*syoW7ba|?$x^2S*}^Jy{nS%hn=YP2f35q>UQo4*LxrQk>TF@2h3b{FOEub zRt31~$_0H;6g~YRQPlf`AgiXRw(4|tgM|r~y8BnHIDS}b*@uolUsuG)O+Fo|FZcaX zveup-JMPpw9aXRYs3|)Cn6Q>z^Z8X3Li2+^RI<hgY!r+SDb(Kg<mhzOgW-FAtZG_+ za(?{ucK?%y^F8$ZD?j?4d=VX26Me9JiQ@97pJMg%rr&>G`LR~C`~f>x-HW6BDj)kp z|FGCkJ$*jpkIepnkKTX04z3UV^4Oe-yX@Px(iSUzzAvTU<nCPEyuAK%!ufmu*3HXf zjDOKl7n9%lYU9LdcG_~Cy*WZN?&cj6nkKiI?Q6y*0S=Lg<t5*?m$q72Z>q_<r16_= zm(}mh7mik5P+GL<?8Jy8x0C{c?i*-4$TV-)T&pG0DS7wgMrXG@@%AF7OD3g7^z*&? z*l}lhqg=MhB!LJ~qsPj+%7wKS^;uiybi982*lkbh^1XN8zxnoJqD1efo{!oF`~Nv? zJh`pJ*3PNURPQ)b)~wG{t6~;hI@mEo*IFsCdHK}Gg_GOEj(B)<Gzgjdu2y!sv#HQ_ zp23gg$aV7`W-M8HS4R4B^5IK2_L}iYPHjJXqtIv)%WH1VUw*1O$vOF9A$-l>cqA+9 zHJ<GdP5cw%a;vDV_(ezDT#W>8am#P2YdyB4O6k2Vso)K`8T(A)txoqWW#yoo-FFrV zY~uF}pW0S3&*YHjX_bFm=70YFjJWi6uKHoOV{@cxD|TF9XA-~u++Dd|oq4rYl1y(l z_XTOLWJ~q6zUz8k{ZcZ?pQ5QLdU~1jnGI2FRrR|o)HKpP<u<$zIdjQBt#_j8we*({ z7gv8Nw4N>cXIjmrN$kB9hth1!mA5Uh>bK_b>kQbvW1_+2j~gydQ|MdR&w1wbs@tN{ z{!x50mfTvHqGEL?yQTNUj;XGjZ~AL5e^Aa<r@vv@ze7KRpG;qCtYj6xX+`ZeLqEl{ z`m3I#X$BlNt=|!Lm?Q66fpFfH0v7X4zOgF~nfzg_Uvijh?x~tNp2CSKol$QWn5v%K zkU7P3=|le?o16A${LudAHYb^B>G4T|&3tjc>!)mJ+y7Wz>R)HQ=8x@d{~zr4IrXyX z&Qf)^nPyV+ju}hMJ6bFyv?KVirj37d>uwRZNDf2qgo)k0v76S{yD!#>n0}b=vx`pF ztHW;;&z<Dt)jyV7vQ6XU_q?{G^?AM9RE3U76kF(hv?<aQT~X|K@7%l@8+J_Gm-6fO zu`VM;({pE)X1xwD^WPqN^4jW-BHtB@oP?#A_0xh)13PcuXj_*Ub|jo5<jJHCtw7zE z&omA#@02nO7yN8u7_Sp>#Hrr*$5AEMm?fP@lQ{Pl&P!UVy!`W0bIHw0$!^~QKCQoc z<Y*B0`9!VtoedFM8<xiQANA2T$hmOBu+3bc?^Wj!i@%~4ImehY=d)DIXW=`3cB8|L z@cW9ki7c<e)LzZ{T(sr+1wrMU%%qtSdPmn@IO3&w?tYSZaqyj$&umVIcUrNnslUy0 zL!;5eOX0G{3MV5oAI;*sQhU{2xi+gcEecFvu3U24S0U~DY=@*f9PWJXJr5mJ%J}}B zofXlWeRE^%E$-~KcYP*l+_#l%U(#yo?LAw>(NFi0P}qzeA%fW^8^yM3Ce8KvIs0W} z@isxvy>^qsUT#Rcax%ZG((7CQv9rSGN&@Q-YZ?0U9O*k2A!0jIJHxg1u+O@WM#j0X zQr8_mRvGan<z4&dFPr9>eC`Ugy(lK{*(YiE+G$nl&r_U_3sO`hm-lLSSCwuw{KTZY zHGRg+sK-_*PbS>dov{5zN8;0a8@Y|A$9}xAaLIC|#<#{hVvBZc@XyQAxN&--PUhB= zaxYfvAE{ru@wA@JjDW~%AO0P(Joqy9br)NYq_5S_X`(S*N8`%n6Q7HmQhT%Ovr*Y@ zC8O&NuQTJ0Z)eqL%VqVoe=tpcozk4>6JO7~ownhrPPyzCu2_MR#K?-*?~+!zJbe;! zSZ2=$m&iGeW$#`UUYjfY`O}-YxVddt*Padx?v{QW80%;Bv7UwB?Am#ao;>0ByJtKy z>#mw?iH)=9>)mqhk?0}53yD_i7o^V2@-`^@*ipJ_sX%*D_WAyYKOFbnoYUERey`HH z%gdi^{}7Y@CiRKPDZeW>D{p7sUFiFBt<8~XDKpEw^$$$B{QXc&daCuVx3ZGU_kCEA zXdl~?>}l)8e)jay@^`m<>v_Y48%^z&85d07UGcwxyEppDvz-@ixhALgn7%r)e0xSi ze!*hv;{opr)3&vKUH3dF>S)P&+oR&2cUC^vj+g42wdp<k`T2D}?ezBS=#nxye4tyq zxO1mf$G!V+Ry}F0NMFA*)cEid>%MiK|Ks_#&n!*9*KD3L%YE|WFBN~U@-|1*cNOI@ zK4_G0zQNzPddF<mslOM_sb&2h{``&hPWuU)*DJ{@%A3TjS6<Q@e=t9@fa#H=^izfF zM$!@8uXkqgF_p+X+AfpGBiw!DkzCh$g*P8P&v2RgElS}R_x~>9)vgwB?bXNXpnz|` zZI|{RvJQC^{JYI&U)Mg7Eh1_D&DyFvyy~02`!Ad|r8vs_@6t)vo_}WvUXiIg`^cTJ zqw58t%vvj5X3js<BqH{!@=^ZRUweHgN2r*KZ=JS&-jPRPSJ$&G-;i=5-mW!j-M(&h z!5IfGY3fLSs#f1n!=$}z!=yQ3O9RYv%k`fX#d?~rU$nHeB%WDJp+hy}h}D{7dM3&8 zbIU~a>X+tUJEZVM#q5Dt&Xd<mMavV6{T_4O>0VpWa({Ei=30w)KRSQ3zg4h1^!$m& z->5!Lmml72uN3Wc+yk8|zdzPkbmSJhaB|1R@7F)uPmVct;vqwyB44Y~ZHrlbhrCz5 z{vqW(>2~I;av61r>65p~G}`_-`#j3(PU5FoNAqQEty+K8FI=!bk?EkP$)%Z@0m*zB zw+yF-@Vs!~wR$;Ac3a?Q*{~grUI+e_9x?Nps{drmfv+$BtV&P_xBh=lBqcK3Z(8V$ zI>yL5Q&KNZI~JXwJ;zD-|EyZwecnMkN|>^_ZoWO4xLx6N-}>(+yW3w{tt_9u-llb{ z<{IzBS}y6b`|URuYUb3-WX(D7G+lGi)$N+CXTK*bWcju3gH4yNv+BWpo;h<5Y}=d} zdrNJ@-yYpnTy`;T>ats2yFI++enVm5-;!GlVw*W$&omF;V6(J|@ln{v_hL5lcS{|6 z$6BFisp}Rj^-byDSvSx1O{eF%?QDu><}sarqE9wS@^G}*6vp_S>up>6?$#evH@JOm z>*c@#_RZDlD<($0%lcBfwBYHytCBr;g_29n`<;B#qf#ff{+YLV_uI{RWli%or^KDE zx#z}sd&Av-O}s0*-`zbHS|=MFJyYs|zW&-vH<X_lAJ3Y(^z_V^j=T2GWV~^rB_q`> z|6#fG{@61wwP&8c#P8_EHR)B^uXM4UTk0RGR;+w`*lkZwrCvv*<NZB0ZzsA{%sW=Y zT5i+4l&ehRgPl6F7el!KSKLRLoeuvdt(<>g?#mtgH=jBjbDTfx(7oNptOw5S6RAp7 zP`{|Yd8LZ_V_i12PFJ0kFW0Qv>U}YAIZKk@(TE+|x@pN#K2Jq{o!mQVk(xokj3wqz zHmvs9%qv{6wD;?(|B!VKlQVT+GKy>t)?36bj%YE9#zyI?h%hkZXfrS<K-N6yu}{`C zldfk!q{cW=pvh%&L(5SQ!8kSjlP7Y{?NQ|1nxz|-y>)H0Zq)Tv8B0S0gcQ26?{-CR z4b5H~mb-Rq-K}rYUslihcfQ(qvZoQpiT*p^@5P?8J^f$j`?<~WayBk5qJJjN-uAg5 z)6K&;Xjb5*o^x)KmCs82lzF|(>0D^VoZcT(-S0ekR&OIIt>1h6tZ>C5lgW2%W-j0H z(rTVoZ}>yuJ0{bXpZp^%I`7@18uPoyjYa0YT*evmV3}=<hOO%*5$%{q%T~^L{VYhY zI9PQ0>E}9`Y2LwxJ$#>JTA%N#n0M%N>M<tsvri^3sbAQw{dA|tjaZ#z_1&8N(|7z3 zsnk3BOe^l$v#hvx^~a)n4{6`o!cd*~CL}Y=D_C2^Pnc`@?j3$ruSD|#DyDXa@BYE_ zGUD;FrFS&WMw#zD^;#ru{Rg&6+snRN?>t#HwPxBO>ANBNSHeG;$L#U6J2!2a)5EiQ zSx<Divh(uN=9}o|MXB5Fnmx<n`q8zYawac3boT9=@{g8!_q1}@H(8#jR}|EH^Qgn- zyy(0|T*vQRQRB)@PL`-WQ<%9;^UlL%4A;FbYYOicxwr0v`Q4IrXL>(WZh8={^!{hw zuNM6Y=eeJ}buv85%2hwxb1iS{myA+}?xSBMCZ|`P?OIh@nr*JXJ~w9fva*}Iwr*W5 zWww4@)b2@|%iqc5&JL5i;FSBc*X>HZd{*=klRZ{4U6N5JBG$7$+SRR}RK#{DH@9j^ zW>T!ht+0DySEHD!D&0f6UA|;g&b92Ax^7y5yN1BEs2R&rW<~6_G1S}bVzPKImk!%( zW~a)iWvr_&KTo*GviGuh$MHY6zli>8h<p0^<;IA;VwZgGoiYwwVflz@Lb2Yr_CLpj zmep_O-siM#{j?`9a>UoAZwhaZE?G9Q^xuSg0{mvLFK(4$JIa(eUo2w1>)%gvUu=<n zTNjZRbZqWXvqpv;<-Zs0N_%nouVHg$q8q1Kguld=tM|qFv)b%sqCzqx@5<|m&+X8x zdHL9<^|%k0(AI?CEB0IJ-G9A^ahagl&k1=`)<*|-*K6*487y^sYggrG>Bo-CE;0(% zR^D20=)Pn5-3NKgcDi5v^hI&?hRsUW`rqAyeZHPvGi&zzr~N0)OE~Ae5R4QHu3$gY z<QQ+m@O7D?&DsQosfT>-C1+o^o_V8xe^kV#t19zFTfBX?EjwNkZ}ZB0*QwWyt_+1c z_xtusZrT*uGjH~-`o(4<oze?dXFK*7U3rkxw|yJemCa^)&D%}O5B{39&@eSQxSM&| zN9P?;Y3qcX&824LXYUm=EL`^CC|7;>!s>=CW_MR`ZC!JH@xN>9N>tZzwll7aY-W+y z`Yzz}bg6XhPPxyne+5rZ`zBT|Qq;F8EWsuq?zy?BLEZxW64y!p9>~_4lz%*McbZPn z4<ViVX&dK%IP<FP?sikPvf1GVQywnnVp$&AG_7?({Mqy)TN^r?-b7f)eSN8Rt^MU( z!Mo`%bf0x-CmiIxRB7zIG(M_TpLL~MeYA)1qrln~eeCNcl#F#`FZa&!J8)9KbnUgp zj`ccf0&T*)%h(DxvBW(N{wt>SrGA>}u4_rIhi6<A>XX*wm=(RA!@YS{;tb(8j4t{Y zI!%;?maohyHPI<7jl3hjL8GuG^UMWKqec7<KUPh-t?LzeGbT{_(6oycEUSFyKicMW z;8cM?Nn5o1)rScI+z0oEtl@AMj$8WS`-1rToM!u$B`gPXSzFT`j}@$OoP6}AZk0p* z^aqk>7wGteBo!J*Hl)_<ta&>@cNO!#WV5s{RSi)Kx6hRMc%jVx$oyFsQ!kx;c){6i zi*~AD@a>4Gz8N9P%0f#L`a*aF{(A^TPQ9jI=;!fM_2%=Xf~z@?Hdko{-1gb_Mt4^V zcWSlKho`)E?>-55cv|G&zC+WMkNiF~aov`LBO&!+6AV34)6O@^nWP&ZOy%wnyE|*; z-Itrw&L*uoJ!AKz&UZVU{lg%o+r|A?b8c!C&+^HeYWQ*Ks@W<FxfHkj_`$g}+}<;) zxX<skM&pwC*J2iiR@rPh_bT4TUu=FMPj|n0M_TE*m-kcmz1j3)$Jx2>%shj*`=X;F z?_?ay<F5ael@vGAC-|jjmDkepm$p-@UOG;_x4?eI7Y*BGmt4QdPSsnIzq-WUcEP2k zHLPZK>w<#C{yHpue@RvAtwPFO`Bi_E_XRy&{UfV&{lxz4(0_*U%Rl-5uv+q1ncK8> zo51arpT5>GyLe0&$h*5^(<+gxU8n4yN<X~)a&cxK7uSTT`Sp)xhwf|55B+KOPjZp> zvrUc<Z-?${ejidPet+qwyMKx^-vw5h$FKdQ|DyCs)4!?Nj}#BfUkNsxoq2lYGMRf{ zst#Bi+nZg!Ep#pUUcikHi~g9H)Sp=0y30Vft3_&BM%c5po+;t$1;1@mno#}KPvw!r z^zyQ-xNu3Y&VPTyP3Je~)laQI`Mqo2yWmRx`$xCD?C??f)|c45!TiTpi-1b~`|B^A zE$KeR|G{qR?uDXx=BqXLpXWJnuVA&gF#lR9pUXu~bsF|pSTfS)2w&N?=j|=CySLZ8 zR$RZ3Re933y|Q(S_v+ZEh&{Qu;CjY&9+O?=X~&AHmzfLkCNI4Bv~}6;6n*Z5`lXx= zQ&o>CZVT@UTW`<y)Wy|JVwvl-ime(E-YkX;NABotymMQMmwoT7>mA3E7wNC|&=Nkl z=Oyb>@zUU>=JwO%z1*DFhtwLSlrA@U=Y1uA>av9n$D&ik5}nyX-U*uDTK|dBZbiZR zQ~X^I<sUhpxc2wrCM~I}yHrwE{V~|P?vrx;pB1P2Pu_mKL2|E}N16F=XU^loKWrM` z)GRSdXLvJd>-NLf<#-m0Y}B1$?*BCYptHkM&#ChtEf1}8n_!_={IfN=s;wuhcjX_Q z|4|&W)1K{QbXt1Kc<TJ;t0&%fZDsl|KIt;sv`DS}8kd*VlrCNR!CUKpTYT70QO>eT zXJuz6R@eHg4=WZNElIkvsGu*!@Kx`Z@WuD86>Pbr9r$=V*MGmK;XmzE9$jUO?dF`b zr|5?0_2%4%5&y!3vt*-A2rTbT?mM9KP~vsg!}nemVPa0A%RgoR*>z}t_)p${&8PA| z$s1lv6s^(Pe>8vfAN4wR*7RdS?o0W9#7@00%<^aE|4AliC)8W{JpHbE>2K%<!^{m| z!+13=99zzQ=Zm7@9rmQ-`&WMP|26%T{3lVZ|8w(QKiCwlaqpb{MsU7cWq9GA;}2B$ zd_FHd`m{5?P{Q}PU)5dnq=dJPmkJ&~c$ED`pk8vp|1GnoWaccZDrDH7eS7gkzSle* zzhb+dHQkD;JZE!EnrlPH;`+A^wLMxIGBvJ-br+UwasGd!spojj`-?gUxBRSFm$L8L zU$=7#+s<D0@!C_jc!!~W>D7&ov!};1Z!J4>D0Ln8+^9!2p;JFDNm;~tQu4!*ji)u% zvlTP7FizJC+t%K2SYd&t;|X@o^mL2&;&M+v9p!tom1Ccop7t8n@{b<fX&#=f^?ck# z=ccvf-{9tY`YZLz0g0?QM?T|2+Q0LYinz0kla6;P2h6^hmlX9)XzoeIvLwf^7k;ih zJ$sU}_teZ?r#aMr2K?DLE8)n2$jdjgo^gMcF=@GRY~if4C+hOl+@ACqKfABj#}&;p z(Kc0cd7a*)njC?tPs)m%w(~uk_BhP+_@Tzh>m6k31t+d=h;e;6x9;+SX^kIK-EQXW zJT9m+OI)+nIq8l;eNN@3AI#iQ+&SfsF0MbZ;i$%mkhQIc6sNQ@dao#CmDCeC6Toia z?(4fud((d{*OwRmuzj*Ww5jvo7LHld#hBRcDfOMNDVqNG*cX1)buCM-tJVdk-}|j& zr+0>Dr|l$#koom{0=$h?llHu<IxM_y-XA%MinaG#i<VE;i8%B4zTr-nPjRP;k38Oc z$GheB8i!3*ff~kVE!2K>PkI#58Te?+ok?r6eg5v7WVYc1k5K7DJ{Qj`_J6CFoIkmv zz3GtK`<Sa$EbMDc-#<?hOE9_@SjlzC*Z4zOM#^rn)%@;XXEn&R@YXZ@NmSf>*`tQf z%<a@{(G{n6`4_WokNUoAUY!K*PBtz7>7@r^uTT8&>I3VcMXK)Xi?;cxUntX3QDU!r zVe?DOaBly4om~w@Pg?rE%UG_P?Ju+Cth(RbioSz)ykAyl=pVk`x**|raaACHs`%GQ zyEW5qWK`{Hzfx<mXGMj)rmO1j`V)~MyZYVU7?%IAyT$p$#hO=pugNq&7XHhbTu&e8 zvc>jIRO(iXb+lJ7y5FL1cE4q{&S&2rn-+d=|Dybb!~FM2U#@xHUAr?=Y-a`Xy7FJ( z*weFaOZA((Q-WVkI6lKm{a1VSoV_O7R-SnL#lox0yIN!W>|?f0mEU<EZ5A*RYb>hg ztk7NB8NzlheP+$NEoI&xcebosviiWpX0c0GOL$l8$kdDF{(Eb~wvIX<YsH%`Cn|04 zHbh>|5c(^U@3%{E_1lO_;cE|mWS>0zeBt@tiQUD=-mCl9>icGBy<6DHyY1(<i;G`4 zhA&mVKCjf+SL>_AuFOj{)$9H)+vo3P!xydBGN*pe>i2sm<;@D>)Ld@%b;9<bjc3cB z?y@=Oy#3;ui&vf(KHK$d&i?s+E6#jNDZgy;Ti4{w;+|Poebw_mXk0R_J<KQm{#Et8 z#U;V}Rvb-RmCD-dwwp6&zOQno@q&%4YF9F}OfUO<atzch5!&h~TW2-(+(OeWqQ*== zxGwD!S*G_T)}cNyxOJ^SK-hgQ)zr(GCjEJf=TG!*@mu*dX_u^5Q+C2t*%I|B#*?;P z)Z4}V=Se`%yJK9|87wcJm+)WN#j^X|vDw1sRljimQaw|m|6<Cd#r&7&aOH+;_%Hk| za_cbHTh&>gRC|wgI|ctNp0zOGYPv~HgYUcL>_QU1O*=TPq`MNh>fN1RGR`_^@cKvG zteaDU6Y4v-X6LB({^sNh{A1weE#Q~u$1|NzZkz0aO*&o)=jOHT<l8b=U^BPHe>H(} zxzNMTziSsOE}g?B?47gkZL`qk4MnP@!TeJ;%kN#a(&D9MgIu7qS!%7{Wl<}O)P|0| zUlN>-h%a<bT(s<q=PEs|mkaAZc~!6cadyq?Og;tEYG=RJB(I=5H&Wb>&pD>%o|!!P za<ceIE!pbKbqYoEYVFV7pWNg-vGZy7hKGDoY>WF`T|O!-JJaz0+`-Q(Kh6dHI9v4N z<kMy5mKT>_a-MLiQIz|oz&)2=v!;A8{jx!F?-O4e&C@m2N51T+KKtX?f3|}qmh$yW zj|&y;Yg%qm5UQ`+&^$*)F!`b1tY-IA=a&nAmffy#*Nb^$_G#KPD=n?La_Q!}w>+~t zk5@K`rC)55<=b&QTJ`U>*-1ioI2q#kU*C0LeUK%#ExzM>FvF)MtlSTrw$Gl||2Fti zh-%KuLp2){!cH}XooD>g5h8r@TDuzSlV&d4`f~w?p7<+%5KjB?OZ4BoCCk?s%r%vf zPF?)pAfenS>B79YQ`uVQA}={Fzf$b1ubW$B=Mw6>ZBD8|hM(yf&eeMPZx%{v=dE+N z)8goV*HgPHGc{QMs@ci!nYJZW{8v3&R<<)qYl&XGuxgpt^~qD72Ns1zSA5?gwfkic zZ-={($F+KsH;X*QZf>n`O}Xd)dUs}X$()-ECq$LZwD(?N=}Lc^^JZB-$Dt1|migW- z*~arM=h$gEj~Uz&v0lB;K4(QuXSj89O8Ymy8ISxl-svq_v)k~oTtkj|sFIwHv&#(z z*Sv+c9X{29p>hX)#Ra@-+g8PJJTBmN|AAVDXBHfrZ8@^|>lw}4AN=c|;nu@2LHfZA z|I5Y~-ioQLPd|I%g5Ttq1`nPe%FBLXStWOD-IB{MSud~FJA7yQ3-cGd#nNg!<IEn` zSg<x6KCpx#fv4=>TF&P&A3pCEnUj6u>8r#0)-8GZalhBXrCfVgUGQps)oHg}^Tq4Q zd*;}6X3TWzU9Pz$uR`&}zIwOy>P8jT`;KI*J;}N0e=9EQomzZsp`W+;%gF7M5AVCZ z&HCv<OSRqo&0p0sWE9Ng7=%-MHfyLH3CLvmd+&=^;!RhMm5*DSb$)6pY<yj(aj5Zm zQ_|(dr#@t?-L5+`rs+<J)5OkmlTL~@r1RfYT_5Yucl({J*+(;<xp&WBGBFOX?|8<a z{P?**$h>ylxQ5AlJ8ZtlggR6odK8m0y+1PllDy&(j+W4q#%60~I_6)zy^Mi7s4T*v z-sr6Y6Oa0BaTBM7<rSaO6(*_L=c;`AY<wf;&Z|{%S(DG)$vb#UKk}i>Nv^s*IjIh6 z36=o`>Q6fhR6hweRooS6i{Ep{ThQX_&dD|&vi1D$U+s1?dpp5z`p;*DwtLu}@|<S% zHtp7se0G_4fj4V8=c?`AY^tBl4SuQhHfh-e94o0}KUF>5uWgC<%i4fn3|s76Uj4Jy zsO`x4BA8LzWATquqqb+&bNOYHt~<zIe(Cee_%G|MTP;lwYJX|#*mC`R!~9FStYux0 z*FLT(YtEF`i@xBxvHr+()APLPe>(ng2X%0o1npZ8$W^;0;P&&7bpZ?d(<V=9%a?TA z&eS&H;{T75sp(%2-s-y|QnO{IbM1y1$rrqGCY}-KO?W*2%X*i#9fGw?m;YQWn-a}? zbg9PXS<i0gFA!8+nl|z3&eiXg88&e%W<}R8+g$Xce(_)XjPJqqA(j8#mUb`kj$d+s zW09usljL`?%hW!-tY2Vw@?r4Vq+@I=o?ZMui}l>zW%-Kb%J1I)ol~@P{>wnUH(xTF zUP`SI^3`@ddgAW7e?`|a^9(Ph9L)AzcwR_H<I8`}WQ~NdQyn4aSU#RVxZ~-LrxmAk z+K)Uuvm`XT$yKU*|B`(?-E)uEZ;|+Hxp9Y);EFkE52sdc744X#xpL05kOh;EZu2R5 zv%7zC-&|Qv)Aem-Dl)qkq{+zTR2v0tI%OK(HHmx5nx><yw$ZHJ-E-4g{4ZN*zd4n0 zZq1q7HCrw7J&e^i9J=}D+!CI1KEF9mEzpru`yA=os<l&*`{4Co<+A?E<_r915AbGY zW)az(=(U=OQDpMGGm@Ltd_OTVifoqjk7P$0M*L>+vU5KR149KT1A_s07;%1>V!d#< z$p6?$8x(bv6p}Q!rfNMjzI83DGhlVwBrzsckt20CRM(tLy5VasJ+bcQd-wTPb2swW zzP>QiFa3?T%&9H=zWZ<Td;31mNkK76zUbY~=YP)aeE#p;Ui07I_t*bnec)On?!do@ zOO0uTvq?kYo`nfU4D(HnF$H{BHfN9OR!!E+^<0m*(wH)wuJlJ*?$bRwN2HS><c#+Z z>)wb1Ny>T;x<tH-Cbl%KuG=Ghpt>Tyi+{-uwTtp*Nj$TfQX8)w2}-iFs?9CSOPi)- zCAiz^@s(9&!QAO4#-e@}+Y*;4G5Jo{F@B!0Z1aNDPrDrcRvtE)Q^@GQqTca9^~tD( zTPsf)e66pj%Z=RreCyL5y~&ZDx|<i=Y@0K^Cr&;02}|2D9cxj)o435&_}AZ#GFyH7 z;SslU7q6$~b_*ZBP&|2-=k~Kgw}N&BzZHGKCwkg+&4-qW7nT1W&Aex5^e|KRw8j3! zBI#Y*)CATXICduIp5`tNVVyO5-}Ik#$yfclCOJZ_cAoSvwtC^rGOhi~X8WnS8=qcX zbxHA+!?u{|KK{<BnM}Q^N7%F{=Y&p|I`Qu2&4;${?#j9^S=@BF_YL3rbS>d|_wS$h zJFW2MotDL_`38s1E>>8X;L14lH4`tVa%z^}y|jNXF7K>+_LYfKJ74{)l4q>{iys|4 zp&yz2IJUf5XT0+1r5JD5daley=dBt-FDjg7r&>85)yi9O;>3|$(_gw5c1C}VxmVI- zTHC*Qah13DXSX!h?W|Rcx8>fneVuvt&B=&cT(!2ldEf3l7j-OT&A};$f+iky-=q-j z%GcMlr)zdZcp-PDsPvDBga<d@v!4%J_eL`CLuZ%&$C+K{3!{&U{|Gu7{v)dXsQHhu z2MJ$qKIL4Iv7}+w^aHZ9?sWXzlDl^LyKi{`XD;TR-5BAvH_+-&jl{Z5#aG?k?8GL? zG%D|2x7R#Sspe$Q)XD36?ripaQ;_lB^VR)ytx~0+R{huu%OC#j3pM%Z(fW<KQ({Hn z!4Tf4JHKB4j8iFb&#QkgyHGRe;MVSs(y8^I_`(mAd!+VEx>i*9SL|ZkWm&D&I`)q2 ztFxb^KHi*bz0>vZ!`jUCN0o1f%)fYc3d@FU!?<5Db(Y~>`TR$-gdTaGeB}R+|KihA zHg7f@*eUfP-K*ib;FJAQ2a28lS{#o%_v*sQ`4iT&JoSt^B*W@{|3GcW{a6qA)V<j} zN-itK80%jgXE@HrlhmQX)@}b#Rp>{qbgB3Ehcl%#4*XWGY5u<L;o^mLRnn(~jDJ6N zKFn(JLHtIG)vKvq7k(!Q+kVVl;e9(p>6b%xF(doTMN1p5J^Y<fZ4h!`q3#y$BkkJ@ zA|B}J1-}%K_{z4IRVMST&V!x1CA9o^aamZs;{LVbZ_BrX^$X6I$}TSFzALAbXLnC( z4?F+Q7l%2x<qv9>^E}dVyLjU5iL=Kqx>btQ$v7MDy7*|*&C@G{zkHwAAh7tCgz<?L zbuJ!fl-d$6SIzFZmv~LSKx+Sk)IVLudYzO1I9c|UEpppY#}a#F?xM1GSxevk{)_8B zbU#<U=HMh**|u2T{&JP)G+vHJ)pHK7R;k-^Wzr&jr?-24uYFSABF38BKl9e=ggL92 z<{wIJZMrUZs6Nm!`MR=+#*PpCYH~)GU+3-CH#)2uzWWbkt<mP@=wD32h*^_Kn?w7A zI2jluCQpcSsP|FoVN|>+!66VfDJi)tn*Zu1#kMWabmqQgj$A&+FJbwGo@vXJV?8go zl`L;QcVtV#<sF=JFD$Emf7f1l{<ia<?<vkb;`oxk>iXwB_tWj)znogX|A$e-+8@(< z+*53%4kdG~`Vc0WA1rVrl2z#5IraY27497Gr+n07UH&nTb!&xF{XwQVQ$NbFb{B4& zW^w=Y;olV%_VIrh`2CH(t`x94@%eJiC&jp0i<a~XyW@v9E7r6;?>G9HyysU1$NUFB zC)?C$wLGu*XTm>!;>Vi;cE`Eqq<=fFy@NYGL3IC#)%qV_omQ-Ay;?s{GH!z5;m@Ca z>YR?TvRZ!#Rjc=PloFTxGO4LP@{Hz=p7re?7PYkfy?gRt<Ga3v2jBhMH*sO(yopB~ z>KA1v6ht`fc)p`7DEoZI&5z%f<VxQBXe%UEHtXh|wW)8Nqn0i3&d_0gabx<MPYP3n zg@3d0S9NHg?l{@}+ihFkeZxsIucmHz<WZiaVtK><LTKlUg&_wtEl;0$IW6}^CFkjS z*{j^!CT9AJocH|es=AKZt?f(vlLDzU>-U|D)l$=r_Y`tUSNmk|sl9XQlH}gMQ<gq` z5%)VW{hf#ntM_JJWAEv&j`?&yk+~lHt?uxmi(8hd=5$YMzR$HW+sj|{g;XP})mf9w zZ99&icvahaGVrd{6}QOi1^qKG8MT|7ez3RtL|OgrqLa&)v~$l`VNjBI=~|F_)z&%H z>(kaxG<{R8nzQ1<rTeAQ{GJnDMD11A+_fyI>fBd{1M>_{eAL~Z{^--3rO!>g@8>_! z+~~&5W0WE(G|k1_ifPlXyLKiQ&N7~y&8i*B723H-MD)bz8S28ivEJMs#V1Z(Xzf|K zRCwMN4#`Nbl=|4&I=39%%F~NkZ(H6|ek^SiH|e9%&ia_`dtXh=D+v;-;QaXF|76uo zdNvNrWP0WHZrt%_!mgb+j3ncu+B0u0nLq9I)f;+eH<fxH(OeMuI3;&(KTpu10tHo* zyIu=gQWx9(FxTXc57ltsyX{y!DJRb1U2(JH){S;mi;JZHehIx>-!=E$Wr@_~=l9-r z^?IEgrC7YT`0Xy;CCd8(6us*=IJC}Nw#Y(Bv0{>9YRtkti;kG-?!JEFdFR%Y^^-&* z-&}dLsjKV85hWFq|L<=pYVSF!r5JVaea`JWZ<ht_4mRw_pOmrxRoboX6%s)ob8FhA z%1=IPbh>7y_BCmxXGUph*OUYG%E?Q7QV#F>)8=t&N$#~R%D+TH&#P(877F{XQLZI= z|LFIKTcKHY+aqnY;@YpTwrIG%%AzArRO)pVi+gCy;qRUvw}My6M#Y7HWZtt#seiIo z-HA!3EQDs+E_~#E=3}zjwd&53oV{_2QWArX`pfiairS}|eN|MRzC`0iU(0;Muai$C zDKgEzG5K|p9CKr>?PQ*0)B0PT6?V&)_ZT|+yZ5YFuX(+=c~auk@P$uGu3cMZQ@8T- z%af^gGIKVZ2|o8b^wHbz3OXxw!Z@>Q?{D9f=V-gx>Qr*C$E`g#f?}^<D7IR8^WWY> zw`1oX`Ic|}wQg=-itf2^I|J{<PxWPruZG$<SK8W<l~T512xi{soy>B_m6>!*tD zIU1!9^lzC;Yo4rOQJ;nC`@0q*?01%0%)YVqcD~`IL)=?gCj0ol_`{_0q`YOH?51s( z8N286EY08XOR4(O$+IG{3k=wDgRdOCbc)}&&Sa<1$x|!dw=)*A1WQiN&D!&Gv!~gz zj{9QrW=gqv-(Npqlm271_`b1s)zjR>*zWiB?yjv1Bb@&Wh+VK>7-jMx?vDHJ>lfB> z&Cc9^esjFzZ@%+&qHnEje_LnlzrQ(uS?%=n{d|de*SGK$9~U$JS};p|(i^!iLh15v ztpc637bMDE`e3uFE&1UqOO|JXGV`3z$~=)|yzamF@D4dnsnF*__Y@Xn8wRk*wCiN7 z-5A+2?`Zw0$}4>BQxAAY7{thW$F*6tw}wYVtch{kI$>i+nu41|p~=Ft%B!!MDr;6O zRh#wVU`dPD_sgvebI%-kwxOdzT=>Hz?+B^vy)6Ygb)2Pzm!8SY>)9T6Y|{<bMQ0Y) ziJd-bw5Mr#<eE9ohjpapZVo*cIoTrm?VP(0=iK#_>pGLvTVH(Rjm$dH9^G>{t)A!X zwYXg%*IRptS6bHm$W7kd;*Qvz4!_(#n9Os$QtH4y?ZS?kYa+e>i*HYm{F|P)z<!Eg z&hi=W6i(e0`961t{BDEJyA>kUFaGUq*&zPBfIn`*5A_yq<}LAk&K5c`R?g;aj2n~O zy^@Yf2C2sEk_r8<I3cT^YhI7m%zs-i$t(@7dz$&=LR3qnYcaQ_{yk^8+`Y#toh^$6 zOE+gMp6oltdUMA7&go84ViRAg9QpgezawqZ`~nrDX{*Bp${#WAnfN6s*J(nW>t>&_ z{heiuR<erkl3jh}1kwc*Ioi$7C!IFc*!ba@Wsa>)|L(S<MYm<Pg{Ot-*RQ<LZWXj( zN@RA7=$$jGKA#Br;e34RPZ7bJldgWgVdx{bW4HM|tM0j9ZkNh=$)C?vTCi1R^*)X5 z6JNCjZ=L3}u|uWRGtBm^?~{mYib`Li-lmzax6tU>#Ix9=@^J9^hYxR@@F=eMGHcPQ z<S&cYvu$VFe(B7#);T73Vj~Y9x4G6HQ~z4k=Rm>x?YqA>*X;lFX~*-T4HZ8v{C3ox zn&9ZzSG`)f_WV1C=sk^_lHRu}O%m=AesZ5@T9BOaBeUmWhW>|LW{U(JI&nzkrjQ#S z|E1X0E89*aHZEdb<g%P!|9ZpTyk%`kg_;gWqcWY(O>SJc=!gK<qGqE@p5iYV6ho~& z*4BB{Z&U9uSNix$WbG=JXH&X=%Din_)TdFsGGp5tJ`<L8i<T)GT&@y5cx~p@=K<2) z!A9pjma^oj=?JtnWxnF!pQ!IQnKgZb5Pz_dt<#s|Hg!3guPy~$S$gzpYxw1s19dq^ zX1~-?nB?R5bv4In3)wZQ>x^CV)mH5Ov{vonk$0TCd~*ye4wTmKT^j!5X<>i+?5<rV zJ9l|hbUu^+s28h+%(<JJrDatsU%GLv7YyRoyv4o(rBJUv5_QDpPRj4mcdk<B*Q z8(0`cHowiE3hMba7si9A$3?Dej3SfeE=o?mQmZ&QxpD)e$YznMWz38slkZ-X+<c|> zCP?qPhA5C;&ejc}4y4Rwu<FfU+Ev&=oyh)wAkmKy(a8yO*(Tdx5!;+MX&p$b>{Nb` zVF#~BZg!jT7-Xl`tluCBwYl#=l<0zB5S6*e5~S?FHOb9;mO2PAifsP7ori-_WHZ+R zWoAZ^&3cC~gY+^Ty~K#rg5&>xI9!B*fk9~U^J5lCP@gk!Ko6E-KmrmB3=B!7nK>!C zMXAZDnFS?!1x5J<sYNB3sm0pfx?1PXod2wS*4ImSlj&7s28IA{c8=E{O{Iky7#IW@ zKzv3f5eAWo3q)NxkxYd!eO*Hwbv^yu^aH%Xs^Af013TG<fq?<!Oo(z2Ir+qKStgKq zl9Nubfh=K|!N9<fUz83rW8wnQ$$BTaq(F-IK&8@)5>s+gkyP-5b%K<D@pDj@ogM0k z$&*hgvM?}6F;1SSEIQebQ3@_mz$VE9Ru3jJ*uV<v**T33A%~<u4S@UN+PPg0(o75t zJ}e9jCSW}<!kZncS5XIDlkh8FQ}`(?F!f-12Pae$2QP|!lRumUIe4}NOnUNX2{8<F z;Tzp}7#NJf=D~<=NwCJ-k_vF2Za4)pu}fj{L}ls8A5KZCgJJ=iIJ)4Q3>X-+U}k`6 zKjq02m382TB%cNu(ya$JeeP)yCI*qoo55nG`e3noJ$?*lqAbV)n+hW&%%Pgt(Yzmc z24qi_H(0vYiwEw2d0+`OKd^+|S>DNRz7lXrma`yTMgdSs31ly#4Clb?2h%;_VD<CE zWGAmb%L?+*Hn2G}W5D7c&dMX31Meq^FfeF<^}~oM@lf^blY`C)BkO^eNem1O$}r_% z`c1~<59z8f4@_Jjs=*HyhY{YHkc<FL?a4WruoOReV+L}{t;(ESc-{i!c$;iwan_v4 zh36$F=VYtEESdZ^UvjeU1r8PlhHV9tFSg4}RwxjMOBP=M1))z7SmI3vKV0GzSYk~v zSc3baAjm4Yiy+0HDkooTSLQ>_Fq2Eba(Amha+Ce45IOEHSfZs4ETMWy9AuE)C6Gbo zjbO1C4bpI1SAZohwSpx+T+#w5mbna4+}ttQ@v;ku-wx(K>IbVie^~(}_7N=haMEPQ zS(=mWuSkQ$WT#4U!@`w;;o0PdEA}AagI7SteVYMR%70Z1B&L29B=&jMWXD;iaJO`T z1>et|>^Mt*@|~-qAcdd7V)qt+?e<?FIJx06I0Xe?0~uhn7%V>fnlec30kBxkvdI_Q zmC%y=-|do<b+3b><k*hMiU*V?M_=a#Y00<_GUoDu$%+T`;O@{njO>r^lb>C80;$!y z0aAPV=w$yJ4#<fQUM(;%FvuhP&%nSi@A%|5#}s2=r4_8EKrZS*H3dS?`{TIljR0>} THjqjq1|x=eK?Vko6CfS{QM_1| diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6b3851a..f4d7b2b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index af6708f..b0d6d0a 100755 --- a/gradlew +++ b/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" diff --git a/gradlew.bat b/gradlew.bat index 6d57edc..15e1ee3 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,100 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/de/thro/inf/prg3/a12/App.java b/src/main/java/ohm/softa/a12/App.java similarity index 94% rename from src/main/java/de/thro/inf/prg3/a12/App.java rename to src/main/java/ohm/softa/a12/App.java index 2e4bf87..4c8c3de 100644 --- a/src/main/java/de/thro/inf/prg3/a12/App.java +++ b/src/main/java/ohm/softa/a12/App.java @@ -1,8 +1,8 @@ -package de.thro.inf.prg3.a12; +package ohm.softa.a12; -import de.thro.inf.prg3.a12.icndb.JokeGenerator; -import de.thro.inf.prg3.a12.model.JokeDto; -import de.thro.inf.prg3.a12.model.ResponseWrapper; +import ohm.softa.a12.icndb.JokeGenerator; +import ohm.softa.a12.model.JokeDto; +import ohm.softa.a12.model.ResponseWrapper; import java.util.Scanner; import java.util.stream.Stream; diff --git a/src/main/java/de/thro/inf/prg3/a12/icndb/ICNDBApi.java b/src/main/java/ohm/softa/a12/icndb/ICNDBApi.java similarity index 91% rename from src/main/java/de/thro/inf/prg3/a12/icndb/ICNDBApi.java rename to src/main/java/ohm/softa/a12/icndb/ICNDBApi.java index 900d808..aaf257f 100644 --- a/src/main/java/de/thro/inf/prg3/a12/icndb/ICNDBApi.java +++ b/src/main/java/ohm/softa/a12/icndb/ICNDBApi.java @@ -1,7 +1,7 @@ -package de.thro.inf.prg3.a12.icndb; +package ohm.softa.a12.icndb; -import de.thro.inf.prg3.a12.model.JokeDto; -import de.thro.inf.prg3.a12.model.ResponseWrapper; +import ohm.softa.a12.model.JokeDto; +import ohm.softa.a12.model.ResponseWrapper; import retrofit2.http.GET; import retrofit2.http.Path; import retrofit2.http.Query; diff --git a/src/main/java/de/thro/inf/prg3/a12/icndb/ICNDBService.java b/src/main/java/ohm/softa/a12/icndb/ICNDBService.java similarity index 93% rename from src/main/java/de/thro/inf/prg3/a12/icndb/ICNDBService.java rename to src/main/java/ohm/softa/a12/icndb/ICNDBService.java index 16d0ca5..81d0ecf 100644 --- a/src/main/java/de/thro/inf/prg3/a12/icndb/ICNDBService.java +++ b/src/main/java/ohm/softa/a12/icndb/ICNDBService.java @@ -1,7 +1,7 @@ -package de.thro.inf.prg3.a12.icndb; +package ohm.softa.a12.icndb; -import de.thro.inf.prg3.a12.model.JokeDto; -import de.thro.inf.prg3.a12.model.ResponseWrapper; +import ohm.softa.a12.model.JokeDto; +import ohm.softa.a12.model.ResponseWrapper; import retrofit2.Retrofit; import retrofit2.adapter.java8.Java8CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; diff --git a/src/main/java/de/thro/inf/prg3/a12/icndb/JokeGenerator.java b/src/main/java/ohm/softa/a12/icndb/JokeGenerator.java similarity index 87% rename from src/main/java/de/thro/inf/prg3/a12/icndb/JokeGenerator.java rename to src/main/java/ohm/softa/a12/icndb/JokeGenerator.java index 761737c..f216d74 100644 --- a/src/main/java/de/thro/inf/prg3/a12/icndb/JokeGenerator.java +++ b/src/main/java/ohm/softa/a12/icndb/JokeGenerator.java @@ -1,7 +1,7 @@ -package de.thro.inf.prg3.a12.icndb; +package ohm.softa.a12.icndb; -import de.thro.inf.prg3.a12.model.JokeDto; -import de.thro.inf.prg3.a12.model.ResponseWrapper; +import ohm.softa.a12.model.JokeDto; +import ohm.softa.a12.model.ResponseWrapper; import org.apache.commons.lang3.NotImplementedException; import java.util.stream.Stream; diff --git a/src/main/java/de/thro/inf/prg3/a12/icndb/suppliers/AllJokesSupplier.java b/src/main/java/ohm/softa/a12/icndb/suppliers/AllJokesSupplier.java similarity index 81% rename from src/main/java/de/thro/inf/prg3/a12/icndb/suppliers/AllJokesSupplier.java rename to src/main/java/ohm/softa/a12/icndb/suppliers/AllJokesSupplier.java index 60603f2..d6ab302 100644 --- a/src/main/java/de/thro/inf/prg3/a12/icndb/suppliers/AllJokesSupplier.java +++ b/src/main/java/ohm/softa/a12/icndb/suppliers/AllJokesSupplier.java @@ -1,9 +1,9 @@ -package de.thro.inf.prg3.a12.icndb.suppliers; +package ohm.softa.a12.icndb.suppliers; -import de.thro.inf.prg3.a12.icndb.ICNDBApi; -import de.thro.inf.prg3.a12.icndb.ICNDBService; -import de.thro.inf.prg3.a12.model.JokeDto; -import de.thro.inf.prg3.a12.model.ResponseWrapper; +import ohm.softa.a12.icndb.ICNDBApi; +import ohm.softa.a12.icndb.ICNDBService; +import ohm.softa.a12.model.JokeDto; +import ohm.softa.a12.model.ResponseWrapper; import org.apache.commons.lang3.NotImplementedException; /** diff --git a/src/main/java/de/thro/inf/prg3/a12/icndb/suppliers/RandomJokeSupplier.java b/src/main/java/ohm/softa/a12/icndb/suppliers/RandomJokeSupplier.java similarity index 69% rename from src/main/java/de/thro/inf/prg3/a12/icndb/suppliers/RandomJokeSupplier.java rename to src/main/java/ohm/softa/a12/icndb/suppliers/RandomJokeSupplier.java index 7b01958..f1ea9b5 100644 --- a/src/main/java/de/thro/inf/prg3/a12/icndb/suppliers/RandomJokeSupplier.java +++ b/src/main/java/ohm/softa/a12/icndb/suppliers/RandomJokeSupplier.java @@ -1,9 +1,9 @@ -package de.thro.inf.prg3.a12.icndb.suppliers; +package ohm.softa.a12.icndb.suppliers; -import de.thro.inf.prg3.a12.icndb.ICNDBApi; -import de.thro.inf.prg3.a12.icndb.ICNDBService; -import de.thro.inf.prg3.a12.model.JokeDto; -import de.thro.inf.prg3.a12.model.ResponseWrapper; +import ohm.softa.a12.icndb.ICNDBApi; +import ohm.softa.a12.icndb.ICNDBService; +import ohm.softa.a12.model.JokeDto; +import ohm.softa.a12.model.ResponseWrapper; import org.apache.commons.lang3.NotImplementedException; /** diff --git a/src/main/java/de/thro/inf/prg3/a12/model/JokeDto.java b/src/main/java/ohm/softa/a12/model/JokeDto.java similarity index 98% rename from src/main/java/de/thro/inf/prg3/a12/model/JokeDto.java rename to src/main/java/ohm/softa/a12/model/JokeDto.java index 132a77d..f0b16da 100644 --- a/src/main/java/de/thro/inf/prg3/a12/model/JokeDto.java +++ b/src/main/java/ohm/softa/a12/model/JokeDto.java @@ -1,4 +1,4 @@ -package de.thro.inf.prg3.a12.model; +package ohm.softa.a12.model; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; diff --git a/src/main/java/de/thro/inf/prg3/a12/model/ResponseWrapper.java b/src/main/java/ohm/softa/a12/model/ResponseWrapper.java similarity index 97% rename from src/main/java/de/thro/inf/prg3/a12/model/ResponseWrapper.java rename to src/main/java/ohm/softa/a12/model/ResponseWrapper.java index f57baec..edb43a1 100644 --- a/src/main/java/de/thro/inf/prg3/a12/model/ResponseWrapper.java +++ b/src/main/java/ohm/softa/a12/model/ResponseWrapper.java @@ -1,4 +1,4 @@ -package de.thro.inf.prg3.a12.model; +package ohm.softa.a12.model; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; diff --git a/src/test/java/de/thro/inf/prg3/a12/icndb/ICNDBTests.java b/src/test/java/ohm/softa/a12/icndb/ICNDBTests.java similarity index 98% rename from src/test/java/de/thro/inf/prg3/a12/icndb/ICNDBTests.java rename to src/test/java/ohm/softa/a12/icndb/ICNDBTests.java index a8d7f07..b0ef582 100644 --- a/src/test/java/de/thro/inf/prg3/a12/icndb/ICNDBTests.java +++ b/src/test/java/ohm/softa/a12/icndb/ICNDBTests.java @@ -1,4 +1,4 @@ -package de.thro.inf.prg3.a12.icndb; +package ohm.softa.a12.icndb; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/thro/inf/prg3/a12/icndb/JokesGeneratorTests.java b/src/test/java/ohm/softa/a12/icndb/JokesGeneratorTests.java similarity index 92% rename from src/test/java/de/thro/inf/prg3/a12/icndb/JokesGeneratorTests.java rename to src/test/java/ohm/softa/a12/icndb/JokesGeneratorTests.java index 20c9761..27c0956 100644 --- a/src/test/java/de/thro/inf/prg3/a12/icndb/JokesGeneratorTests.java +++ b/src/test/java/ohm/softa/a12/icndb/JokesGeneratorTests.java @@ -1,4 +1,4 @@ -package de.thro.inf.prg3.a12.icndb; +package ohm.softa.a12.icndb; import org.junit.jupiter.api.Test; -- GitLab