diff --git a/challenges/01-responsive-web-design/css-grid.json b/challenges/01-responsive-web-design/css-grid.json index 5c34328a1..95fcfa4cd 100644 --- a/challenges/01-responsive-web-design/css-grid.json +++ b/challenges/01-responsive-web-design/css-grid.json @@ -15,13 +15,11 @@ ], "tests": [ { - "text": - "container class should have a display property with a value of grid.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*display\\s*?:\\s*?grid\\s*?;[\\s\\S]*}/gi), 'container class should have a display property with a value of grid.');" + "text": "container class should have a display property with a value of grid.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?display\\s*?:\\s*?grid\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a display property with a value of grid.');" } ], - "solutions": ["var code = \".container {display: grid;}\""], + "solutions": ["var code = \".container {/**/display: grid;/**/}\""], "hints": [], "releasedOn": "Feb 15, 2018", "challengeType": 0, @@ -76,14 +74,12 @@ ], "tests": [ { - "text": - "container class should have a grid-template-columns property with three units of 100px.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?100px\\s*?100px\\s*?100px\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-template-columns property with three units of 100px.');" + "text": "container class should have a grid-template-columns property with three units of 100px.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-columns\\s*?:\\s*?100px\\s*?100px\\s*?100px\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-template-columns property with three units of 100px.');" } ], "solutions": [ - "var code = \".container {grid-template-columns: 100px 100px 100px;}\"" + "var code = \".container {/**/grid-template-columns: 100px 100px 100px;/**/}\"" ], "hints": [], "releasedOn": "Feb 15, 2018", @@ -137,14 +133,12 @@ ], "tests": [ { - "text": - "container class should have a grid-template-rows property with two units of 50px.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-rows\\s*?:\\s*?50px\\s*?50px\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-template-rows property with two units of 50px.');" + "text": "container class should have a grid-template-rows property with two units of 50px.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-rows\\s*?:\\s*?50px\\s*?50px\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-template-rows property with two units of 50px.');" } ], "solutions": [ - "var code = \".container {grid-template-rows: 50px 50px;}\"" + "var code = \".container {/**/grid-template-rows: 50px 50px;/**/}\"" ], "hints": [], "releasedOn": "", @@ -205,14 +199,12 @@ ], "tests": [ { - "text": - "container class should have a grid-template-columns property that has three columns with the following widths: 1fr, 100px, and 2fr.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?1fr\\s*?100px\\s*?2fr\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-template-columns property that has three columns with the following widths: 1fr, 100px, and 2fr.');" + "text": "container class should have a grid-template-columns property that has three columns with the following widths: 1fr, 100px, and 2fr.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-columns\\s*?:\\s*?1fr\\s*?100px\\s*?2fr\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-template-columns property that has three columns with the following widths: 1fr, 100px, and 2fr.');" } ], "solutions": [ - "var code = \".container {grid-template-columns: 1fr 100px 2fr;}\"" + "var code = \".container {/**/grid-template-columns: 1fr 100px 2fr;/**/}\"" ], "hints": [], "releasedOn": "", @@ -270,13 +262,11 @@ ], "tests": [ { - "text": - "container class should have a grid-column-gap property that has the value of 20px.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-column-gap\\s*?:\\s*?20px\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-column-gap property that has the value of 20px.');" + "text": "container class should have a grid-column-gap property that has the value of 20px.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-column-gap\\s*?:\\s*?20px\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-column-gap property that has the value of 20px.');" } ], - "solutions": ["var code = \".container {grid-column-gap: 20px;}\""], + "solutions": ["var code = \".container {/**/grid-column-gap: 20px;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -332,13 +322,11 @@ ], "tests": [ { - "text": - "container class should have a grid-row-gap property that has the value of 5px.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-row-gap\\s*?:\\s*?5px\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-row-gap property that has the value of 5px.');" + "text": "container class should have a grid-row-gap property that has the value of 5px.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-row-gap\\s*?:\\s*?5px\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-row-gap property that has the value of 5px.');" } ], - "solutions": ["var code = \".container {grid-row-gap: 5px;}\""], + "solutions": ["var code = \".container {/**/grid-row-gap: 5px;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -394,13 +382,11 @@ ], "tests": [ { - "text": - "container class should have a grid-gap property that introduces 10px gap between the rows and 20px gap between the columns.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-gap\\s*?:\\s*?10px\\s*?20px\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-gap property that introduces 10px gap between the rows and 20px gap between the columns.');" + "text": "container class should have a grid-gap property that introduces 10px gap between the rows and 20px gap between the columns.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-gap\\s*?:\\s*?10px\\s*?20px\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-gap property that introduces 10px gap between the rows and 20px gap between the columns.');" } ], - "solutions": ["var code = \".container {grid-gap: 10px 20px;}\""], + "solutions": ["var code = \".container {/**/grid-gap: 10px 20px;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -462,13 +448,11 @@ ], "tests": [ { - "text": - "item5 class should have a grid-column property that has the value of 2 / 4.", - "testString": - "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-column\\s*?:\\s*?2\\s*?\\/\\s*?4\\s*?;[\\s\\S]*}/gi), 'item5 class should have a grid-column property that has the value of 2 / 4.');" + "text": "item5 class should have a grid-column property that has the value of 2 / 4.", + "testString": "assert(code.match(/.item5\\s*?{[\\s\\S]*\\/\\s*?grid-column\\s*?:\\s*?2\\s*?\\/\\s*?4\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'item5 class should have a grid-column property that has the value of 2 / 4.');" } ], - "solutions": ["var code = \".item5 {grid-column: 2 / 4;}\""], + "solutions": ["var code = \".item5 {/**/grid-column: 2 / 4;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -528,13 +512,11 @@ ], "tests": [ { - "text": - "item5 class should have a grid-row property that has the value of 2 / 4.", - "testString": - "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-row\\s*?:\\s*?2\\s*?\\/\\s*?4\\s*?;[\\s\\S]*}/gi), 'item5 class should have a grid-row property that has the value of 2 / 4.');" + "text": "item5 class should have a grid-row property that has the value of 2 / 4.", + "testString": "assert(code.match(/.item5\\s*?{[\\s\\S]*\\/\\s*?grid-row\\s*?:\\s*?2\\s*?\\/\\s*?4\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'item5 class should have a grid-row property that has the value of 2 / 4.');" } ], - "solutions": ["var code = \".item5 {grid-row: 2 / 4;}\""], + "solutions": ["var code = \".item5 {/**/grid-row: 2 / 4;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -598,13 +580,11 @@ ], "tests": [ { - "text": - "item2 class should have a justify-self property that has the value of center.", - "testString": - "assert(code.match(/.item2\\s*?{[\\s\\S]*justify-self\\s*?:\\s*?center\\s*?;[\\s\\S]*}/gi), 'item2 class should have a justify-self property that has the value of center.');" + "text": "item2 class should have a justify-self property that has the value of center.", + "testString": "assert(code.match(/.item2\\s*?{[\\s\\S]*\\/\\s*?justify-self\\s*?:\\s*?center\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'item2 class should have a justify-self property that has the value of center.');" } ], - "solutions": ["var code = \".item2 {justify-self: center;}\""], + "solutions": ["var code = \".item2 {/**/justify-self: center;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -665,13 +645,11 @@ ], "tests": [ { - "text": - "item3 class should have a align-self property that has the value of end.", - "testString": - "assert(code.match(/.item3\\s*?{[\\s\\S]*align-self\\s*?:\\s*?end\\s*?;[\\s\\S]*}/gi), 'item3 class should have a align-self property that has the value of end.');" + "text": "item3 class should have a align-self property that has the value of end.", + "testString": "assert(code.match(/.item3\\s*?{[\\s\\S]*\\/\\s*?align-self\\s*?:\\s*?end\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'item3 class should have a align-self property that has the value of end.');" } ], - "solutions": ["var code = \".item3 {align-self: end;}\""], + "solutions": ["var code = \".item3 {/**/align-self: end;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -732,13 +710,11 @@ ], "tests": [ { - "text": - "container class should have a justify-items property that has the value of center.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*justify-items\\s*?:\\s*?center\\s*?;[\\s\\S]*}/gi), 'container class should have a justify-items property that has the value of center.');" + "text": "container class should have a justify-items property that has the value of center.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?justify-items\\s*?:\\s*?center\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a justify-items property that has the value of center.');" } ], - "solutions": ["var code = \".container {justify-items: center;}\""], + "solutions": ["var code = \".container {/**/justify-items: center;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -795,13 +771,11 @@ ], "tests": [ { - "text": - "container class should have a align-items property that has the value of end.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*align-items\\s*?:\\s*?end\\s*?;[\\s\\S]*}/gi), 'container class should have a align-items property that has the value of end.');" + "text": "container class should have a align-items property that has the value of end.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?align-items\\s*?:\\s*?end\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a align-items property that has the value of end.');" } ], - "solutions": ["var code = \".container {align-items: end;}\""], + "solutions": ["var code = \".container {/**/align-items: end;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -862,14 +836,12 @@ ], "tests": [ { - "text": - "container class should have a grid-template-areas property similar to the preview but has . instead of the advert area.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-areas\\s*?:\\s*?\"\\s*?header\\s*?header\\s*?header\\s*?\"\\s*?\"\\s*?.\\s*?content\\s*?content\\s*?\"\\s*?\"\\s*?footer\\s*?footer\\s*?footer\\s*?\"\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-template-areas propertiy similar to the preview but has . instead of the advert area.');" + "text": "container class should have a grid-template-areas property similar to the preview but has . instead of the advert area.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-areas\\s*?:\\s*?\"\\s*?header\\s*?header\\s*?header\\s*?\"\\s*?\"\\s*?.\\s*?content\\s*?content\\s*?\"\\s*?\"\\s*?footer\\s*?footer\\s*?footer\\s*?\"\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-template-areas propertiy similar to the preview but has . instead of the advert area.');" } ], "solutions": [ - "var code = \".container {grid-template-areas: \\\"header header header\\\" \\\". content content\\\" \\\"footer footer footer\\\";}\"" + "var code = \".container {/**/grid-template-areas: \\\"header header header\\\" \\\". content content\\\" \\\"footer footer footer\\\";/**/}\"" ], "hints": [], "releasedOn": "", @@ -932,13 +904,11 @@ ], "tests": [ { - "text": - "item5 class should have a grid-area property that has the value of footer.", - "testString": - "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-area\\s*?:\\s*?footer\\s*?;[\\s\\S]*}/gi), 'item5 class should have a grid-area property that has the value of footer.');" + "text": "item5 class should have a grid-area property that has the value of footer.", + "testString": "assert(code.match(/.item5\\s*?{[\\s\\S]*\\/\\s*?grid-area\\s*?:\\s*?footer\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'item5 class should have a grid-area property that has the value of footer.');" } ], - "solutions": ["var code = \".item5 {grid-area: footer;}\""], + "solutions": ["var code = \".item5 {/**/grid-area: footer;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -1006,13 +976,11 @@ ], "tests": [ { - "text": - "item5 class should have a grid-area property that has the value of 3/1/4/4.", - "testString": - "assert(code.match(/.item5\\s*?{[\\s\\S]*grid-area\\s*?:\\s*?3\\s*?\\/\\s*?1\\s*?\\/\\s*?4\\s*?\\/\\s*?4\\s*?;[\\s\\S]*}/gi), 'item5 class should have a grid-area property that has the value of 3/1/4/4.');" + "text": "item5 class should have a grid-area property that has the value of 3/1/4/4.", + "testString": "assert(code.match(/.item5\\s*?{[\\s\\S]*\\/\\s*?grid-area\\s*?:\\s*?3\\s*?\\/\\s*?1\\s*?\\/\\s*?4\\s*?\\/\\s*?4\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'item5 class should have a grid-area property that has the value of 3/1/4/4.');" } ], - "solutions": ["var code = \".item5 {grid-area: 3/1/4/4;}\""], + "solutions": ["var code = \".item5 {/**/grid-area: 3/1/4/4;/**/}\""], "hints": [], "releasedOn": "", "challengeType": 0, @@ -1080,14 +1048,12 @@ ], "tests": [ { - "text": - "container class should have a grid-template-columns property that is set to repeat 3 columns with the width of 1fr.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?3\\s*?,\\s*?1fr\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-template-columns property that is set to repeat 3 columns with the width of 1fr.');" + "text": "container class should have a grid-template-columns property that is set to repeat 3 columns with the width of 1fr.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?3\\s*?,\\s*?1fr\\s*?\\)\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-template-columns property that is set to repeat 3 columns with the width of 1fr.');" } ], "solutions": [ - "var code = \".container {grid-template-columns: repeat(3, 1fr);}\"" + "var code = \".container {/**/grid-template-columns: repeat(3, 1fr);/**/}\"" ], "hints": [], "releasedOn": "", @@ -1147,14 +1113,12 @@ ], "tests": [ { - "text": - "container class should have a grid-template-columns property that is set to repeat 3 columns with the minimum width of 90px and maximum width of 1fr.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?3\\s*?,\\s*?minmax\\s*?\\(\\s*?90px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-template-columns property that is set to repeat 3 columns with the minimum width of 90px and maximum width of 1fr.');" + "text": "container class should have a grid-template-columns property that is set to repeat 3 columns with the minimum width of 90px and maximum width of 1fr.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?3\\s*?,\\s*?minmax\\s*?\\(\\s*?90px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-template-columns property that is set to repeat 3 columns with the minimum width of 90px and maximum width of 1fr.');" } ], "solutions": [ - "var code = \".container {grid-template-columns: repeat(3, minmax(90px, 1fr));}\"" + "var code = \".container {/**/grid-template-columns: repeat(3, minmax(90px, 1fr));/**/}\"" ], "hints": [], "releasedOn": "", @@ -1216,14 +1180,12 @@ ], "tests": [ { - "text": - "container class should have a grid-template-columns property with repeat and auto-fill that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?auto-fill\\s*?,\\s*?minmax\\s*?\\(\\s*?60px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'container class should have a grid-template-columns property with repeat and auto-fill that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.');" + "text": "container class should have a grid-template-columns property with repeat and auto-fill that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?auto-fill\\s*?,\\s*?minmax\\s*?\\(\\s*?60px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container class should have a grid-template-columns property with repeat and auto-fill that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.');" } ], "solutions": [ - "var code = \".container {grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));}\"" + "var code = \".container {/**/grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));/**/}\"" ], "hints": [], "releasedOn": "", @@ -1299,14 +1261,12 @@ ], "tests": [ { - "text": - "container2 class should have a grid-template-columns property with repeat and auto-fit that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.", - "testString": - "assert(code.match(/.container\\s*?{[\\s\\S]*grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?auto-fit\\s*?,\\s*?minmax\\s*?\\(\\s*?60px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;[\\s\\S]*}/gi), 'container2 class should have a grid-template-columns property with repeat and auto-fit that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.');" + "text": "container2 class should have a grid-template-columns property with repeat and auto-fit that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.", + "testString": "assert(code.match(/.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-columns\\s*?:\\s*?repeat\\s*?\\(\\s*?auto-fit\\s*?,\\s*?minmax\\s*?\\(\\s*?60px\\s*?,\\s*?1fr\\s*?\\)\\s*?\\)\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'container2 class should have a grid-template-columns property with repeat and auto-fit that will fill the grid with columns that have a minimum width of 60px and maximum of 1fr.');" } ], "solutions": [ - "var code = \".container {grid-template-columns: repeat( auto-fill, minmax(60px, 1fr));} .container2 {grid-template-columns: repeat(auto-fit, minmax(60px, 1fr));}\"" + "var code = \".container {grid-template-columns: repeat( auto-fill, minmax(60px, 1fr));} .container2 {/**/grid-template-columns: repeat(auto-fit, minmax(60px, 1fr));/**/}\"" ], "hints": [], "releasedOn": "", @@ -1383,14 +1343,12 @@ ], "tests": [ { - "text": - "When the viewport is 400px or more, container class should have a grid-template-areas property in which the footer and header areas occupy the top and bottom rows respectively and advert and content occupy the left and right columns of the middle row.", - "testString": - "assert(code.match(/@media\\s*?\\(\\s*?min-width\\s*?:\\s*?400px\\s*?\\)[\\s\\S]*.container\\s*?{[\\s\\S]*grid-template-areas\\s*?:\\s*?\"\\s*?header\\s*?header\\s*?\"\\s*?\"\\s*?advert\\s*?content\\s*?\"\\s*?\"\\s*?footer\\s*?footer\\s*?\"\\s*?;[\\s\\S]*}/gi), 'When the viewport is 400px or more, container class should have a grid-template-areas property in which the footer and header areas occupy the top and bottom rows respectively and advert and content occupy the left and right columns of the middle row.');" + "text": "When the viewport is 400px or more, container class should have a grid-template-areas property in which the footer and header areas occupy the top and bottom rows respectively and advert and content occupy the left and right columns of the middle row.", + "testString": "assert(code.match(/@media\\s*?\\(\\s*?min-width\\s*?:\\s*?400px\\s*?\\)[\\s\\S]*.container\\s*?{[\\s\\S]*\\/\\s*?grid-template-areas\\s*?:\\s*?\"\\s*?header\\s*?header\\s*?\"\\s*?\"\\s*?advert\\s*?content\\s*?\"\\s*?\"\\s*?footer\\s*?footer\\s*?\"\\s*?;\\s*?\\/[\\s\\S]*}/gi), 'When the viewport is 400px or more, container class should have a grid-template-areas property in which the footer and header areas occupy the top and bottom rows respectively and advert and content occupy the left and right columns of the middle row.');" } ], "solutions": [ - "var code = \"@media (min-width: 400px){.container{ grid-template-areas: \\\"header header\\\" \\\"advert content\\\" \\\"footer footer\\\";}}\"" + "var code = \"@media (min-width: 400px){.container{ /**/grid-template-areas: \\\"header header\\\" \\\"advert content\\\" \\\"footer footer\\\";/**/}}\"" ], "hints": [], "releasedOn": "",