{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,24]],"date-time":"2025-08-24T01:37:29Z","timestamp":1755999449052,"version":"3.40.3"},"publisher-location":"Cham","reference-count":38,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030994600"},{"type":"electronic","value":"9783030994617"}],"license":[{"start":{"date-parts":[[2022,1,1]],"date-time":"2022-01-01T00:00:00Z","timestamp":1640995200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2022,1,1]],"date-time":"2022-01-01T00:00:00Z","timestamp":1640995200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2022]]},"DOI":"10.1007\/978-3-030-99461-7_7","type":"book-chapter","created":{"date-parts":[[2022,5,2]],"date-time":"2022-05-02T23:02:40Z","timestamp":1651532560000},"page":"112-132","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Zipping Strategies and Attribute Grammars"],"prefix":"10.1007","author":[{"given":"Jos\u00e9 Nuno","family":"Macedo","sequence":"first","affiliation":[]},{"given":"Marcos","family":"Viera","sequence":"additional","affiliation":[]},{"given":"Jo\u00e3o","family":"Saraiva","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2022,5,3]]},"reference":[{"key":"7_CR1","doi-asserted-by":"publisher","unstructured":"Adams, M.D.: Scrap your zippers: a generic zipper for heterogeneous types. In: WGP 2010: Proceedings of the 2010 ACM SIGPLAN Workshop on Generic Programming, pp. 13\u201324. ACM, New York (2010). https:\/\/doi.org\/10.1145\/1863495.1863499","DOI":"10.1145\/1863495.1863499"},{"key":"7_CR2","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"48","DOI":"10.1007\/3-540-54572-7_3","volume-title":"Attribute Grammars, Applications and Systems","author":"H Alblas","year":"1991","unstructured":"Alblas, H.: Attribute evaluation methods. In: Alblas, H., Melichar, B. (eds.) SAGA School 1991. LNCS, vol. 545, pp. 48\u2013113. Springer, Heidelberg (1991). https:\/\/doi.org\/10.1007\/3-540-54572-7_3"},{"key":"7_CR3","doi-asserted-by":"publisher","unstructured":"Almeida, J.B., Cunha, A., Macedo, N., Pacheco, H., Proen\u00e7a, J.: Teaching how to program using automated assessment and functional glossy games (experience report). Proc. ACM Program. Lang. 2(ICFP) (2018). https:\/\/doi.org\/10.1145\/3236777","DOI":"10.1145\/3236777"},{"key":"7_CR4","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"36","DOI":"10.1007\/978-3-540-73449-9_5","volume-title":"Term Rewriting and Applications","author":"E Balland","year":"2007","unstructured":"Balland, E., Brauner, P., Kopetz, R., Moreau, P.-E., Reilles, A.: Tom: piggybacking rewriting on Java. In: Baader, F. (ed.) RTA 2007. LNCS, vol. 4533, pp. 36\u201347. Springer, Heidelberg (2007). https:\/\/doi.org\/10.1007\/978-3-540-73449-9_5"},{"key":"7_CR5","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"365","DOI":"10.1007\/3-540-45306-7_26","volume-title":"Compiler Construction","author":"MGJ van den Brand","year":"2001","unstructured":"van den Brand, M.G.J., et al.: The Asf+Sdf meta-environment: a component-based language development environment. In: Wilhelm, R. (ed.) CC 2001. LNCS, vol. 2027, pp. 365\u2013370. Springer, Heidelberg (2001). https:\/\/doi.org\/10.1007\/3-540-45306-7_26"},{"key":"7_CR6","doi-asserted-by":"publisher","first-page":"3","DOI":"10.1016\/j.entcs.2004.11.006","volume":"110","author":"JR Cordy","year":"2004","unstructured":"Cordy, J.R.: TXL - a language for programming language tools and applications. Electron. Notes Theor. Comput. Sci. 110, 3\u201331 (2004). https:\/\/doi.org\/10.1016\/j.entcs.2004.11.006","journal-title":"Electron. Notes Theor. Comput. Sci."},{"key":"7_CR7","unstructured":"Cowie, J.: Detecting bad smells in haskell. Technical report, University of Kent, UK (2005)"},{"key":"7_CR8","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/11546382_1","volume-title":"Advanced Functional Programming","author":"A Dijkstra","year":"2005","unstructured":"Dijkstra, A., Swierstra, S.D.: Typing haskell with an attribute grammar. In: Vene, V., Uustalu, T. (eds.) AFP 2004. LNCS, vol. 3622, pp. 1\u201372. Springer, Heidelberg (2005). https:\/\/doi.org\/10.1007\/11546382_1"},{"key":"7_CR9","doi-asserted-by":"crossref","unstructured":"Ekman, T., Hedin, G.: The JastAdd extensible Java compiler. SIGPLAN Not. 42(10), 1\u201318 (2007). http:\/\/doi.acm.org\/10.1145\/1297105.1297029","DOI":"10.1145\/1297105.1297029"},{"key":"7_CR10","doi-asserted-by":"publisher","first-page":"71","DOI":"10.1016\/j.scico.2018.10.006","volume":"173","author":"JP Fernandes","year":"2019","unstructured":"Fernandes, J.P., Martins, P., Pardo, A., Saraiva, J., Viera, M.: Memoized zipper-based attribute grammars and their higher order extension. Sci. Comput. Program. 173, 71\u201394 (2019). https:\/\/doi.org\/10.1016\/j.scico.2018.10.006","journal-title":"Sci. Comput. Program."},{"issue":"2","key":"7_CR11","doi-asserted-by":"publisher","first-page":"121","DOI":"10.1145\/129630.129637","volume":"35","author":"RW Gray","year":"1992","unstructured":"Gray, R.W., Levi, S.P., Heuring, V.P., Sloane, A.M., Waite, W.M.: Eli: a complete, flexible compiler construction system. Commun. ACM 35(2), 121\u2013130 (1992). https:\/\/doi.org\/10.1145\/129630.129637","journal-title":"Commun. ACM"},{"issue":"5","key":"7_CR12","doi-asserted-by":"publisher","first-page":"549","DOI":"10.1017\/S0956796897002864","volume":"7","author":"G Huet","year":"1997","unstructured":"Huet, G.: The zipper. J. Funct. Program. 7(5), 549\u2013554 (1997)","journal-title":"J. Funct. Program."},{"key":"7_CR13","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"142","DOI":"10.1007\/978-3-642-00722-4_11","volume-title":"Compiler Construction","author":"LCL Kats","year":"2009","unstructured":"Kats, L.C.L., Sloane, A.M., Visser, E.: Decorated attribute grammars: attribute evaluation meets strategic programming. In: de Moor, O., Schwartzbach, M.I. (eds.) CC 2009. LNCS, vol. 5501, pp. 142\u2013157. Springer, Heidelberg (2009). https:\/\/doi.org\/10.1007\/978-3-642-00722-4_11"},{"issue":"2","key":"7_CR14","doi-asserted-by":"publisher","first-page":"127","DOI":"10.1007\/BF01692511","volume":"2","author":"DE Knuth","year":"1968","unstructured":"Knuth, D.E.: Semantics of context-free languages. Math. Syst. Theory 2(2), 127\u2013145 (1968)","journal-title":"Math. Syst. Theory"},{"key":"7_CR15","doi-asserted-by":"crossref","unstructured":"Kramer, L., Van Wyk, E.: Strategic tree rewriting in attribute grammars. In: Proceedings of the 13th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2020, pp. 210\u2013229. Association for Computing Machinery, New York (2020). https:\/\/doi.org\/10.1145\/3426425.3426943","DOI":"10.1145\/3426425.3426943"},{"key":"7_CR16","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"298","DOI":"10.1007\/BFb0026440","volume-title":"Compiler Construction","author":"M Kuiper","year":"1998","unstructured":"Kuiper, M., Saraiva, J.: Lrc - a generator for incremental language-oriented tools. In: Koskimies, K. (ed.) CC 1998. LNCS, vol. 1383, pp. 298\u2013301. Springer, Heidelberg (1998). https:\/\/doi.org\/10.1007\/BFb0026440"},{"key":"7_CR17","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"137","DOI":"10.1007\/3-540-45587-6_10","volume-title":"Practical Aspects of Declarative Languages","author":"R L\u00e4mmel","year":"2002","unstructured":"L\u00e4mmel, R., Visser, J.: Typed combinators for generic traversal. In: Krishnamurthi, S., Ramakrishnan, C.R. (eds.) PADL 2002. LNCS, vol. 2257, pp. 137\u2013154. Springer, Heidelberg (2002). https:\/\/doi.org\/10.1007\/3-540-45587-6_10"},{"key":"7_CR18","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"357","DOI":"10.1007\/3-540-36388-2_24","volume-title":"Practical Aspects of Declarative Languages","author":"R L\u00e4mmel","year":"2003","unstructured":"L\u00e4mmel, R., Visser, J.: A Strafunski application letter. In: Dahl, V., Wadler, P. (eds.) PADL 2003. LNCS, vol. 2562, pp. 357\u2013375. Springer, Heidelberg (2003). https:\/\/doi.org\/10.1007\/3-540-36388-2_24"},{"key":"7_CR19","doi-asserted-by":"crossref","unstructured":"Luttik, S.P., Visser, E.: Specification of rewriting strategies. In: Proceedings of the 2nd International Conference on Theory and Practice of Algebraic Specifications, Algebraic 1997, p. 9. BCS Learning & Development Ltd., Swindon (1997)","DOI":"10.14236\/ewic\/AL1997.9"},{"key":"7_CR20","unstructured":"Macedo, J.N., Viera, M., Saraiva, J.: The Ztrategic library (2022). https:\/\/bitbucket.org\/zenunomacedo\/ztrategic\/"},{"key":"7_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"135","DOI":"10.1007\/978-3-642-40922-6_10","volume-title":"Programming Languages","author":"P Martins","year":"2013","unstructured":"Martins, P., Fernandes, J.P., Saraiva, J.: Zipper-based attribute grammars and their extensions. In: Du Bois, A.R., Trinder, P. (eds.) SBLP 2013. LNCS, vol. 8129, pp. 135\u2013149. Springer, Heidelberg (2013). https:\/\/doi.org\/10.1007\/978-3-642-40922-6_10"},{"issue":"P1","key":"7_CR22","doi-asserted-by":"publisher","first-page":"2","DOI":"10.1016\/j.scico.2016.03.005","volume":"132","author":"P Martins","year":"2016","unstructured":"Martins, P., Fernandes, J.P., Saraiva, J., Van Wyk, E., Sloane, A.: Embedding attribute grammars and their extensions using functional zippers. Sci. Comput. Program. 132(P1), 2\u201328 (2016). https:\/\/doi.org\/10.1016\/j.scico.2016.03.005","journal-title":"Sci. Comput. Program."},{"issue":"4","key":"7_CR23","doi-asserted-by":"publisher","first-page":"71","DOI":"10.1145\/202176.202185","volume":"30","author":"M Mernik","year":"1995","unstructured":"Mernik, M., Korbar, N., \u017dumer, V.: LISA: a tool for automatic language implementation. SIGPLAN Not. 30(4), 71\u201379 (1995). https:\/\/doi.org\/10.1145\/202176.202185","journal-title":"SIGPLAN Not."},{"key":"7_CR24","doi-asserted-by":"publisher","unstructured":"Middelkoop, A., Dijkstra, A., Swierstra, S.D.: Iterative type inference with attribute grammars. In: Proceedings of the Ninth International Conference on Generative Programming and Component Engineering, GPCE 2010, pp. 43\u201352. Association for Computing Machinery, New York (2010). https:\/\/doi.org\/10.1145\/1868294.1868302","DOI":"10.1145\/1868294.1868302"},{"key":"7_CR25","unstructured":"de Moor, O., Backhouse, K., Swierstra, D.: First-class attribute grammars. Informatica (Slovenia) 24(3) (2000). citeseer.ist.psu.edu\/demoor00firstclass.html"},{"issue":"5","key":"7_CR26","doi-asserted-by":"publisher","first-page":"42","DOI":"10.1145\/390011.808247","volume":"19","author":"T Reps","year":"1984","unstructured":"Reps, T., Teitelbaum, T.: The synthesizer generator. SIGPLAN Not. 19(5), 42\u201348 (1984). https:\/\/doi.org\/10.1145\/390011.808247","journal-title":"SIGPLAN Not."},{"key":"7_CR27","unstructured":"Saraiva, J.: Purely functional implementation of attribute grammars. Ph.D. thesis, Utrecht University, The Netherlands, December 1999"},{"key":"7_CR28","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"268","DOI":"10.1007\/3-540-45821-2_17","volume-title":"Generative Programming and Component Engineering","author":"J Saraiva","year":"2002","unstructured":"Saraiva, J.: Component-based programming for higher-order attribute grammars. In: Batory, D., Consel, C., Taha, W. (eds.) GPCE 2002. LNCS, vol. 2487, pp. 268\u2013282. Springer, Heidelberg (2002). https:\/\/doi.org\/10.1007\/3-540-45821-2_17"},{"key":"7_CR29","doi-asserted-by":"crossref","unstructured":"Sheard, T., Jones, S.P.: Template meta-programming for haskell. In: Proceedings of the 2002 ACM SIGPLAN Workshop on Haskell, Haskell 2002, pp. 1\u201316. Association for Computing Machinery, New York (2002). https:\/\/doi.org\/10.1145\/581690.581691","DOI":"10.1145\/581690.581691"},{"issue":"7","key":"7_CR30","doi-asserted-by":"publisher","first-page":"205","DOI":"10.1016\/j.entcs.2010.08.043","volume":"253","author":"AM Sloane","year":"2010","unstructured":"Sloane, A.M., Kats, L.C.L., Visser, E.: A pure object-oriented embedding of attribute grammars. Electron. Notes Theor. Comput. Sci. 253(7), 205\u2013219 (2010). https:\/\/doi.org\/10.1016\/j.entcs.2010.08.043","journal-title":"Electron. Notes Theor. Comput. Sci."},{"key":"7_CR31","doi-asserted-by":"publisher","first-page":"20","DOI":"10.1016\/j.scico.2015.10.010","volume":"114","author":"AM Sloane","year":"2015","unstructured":"Sloane, A.M., Roberts, M.: Oberon-0 in kiama. Sci. Comput. Program. 114, 20\u201332 (2015). https:\/\/doi.org\/10.1016\/j.scico.2015.10.010. lDTA (Language Descriptions, Tools, and Applications) Tool Challenge","journal-title":"Sci. Comput. Program."},{"key":"7_CR32","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"191","DOI":"10.1007\/978-3-319-11245-9_11","volume-title":"Software Language Engineering","author":"AM Sloane","year":"2014","unstructured":"Sloane, A.M., Roberts, M., Hamey, L.G.C.: Respect your parents: how attribution and rewriting can get along. In: Combemale, B., Pearce, D.J., Barais, O., Vinju, J.J. (eds.) SLE 2014. LNCS, vol. 8706, pp. 191\u2013210. Springer, Cham (2014). https:\/\/doi.org\/10.1007\/978-3-319-11245-9_11"},{"key":"7_CR33","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"302","DOI":"10.1007\/978-3-319-02654-1_17","volume-title":"Software Language Engineering","author":"E S\u00f6derberg","year":"2013","unstructured":"S\u00f6derberg, E., Hedin, G.: Circular higher-order reference attribute grammars. In: Erwig, M., Paige, R.F., Van Wyk, E. (eds.) SLE 2013. LNCS, vol. 8225, pp. 302\u2013321. Springer, Cham (2013). https:\/\/doi.org\/10.1007\/978-3-319-02654-1_17"},{"key":"7_CR34","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"150","DOI":"10.1007\/10704973_4","volume-title":"Advanced Functional Programming","author":"SD Swierstra","year":"1999","unstructured":"Swierstra, S.D., Azero Alcocer, P.R., Saraiva, J.: Designing and implementing combinator languages. In: Swierstra, S.D., Oliveira, J.N., Henriques, P.R. (eds.) AFP 1998. LNCS, vol. 1608, pp. 150\u2013206. Springer, Heidelberg (1999). https:\/\/doi.org\/10.1007\/10704973_4"},{"key":"7_CR35","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1016\/j.scico.2015.10.015","volume":"114","author":"M van den Brand","year":"2015","unstructured":"van den Brand, M.: Introduction - the LDTA tool challenge. Sci. Comput. Program. 114, 1\u20136 (2015). https:\/\/doi.org\/10.1016\/j.scico.2015.10.015","journal-title":"Sci. Comput. Program."},{"issue":"2","key":"7_CR36","doi-asserted-by":"publisher","first-page":"103","DOI":"10.1016\/j.entcs.2008.03.047","volume":"203","author":"E Van Wyk","year":"2008","unstructured":"Van Wyk, E., Bodin, D., Gao, J., Krishnan, L.: Silver: an extensible attribute grammar system. Electron. Notes Theor. Comput. Sci. 203(2), 103\u2013116 (2008). https:\/\/doi.org\/10.1016\/j.entcs.2008.03.047","journal-title":"Electron. Notes Theor. Comput. Sci."},{"key":"7_CR37","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"357","DOI":"10.1007\/3-540-45127-7_27","volume-title":"Rewriting Techniques and Applications","author":"E Visser","year":"2001","unstructured":"Visser, E.: Stratego: a language for program transformation based on rewriting strategies system description of Stratego 0.5. In: Middeldorp, A. (ed.) RTA 2001. LNCS, vol. 2051, pp. 357\u2013361. Springer, Heidelberg (2001). https:\/\/doi.org\/10.1007\/3-540-45127-7_27"},{"issue":"5","key":"7_CR38","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/954652.1781176","volume":"12","author":"A van Wijngaarcien","year":"1977","unstructured":"van Wijngaarcien, A., et al.: Revised report on the algorithmic language Algol 68. SIGPLAN Not. 12(5), 1\u201370 (1977). https:\/\/doi.org\/10.1145\/954652.1781176","journal-title":"SIGPLAN Not."}],"container-title":["Lecture Notes in Computer Science","Functional and Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-99461-7_7","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,5,2]],"date-time":"2022-05-02T23:03:42Z","timestamp":1651532622000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-99461-7_7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022]]},"ISBN":["9783030994600","9783030994617"],"references-count":38,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-99461-7_7","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2022]]},"assertion":[{"value":"3 May 2022","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"FLOPS","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Symposium on Functional and Logic Programming","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Kyoto","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Japan","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2022","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"10 May 2022","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"12 May 2022","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"16","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"flops2022","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/conf.researchr.org\/home\/flops-2022","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Double-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"30","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"15","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"50% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"4","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}