Google App Engine Go Standard Edition Second generation

3cb4e761dbdb7aebd1ffd85f752e1e3e?s=47 sonata
November 25, 2018

Google App Engine Go Standard Edition Second generation

3cb4e761dbdb7aebd1ffd85f752e1e3e?s=128

sonata

November 25, 2018
Tweet

Transcript

  1. 1 (PPHMF"QQ&OHJOF(P 4UBOEBSE&EJUJPO4FDPOEHFOFSBUJPO !TPOBUBSE (P$PO"VUVNO

  2. Server Side Engineer ͦͳͨ @sonatard 2006 - • Linux Server

    and Network Engineer 2010 - • Develop Wireless LAN Module Simulator with SystemC • Develop TCP/IP protocol stack on RTOS 2014 - • Go in my free time Command-line utility for searching Github repository. https://github.com/sonatard/ghs LDAP authentication library https://github.com/sonatard/go-ldapc 2017 - • Google App Engine Go Engineer
  3. 3 ͸͡Ίʹ

  4. • ͸͡Ίʹ • App Engineͷ঺հɺ1st-genͷ੍໿ɺ2nd-genͷొ৔ • 2nd-gen΁ͷҠߦ • App Engine΁ͷσϓϩΠํ๏

    • AppEngineͱGKE
  5. 5 ͸͡Ίʹ w OEHFOʹมΘΔ͜ͱͰϢʔεέʔεͱͯ͠ͲͷΑ͏ͳӨڹ͕͋Δͷ͔Λ঺հ͠·͢ɻ

  6. 6 ࣭໰ w "QQ&OHJOF࢖͍ͬͯͳ͍͚Ͳɺ࢖ͬͯΈΑ͏͔ͳͱ͍͏ਓʁ

  7. • ͸͡Ίʹ • App Engineͷ঺հɺ1st-genͷ੍໿ɺ2nd-genͷొ৔ • 2nd-gen΁ͷҠߦ • App Engine΁ͷσϓϩΠํ๏

    • AppEngineͱGKE
  8. 8 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOͷಛ௃ w αʔόαΠυΞϓϦέʔγϣϯͷίʔσΟϯάʹूதͰ͖Δ w ΦʔτεέʔϧϦιʔε؅ཧ͕ෆཁ w εϐϯΞοϓ͕ૣ͍εύΠΫରࡦෆཁ w ඪ४Ͱ#MVF(SFFO%FQMPZNFOU

    w 04΍ϛυϧ΢ΣΞͷߋ৽؅ཧ͕ෆཁར༻͍ͯ͠Διϑτ΢ΣΞͷ੬ऑੑରࡦ͕ෆཁ w ଟ͘ͷϚωʔδυͳΫϥ΢υαʔϏε͕ར༻Մೳ w %BUBTUPSF w 6TFST"1* ೝূ  w *NBHF"1* w .BJM"1* w 4FBSDI"1* w .FNDBDIF w $SPO w UBTLRVFVF
  9. 9 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOͷۙ೥ͷಈ͖ w "QQ&OHJOF w (PPHMF࠷ॳͷΫϥ΢υαʔϏε w ($1Ҏલ͔Βଘࡏ w ݱࡏͰ͸"QQ&OHJOFҎ֎ʹ΋ଟ͘ͷ࣮ߦ؀ڥ͕ଘࡏ

    w ($& w "QQ&OHJOF'MFY&OWJSPONFOU w (,& w ,OBUJWF 4FSWFSMFTTBEEPOGPS(PPHMF,VCFSOFUFT&OHJOF  w $MPVE'VODUJPOT w ଞͷ࣮ߦ؀ڥ͔Β΋ར༻Ͱ͖ΔΑ͏ʹ"QQ&OHJOFґଘػೳΛ($1ʹ੾Γग़͢ಈ͖͕͋Δ w "QQ&OHJOFDSPO$MPVE4DIFEVMFS w "QQ&OHJOFUBTLRVFVF$MPVE5BTLT
  10. 10 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPO΁ͷґଘͷ௿ݮ w ·ͨ"QQ&OHJOFࣗ਎΋"QQ&OHJOF΁ͷґଘ͕ݮΒͦ͏ͱ͍ͯ͠Δ w "QQ&OHJOFࣗ਎͕ґଘΛݮΒ͢தͰɺ"QQ&OHJOFͷ࣮ߦ؀ڥʹ՝୊͕͋ͬͨ w ଞͷίϯςφͱΧʔωϧΛڞ༗͍ͯ͠Δ౎߹Ͱ৴པͰ͖ͳ͍γεςϜίʔϧΛ࣮ߦ͞Ε ΔڪΕ͕͋ΔͨΊɺ௚઀γεςϜίʔϧΛ࣮ߦ͢Δ͜ͱ͸Ͱ͖ͳ͔ͬͨ w

    8FCΞϓϦέʔγϣϯΛఏڙ͢Δ্Ͱ࠷௿ݶඞཁͳ΋ͷ͸ɺBQQFOHJOFQBDLBHFͷఏڙ ͱඪ४ϥΠϒϥϦΛ"QQ&OHJOFઐ༻ͷύονΛ౰ͯΔ͜ͱͰରԠ͍ͯͨ͠
  11. 11 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFOͷొ৔ w H7JTPSʹΑΓɺίϯςφ͝ͱʹϦιʔε͕෼ׂ͞Εͨ w ଞͷίϯςφʹର͢Δഁյతૢ࡞͕Ͱ͖ͳ͘ͳͬͨ w γεςϜίʔϧΛࣗ༝ʹୟ͚ΔΑ͏ʹ w H7JTPS͕࣮૷͍ͯ͠ΔγεςϜίʔϧݶఆ

  12. 12 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFOʹΑΔ੍໿ͷղফ w ඪ४ग़ྗ͕4UBDLESJWFSʹදࣔ͞Εͳ͍͞ΕΔ w JOJU࣌ͷQBOJDͷελοΫτϨʔε͕4UBDLESJWFSʹදࣔ͞Εͳ͍͞ΕΔ w ඪ४ͷ)551ΫϥΠΞϯτ͕࢖͑ͳ͍OFUIUUQΛ࢖͑Δ w ඪ४ͷ4PDLFU௨৴͕Ͱ͖ͳ͍Ͱ͖Δ

    w VOTBGFQBDLBHF͕࢖͑ͳ͍࢖͑Δ w ඪ४ͷDPOUFYUQBDLBHF͕࢖͑ͳ͍࢖͑Δ w ϑΝΠϧγεςϜ͕࢖͑ͳ͍XSJUF͸UNQͷΈ͕ͩͰ͖Δ w 04ఏڙͷίϚϯυͷ࣮ߦ͕Ͱ͖ͳ͍Ͱ͖Δ w $MPVE4QBOOFS͕࢖͑ͳ͍࢖͑Δ w (0."9130$4 w ΑΓҰൠతͳ࣮ߦ؀ڥʹੜ·ΕมΘͬͨ w "QQ&OHJOFͷίʔυ͕௨ৗͷΦϯϓϨͰಈ͘Α͏ʹ ͳΓͭͭ͋Δ
  13. 13 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO੍ݶղফʹΑΓՄೳʹͳͬͨ͜ͱ w TUHFOͰ͸ઈରʹͰ͖ͳ͔ͬͨ͜ͱ͕OEHFOͰ͸࠾༻Ͱ͖ΔΑ͏ʹͳͬͨ w ֎෦ͷίϚϯυΛμ΢ϯϩʔυ͓͍ͯͯ͠ɺͦͷόΠφϦΛ࣮ߦ͢Δ͜ͱ͕Մೳ w FYFD$PNNBOE w JOJU࣌ʹXHFUͰUNQμ΢ϯϩʔυUBSYWGͰίϚϯυΛ഑ஔ

    w ϦΫΤετ͝ͱʹͦͷίϚϯυΛ࣮ߦ w όΠφϦ͕)551ϦΫΤετΛ౤͛ΔΑ͏ͳ΋ͷ΋໰୊ͳ͍ DVSMIUUQTTBNQMFEPUQSPKFDUJEBQQTQPUDPNDNE HPMBOHHP5IF(PQSPHSBNNJOHMBOHVBHF GVODJOJU \  PVU FSSFYFD$PNNBOE XHFU lIUUQTBBBHITUBSH[z 0 UNQHITUBSH[ $PNCJOFE0VUQVU  PVU FSSFYFD$PNNBOE UBS YWG UNQHITUBSH[ $ lUNQ $PNCJOFE0VUQVU  ^ GVOD$NE)BOEMF XIUUQ3FTQPOTF8SJUFS S IUUQ3FRVFTU \  PVU FSSFYFD$PNNBOE lUNQHIT HPMBOHHP N $PNCJOFE0VUQVU   GNU'QSJOUG X W TUSJOH PVU  ^
  14. 14 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO੍ݶղফʹΑΓՄೳʹͳͬͨ͜ͱ w 4UBDLESJWFS1SPpMFS w ൒೥લͷ(P$POͷEFFFFU͞ΜͷൃදΛݟͯ

  15. 15 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO੍ݶղফʹΑΓՄೳʹͳͬͨ͜ͱ w 4UBDLESJWFS1SPpMFS w ൒೥લͷ(P$POͷEFFFFU͞ΜͷൃදΛݟͯ

  16. 16 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO੍ݶղফʹΑΓՄೳʹͳͬͨ͜ͱ w 4UBDLESJWFS1SPpMFS w ൒೥લͷ(P$POͷEFFFFU͞ΜͷൃදΛݟͯ

  17. 17 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO੍ݶղফʹΑΓՄೳʹͳͬͨ͜ͱ w 4UBDLESJWFS1SPpMFS͕ར༻Մೳʹʂʂ w ݱࡏαϙʔτ͸͞Ε͍ͯͳ͍ GVODJOJU \  QSPKFDU*%PT(FUFOW

    (00(-&@$-06%@130+&$5  JGFSSQSPpMFS4UBSU QSPpMFS$POpH\  %FCVH-PHHJOHGBMTF   1SPKFDU*%QSPKFDU*%  ^ FSSOJM\  QBOJD FSS  ^ ^
  18. 18 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFOͷ੍໿ w OEHFO͸(PҎ߱ͷΈ w TUHFO͸ w ͱ͸EFQSFDBUFEͰɺ݄࣌఺ͰσϓϩΠͰ͖ͳ͘ͳ͍ͬͯΔ w (31$͕࢖͑ͳ͍)551ͷΈ

    w 8FC4PDLFU͕࢖͑ͳ͍
  19. 19 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFOͷ੍໿ w "QQ&OHJOF"1*ͷҠߦઌ͕($1ʹͳ͍໰୊ w .BJM"1*4FOE(SJE w 4FBSDI"1*&MBTUJDL4FBSDIPO($& w 6TFST"1*

    ೝূ 'JSFCBTF"VUI (PPHMF4JHO*O 0QFO"1* w কདྷతʹ͸$MPVE*"1ʁ w .FNDBDIF3FEJT-BCT.FNDBDIFE$MPVE w কདྷతʹ͸$MPVENFNPSZTUPSFʁ w ݱࡏɺ7JSUVBM1SJWBUF$MPVEʢ71$ ʹ"QQ&OHJOF͸઀ଓͰ͖ͳ͍ɻ
  20. • ͸͡Ίʹ • App Engineͷ঺հɺ1st-genͷ੍໿ɺ2nd-genͷొ৔ • 2nd-gen΁ͷҠߦ • App Engine΁ͷσϓϩΠํ๏

    • AppEngineͱGKE
  21. 21 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO΁ͷҠߦ w ࠷௿ݶͷίʔυมߋͰOEHFO (P Λར༻͢Δ w BQQFOHJOFQBDLBHF΁ͷґଘΛՄೳͳݶΓݮΒ͢

  22. 22 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO΁ͷҠߦ w ࠷௿ݶͷίʔυมߋͰOEHFO (P Λར༻͢Δ w NBJOϝιουΛఆٛ͢Δ w NBJOϝιουͷ࠷ޙͰBQQFOHJOF.BJOϝιουΛ࣮ߦ͢Δ

    w HDMPVEίϚϯυͰσϓϩΠ͢Δɻ
  23. 23 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOOEHFO΁ͷҠߦ w BQQFOHJOFQBDLBHF΁ͷґଘΛՄೳͳݶΓݮΒ͢ w 63-'FUDIΛOFUIUUQͷ)551ΫϥΠΞϯτʹҠߦ w BQQFOHJOFͷUBTLRVFVFΛDMPVEUBTLTύοέʔδʹҠߦ w "QQ&OHJOFͷDSPOΛ$MPVE4DIFEVMFSʹҠߦ

    w ͦͷଞҠߦઌ͕ͳ͍"QQ&OHJOF"1*΋Ͳ͏ʹ͔͢Δ w ࣮ߦ؀ڥͷ৘ใΛऔಘΛBQQFOHJOFQBDLBHF͔Βʹ؀ڥม਺ʹҠߦ w BQQFOHJOFQBDLBHFͷJNQPSU͕ͳ͘ͳͬͨΒɺ׬શʹґଘΛഉআՄೳ w ΦϯϓϨ΍(,&Ͱ΋ಈ͘ w σόοά͕༰қʹී௨ʹϩʔΧϧͰىಈ͢Ε͹Α͍ɻ w ͱ͸͍͑EBUBTUPSF΍$MPVE5BTLTΛར༻͠Α͏ͱࢥ͏ͱΤϛϡϨʔλ͸ඞཁͳͷ Ͱ͋·ΓมΘΒͳ͍
  24. 24 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOपลٕज़ͷ"QQ&OHJOF͔Β($1΁ͷҠߦ w λεΫΩϡʔ w "QQ&OHJOFUBTLRVFVF$MPVE5BTLT w ҰԠαʔϏεతʹ͸෼཭͕ͨ͠ɺݱࡏ͸"QQ&OHJOFͷؔ਺͔࣮͠ߦͰ͖ͳ͍ɻ w ͍ͣΕ͸$MPVE'VODUJPOT΍(,&ͷؔ਺͕࣮ߦͰ͖Δະདྷ͕͘Δʁ

    w IUUQTDMPVEHPPHMFDPNUBTLTEPDTNJHSBUJOH IMFO w ఆظ࣮ߦ w "QQ&OHJOFDSPO$MPVE4DIFEVMFS w $MPVE1VC4VC΍)551Λ༻͍࣮ͯߦ͢Δ͜ͱ͕Ͱ͖Δɻ w $MPVE'VODUJPOTʹ΋ར༻Մೳ
  25. 25 (PPHMF"QQ&OHJOF4UBOEBSE&EJUJPOTUHFOͷࠓޙͷαϙʔτ w (Pͱ͸طʹEFQSFDBUFE w (P͸ w "QQ&OHJOFpSTUHFOFSBUJPOSVOUJNFTVQQPSU w 5IFSFBSFOPQMBOTUPEFQSFDBUFUIF"QQ&OHJOFpSTUHFOFSBUJPOSVOUJNFTBU

    UIJTUJNF w 5IFTFDPOEHFOFSBUJPOSVOUJNFTSFQSFTFOUUIFGVUVSFEJSFDUJPOPG"QQ&OHJOF IPXFWFS EFWFMPQFSTBOEDVTUPNFSTVTJOHUIFpSTUHFOFSBUJPOSVOUJNFTXJMM DPOUJOVFUPSFDFJWFTVQQPSUBOEGFBUVSFVQEBUFT
  26. • ͸͡Ίʹ • App Engineͷ঺հɺ1st-genͷ੍໿ɺ2nd-genͷొ৔ • 2nd-gen΁ͷҠߦ • App Engine΁ͷσϓϩΠํ๏

    • AppEngineͱGKE
  27. 27 "QQ&OHJOF΁ͷσϓϩΠํ๏ w ͭͷσϓϩΠํ๏ w BQQDGHQZVQEBUF w HBBQQEFQMPZ w HDMPVEBQQEFQMPZ

    w ࠓޙ͸HDMPVEίϚϯυͷΈαϙʔτ͞ΕΔ༧ఆɻ
  28. 28 BQQDGHEFQMPZ HPBQQ ͔ΒHDMPVEEFQMPZ΁ͷҠߦ w TUHFOͰ͸ɺHDMPVEίϚϯυͰEFQMPZͰ͖ͳ͍όά͕͋Δ w WFOEPSσΟϨΫτϦҎԼʹJOUFSOBMύοέʔδ͕͋ΔͱΤϥʔ w BQQDGHPSHPBQQΛ࢖͏PSWFOEPSҎԼͷ΋ͷΛ(01"5)ҎԼʹҠಈ͢Δ

    w OEHFOͰ͸ɺHDMPVEίϚϯυ͔͠αϙʔτ͍ͯ͠ͳ͍ɻ w ্هόά͸ղফ͍ͯ͠Δɻ w HDMPVEίϚϯυʹҠߦ͢ΔͱσϓϩΠ͕࣌ؒ৳ͼΔ w ݪҼͦ΋ͦ΋HDMPVEίϚϯυ͕஗͍ ̍αʔϏεTFD͘Β͍஗͍ w ݪҼϑΝΠϧΞοϓϩʔυͷ࢓༷͕ҟͳΔ w BQQDGH͸BQQZBNMͱಉ͡σΟϨΫτϦҎԼͷϑΝΠϧΛ͢΂ͯΞοϓϩʔυ͢Δɻ w HDMPVE͸σϓϩΠ͢Δ(PύοέʔδҎԼͷϑΝΠϧΛ͢΂ͯΞοϓϩʔυ͢Δɻ w HDMPVEJHOPSFΛਖ਼͘͠ઃఆ͠ͳ͍ͱ༨ܭͳϑΝΠϧ͕Ξοϓϩʔυ͞ΕΔɻ w HDMPVEίϚϯυͷ࢓༷ w HPNPEରԠ
  29. • ͸͡Ίʹ • App Engineͷ঺հɺ1st-genͷ੍໿ɺ2nd-genͷొ৔ • 2nd-gen΁ͷҠߦ • App Engine΁ͷσϓϩΠํ๏

    • AppEngineͱGKE
  30. 30 "QQ&OHJOFͱ(,& ؅ཧͷ༰қ͞ ࣗ༝౓ "QQ&OHJOFTU ॳظ(,&

  31. 31 "QQ&OHJOFͱ(,& ؅ཧͷ༰қ͞ ࣗ༝౓ "QQ&OHJOFTU "QQ&OHJOFOE ॳظ(,& ݱࡏͷ(,&  पลαʔϏε

  32. 32 "QQ&OHJOFͱ(,& ؅ཧͷ༰қ͞ ࣗ༝౓ "QQ&OHJOFTU "QQ&OHJOFOE ॳظ(,& ݱࡏͷ(,&  पลαʔϏε

  33. 33 "QQ&OHJOFͱ(,& ؅ཧͷ༰қ͞ ࣗ༝౓ "QQ&OHJOFTU "QQ&OHJOFOE ॳظ(,& ݱࡏͷ(,&  पลαʔϏε

    "QQ&OHJOF OFYU (,& OFYU
  34. 34 "QQ&OHJOFOEHFOBOE(,& w "QQ&OHJOF͸੍໿͸ݮ͍ͬͯ͘͜ͱ͕૝ఆ͞ΕΔ͕ɺڪΒ͘͸ࠓޙ΋มΘΒͳ੍͍໿͕ ͋Δɻ w ϓϩηεͷৗற w ػցֶशج൫ͷߏங w

    ωοτϫʔΫΛίϯτϩʔϧͰ͖ͳ͍ w ιʔε*1ΞυϨεͷݻఆ w ղܾͦ͠͏ͳ՝୊΋ଘࡏ͢Δ (PPHMFͷ։ൃঢ়گʹґଘ  w (31$ w 8FC4PDLFU
  35. 35 Ϣʔεέʔε w "QQ&OHJOF w ։ൃऀ͕গͳ͍ελʔτΞοϓͰૣظʹ8FCαʔϏεΛ্ཱͪ͛Δͷʹ޲͍͍ͯΔɻ w Πϯϑϥ୲౰ऀ͕ෆཁͳͨΊগͳ͍ਓ਺ͰίʔσΟϯάʹઐ೦Ͱ͖Δɻ w ੍໿Λड͚ೖΕΔඞཁ͕͋Δ

    w ར༻Ͱ͖ͳ͍ػೳ w ݴޠత੍໿ w +BWBɺ1)1ɺ/PEFKT w ·ͨ(PҎ֎͸εϐϯΞοϓ͕͞΄Ͳૣ͘ͳ͍ͨΊར఺͕མͪΔɻ w (,& w ࣾ಺ʹ43&νʔϜ͕ଘࡏͯ͠ɺϓϩμΫτͷՁ஋Λ࠷େԽ͍ͨ͠اۀʹ޲͍͍ͯΔɻ w 8FCαʔϏεʹݶఆ͞Εͳ͍ɻ w ٕज़త੍໿ʹ೰·͞ΕΔ͜ͱ͕গͳ͍ɻ w εΩϧͷߴ͍43&΍ΠϯϑϥͷΤϯδχΞͷ࠾༻ʹ΋ܨ͕Δɻ
  36. • ͸͡Ίʹ • App Engineͷ঺հɺ1st-genͷ੍໿ɺ2nd-genͷొ৔ • 2nd-gen΁ͷҠߦ • App Engine΁ͷσϓϩΠํ๏

    • AppEngineͱGKE
  37. 37 ຊ౰ʹ࢖͍͍ͨͷ͸(31$ w ࢖͍͍ͨͷ͸*%- *OUFSGBDF%FTDSJQUJPO-BOHVBHF  w ΋ͦ͠͏ͳΒͦΕ͸(31$Ͱ͸ͳ͘1SPUPDPM#V⒎FST w QSPUPDHFOHPIUUQ

    w (FOFSBUFl1SPUPDPM#V⒎FST31$PO)551z$PEF*OTUFBEPG+40/31$ w IUUQTOBNFUBLFHJUIVCJPQPTUTQSPUPDHFOHPIUUQ w 4VQQPSUPOMZ1045NFUIPE w 8BJUUPTVQQPSUPQUJPO HPPHMFBQJIUUQ 1VMM3FRVFTU w 4VQQPSU1SPUPDPM#V⒎FSTBOE+40/ w 1PTTJCMFUPVTF1SPUPDPM#V⒎FST31$PO)551PO"QQ&OHJOF w SFqFDUWFSTJPO w $VSSFOUMZOPU0QFO4PVSDF w 4VQQPSU1045#PEZ 1045'PSN7BMVF (&52VFSZ4USJOH
  38. 38 $**NBHF w %PDLFS*NBHFGPSUIF(PPHMF"QQ&OHJOF(PFOWJSPONFOUTFDPOEHFOFSBUJPO w IUUQTHJUIVCDPNHDQVHEPDLFSBQQFOHJOFHP

  39. • ͸͡Ίʹ • App Engineͷ঺հɺ1st-genͷ੍໿ɺ2nd-genͷొ৔ • 2nd-gen΁ͷҠߦ • App Engine΁ͷσϓϩΠํ๏

    • AppEngineͱGKE
  40. 40 3FGFSFODF w "QQ&OHJOF(P w IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTTUBOEBSEBQQFOHJOFHFOFSBUJPO w IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTTUBOEBSEHPHPEJ⒎FSFODFT w "QQ&OHJOFOPMPOHFSNPEJpFTUIF(PUPPMDIBJOUPJODMVEFUIFBQQFOHJOFQBDLBHF8FTUSPOHMZSFDPNNFOEVTJOHUIF(PPHMF$MPVEDMJFOUMJCSBSZPSUIJSE

    QBSUZMJCSBSJFTJOTUFBEPGUIF"QQ&OHJOFTQFDJpD"1*T'PSNPSFJOGPSNBUJPO TFF.JHSBUJOHGSPNUIF"QQ&OHJOF(P4%, w IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTTUBOEBSEHPSVOUJNF w IUUQTHJUIVCDPNHPMBOHBQQFOHJOFCMPCNBTUFSJOUFSOBMJEFOUJUZ@WNHP w ೝূͷҠߦઌ w IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTTUBOEBSEHPBVUIFOUJDBUJOHVTFST w ΠϯετʔϧࡁΈύοέʔδ w IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTTUBOEBSEHPSFGFSFODFTZTUFNQBDLBHFT w H7JTSP w IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOEUSY[@LT3Z)EKD"(7,JZHUYR"&9C[-SB#%FEJUTMJEFJEQ w IUUQTHJUIVCDPNHPPHMFHWJTPS w ͱ͸EFQSFDBUFE w IUUQTHSPVQTHPPHMFDPNGPSVNUPQJDHPPHMFBQQFOHJOFHPFP1/PNEBL w αϯϓϧίʔυ w IUUQTHJUIVCDPN(PPHMF$MPVE1MBUGPSNHPMBOHTBNQMFT w $MPVEUBTLT w IUUQTDMPVEHPPHMFDPNUBTLTEPDTNJHSBUJOH IMFO w IUUQTHJUIVCDPN(PPHMF$MPVE1MBUGPSNHPPHMFDMPVEHPUSFFNBTUFSDMPVEUBTLTBQJWCFUB w $MPVOE'VODUJPOTBMQIB w IUUQTUXJUUFSDPNCSPBEZTUBUVT w (PPHMF"QQ&OHJOFੈ୅ަ୅ w IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOEUSY[@LT3Z)EKD"(7,JZHUYR"&9C[-SB#%FEJUTMJEFJEQ w 4UBDLESJWFS1SPpMFS w IUUQTDMPVEHPPHMFDPNQSPpMFSEPDTQSPpMJOHHP