CINXE.COM
OpenMW / openmw 路 GitLab
<!DOCTYPE html> <html class="gl-light ui-neutral with-top-bar with-header " lang="en"> <head prefix="og: http://ogp.me/ns#"> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"> <title>OpenMW / openmw 路 GitLab</title> <script nonce="5xJcd7AZh2MLhFMzJufh5w=="> //<![CDATA[ window.gon={};gon.features={"inlineBlame":false,"removeMonitorMetrics":true,"issueEmailParticipants":true,"editBranchRules":true,"pageSpecificStyles":false,"blobRepositoryVueHeaderApp":true,"blobOverflowMenu":false,"filterBlobPath":false,"directoryCodeDropdownUpdates":false,"ciPipelineStatusRealtime":false,"workItems":true,"workItemsBeta":false,"workItemsAlpha":false};gon.licensed_features={"fileLocks":true,"securityOrchestrationPolicies":true,"remoteDevelopment":true}; //]]> </script> <script nonce="5xJcd7AZh2MLhFMzJufh5w=="> //<![CDATA[ var gl = window.gl || {}; gl.startup_calls = {"/OpenMW/openmw/-/refs/master/logs_tree/?format=json\u0026offset=0\u0026ref_type=heads":{},"/OpenMW/openmw/-/blob/master/README.md?format=json\u0026viewer=rich":{}}; gl.startup_graphql_calls = [{"query":"query pathLastCommit($projectPath: ID!, $path: String, $ref: String!, $refType: RefType) {\n project(fullPath: $projectPath) {\n __typename\n id\n repository {\n __typename\n paginatedTree(path: $path, ref: $ref, refType: $refType) {\n __typename\n nodes {\n __typename\n lastCommit {\n __typename\n id\n sha\n title\n titleHtml\n descriptionHtml\n message\n webPath\n authoredDate\n authorName\n authorGravatar\n author {\n __typename\n id\n name\n avatarUrl\n webPath\n }\n signature {\n __typename\n ... on GpgSignature {\n gpgKeyPrimaryKeyid\n verificationStatus\n }\n ... on X509Signature {\n verificationStatus\n x509Certificate {\n id\n subject\n subjectKeyIdentifier\n x509Issuer {\n id\n subject\n subjectKeyIdentifier\n }\n }\n }\n ... on SshSignature {\n verificationStatus\n keyFingerprintSha256\n }\n }\n pipelines(ref: $ref, first: 1) {\n __typename\n edges {\n __typename\n node {\n __typename\n id\n detailedStatus {\n __typename\n id\n detailsPath\n icon\n text\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}\n","variables":{"projectPath":"OpenMW/openmw","ref":"master","path":""}}]; if (gl.startup_calls && window.fetch) { Object.keys(gl.startup_calls).forEach(apiCall => { gl.startup_calls[apiCall] = { fetchCall: fetch(apiCall, { // Emulate XHR for Rails AJAX request checks headers: { 'X-Requested-With': 'XMLHttpRequest' }, // fetch won鈥檛 send cookies in older browsers, unless you set the credentials init option. // We set to `same-origin` which is default value in modern browsers. // See https://github.com/whatwg/fetch/pull/585 for more information. credentials: 'same-origin' }) }; }); } if (gl.startup_graphql_calls && window.fetch) { const headers = {"X-CSRF-Token":"XHzqU36OV64tlFKKO7-AX4Z0-26eSTNjrx_TJKcMd3sNaT0JvFaFURBGqCETspcUPs8eo4OUPOPNe0tsRpZ-Yg","x-gitlab-feature-category":"groups_and_projects"}; const url = `https://gitlab.com/api/graphql` const opts = { method: "POST", headers: { "Content-Type": "application/json", ...headers, } }; gl.startup_graphql_calls = gl.startup_graphql_calls.map(call => ({ ...call, fetchCall: fetch(url, { ...opts, credentials: 'same-origin', body: JSON.stringify(call) }) })) } //]]> </script> <link href="https://gitlab.com/OpenMW/openmw" rel="canonical"> <link rel="stylesheet" href="/assets/application-17a33cd53bce9f37d7f651fe5a2c95859513f80736807934eb0fec9e641bc31d.css" /> <link rel="stylesheet" href="/assets/page_bundles/project-c979cd46017105b9bde03f4a30dd8e84ac39a0967c13eeda38a286ed67f1b137.css" /><link rel="stylesheet" href="/assets/page_bundles/tree-36265195585af5e9c554d953e140f9c837af2e2eecb061d3f93d2857768eb286.css" /><link rel="stylesheet" href="/assets/page_bundles/commit_description-1e2cba4dda3c7b30dd84924809020c569f1308dea51520fe1dd5d4ce31403195.css" /><link rel="stylesheet" href="/assets/page_bundles/projects-80846bc4bdd46036586f0a20fdc1d14b080c3cabfcebf1f71b5e1cb019f70b56.css" /><link rel="stylesheet" href="/assets/page_bundles/work_items-1c9d8179a929286388215db7bc9b9f90178180424c77aba8a2a8b02ab4b7bd07.css" /><link rel="stylesheet" href="/assets/page_bundles/notes_shared-34cdf26f7b6d52ee5189e66483a502bb6d1f65c8ae801675401aa1b833d1aaaf.css" /> <link rel="stylesheet" href="/assets/application_utilities-f77f86f78d4146d4c2c821bc481cee77b897df284886ad189d8dcb1234cb9651.css" /> <link rel="stylesheet" href="/assets/tailwind-342719837608d4e2128f338e4bb2494a509d8bd16f95caa14a25330537832579.css" /> <link rel="stylesheet" href="/assets/fonts-fae5d3f79948bd85f18b6513a025f863b19636e85b09a1492907eb4b1bb0557b.css" /> <link rel="stylesheet" href="/assets/highlight/themes/white-99cce4f4b362f6840d7134d4129668929fde49c4da11d6ebf17f99768adbd868.css" /> <script src="/assets/webpack/runtime.05aa23aa.bundle.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/main.cc8bc27e.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/tracker.bf3bdfe2.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/analytics.7a0423c6.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script nonce="5xJcd7AZh2MLhFMzJufh5w=="> //<![CDATA[ window.snowplowOptions = {"namespace":"gl","hostname":"snowplowprd.trx.gitlab.net","cookieDomain":".gitlab.com","appId":"gitlab","formTracking":true,"linkClickTracking":true} gl = window.gl || {}; gl.snowplowStandardContext = {"schema":"iglu:com.gitlab/gitlab_standard/jsonschema/1-1-1","data":{"environment":"production","source":"gitlab-rails","correlation_id":"01JQZE5KX8DJ2BFTXCK6QF89T7","plan":"opensource","extra":{},"user_id":null,"global_user_id":null,"is_gitlab_team_member":null,"namespace_id":2991993,"project_id":7107382,"feature_enabled_by_namespace_ids":null,"realm":"saas","instance_id":"ea8bf810-1d6f-4a6a-b4fd-93e8cbd8b57f","host_name":"gitlab-webservice-web-56956b754b-mrhpd","instance_version":"17.11.0","context_generated_at":"2025-04-04T03:40:33.022Z"}} gl.snowplowPseudonymizedPageUrl = "https://gitlab.com/namespace2991993/project7107382"; gl.maskedDefaultReferrerUrl = null; gl.ga4MeasurementId = 'G-ENFH3X7M5Y'; //]]> </script> <link rel="preload" href="/assets/application_utilities-7844decc020ce5472253adae1ee2b329cdb6ddd08043b91daa3c9ed5530f5142.css" as="style" type="text/css" nonce="gHJ4P3UL139+1EPUyUbylw=="> <link rel="preload" href="/assets/application-17a33cd53bce9f37d7f651fe5a2c95859513f80736807934eb0fec9e641bc31d.css" as="style" type="text/css" nonce="gHJ4P3UL139+1EPUyUbylw=="> <link rel="preload" href="/assets/highlight/themes/white-99cce4f4b362f6840d7134d4129668929fde49c4da11d6ebf17f99768adbd868.css" as="style" type="text/css" nonce="gHJ4P3UL139+1EPUyUbylw=="> <link crossorigin="" href="https://snowplowprd.trx.gitlab.net" rel="preconnect"> <link as="font" crossorigin="" href="/assets/gitlab-sans/GitLabSans-1e0a5107ea3bbd4be93e8ad2c503467e43166cd37e4293570b490e0812ede98b.woff2" rel="preload"> <link as="font" crossorigin="" href="/assets/gitlab-sans/GitLabSans-Italic-38eaf1a569a54ab28c58b92a4a8de3afb96b6ebc250cf372003a7b38151848cc.woff2" rel="preload"> <link as="font" crossorigin="" href="/assets/gitlab-mono/GitLabMono-08d2c5e8ff8fd3d2d6ec55bc7713380f8981c35f9d2df14e12b835464d6e8f23.woff2" rel="preload"> <link as="font" crossorigin="" href="/assets/gitlab-mono/GitLabMono-Italic-38e58d8df29485a20c550da1d0111e2c2169f6dcbcf894f2cd3afbdd97bcc588.woff2" rel="preload"> <link rel="preload" href="/assets/fonts-fae5d3f79948bd85f18b6513a025f863b19636e85b09a1492907eb4b1bb0557b.css" as="style" type="text/css" nonce="gHJ4P3UL139+1EPUyUbylw=="> <script src="/assets/webpack/sentry.15b0729a.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.groups.analytics.dashboards-pages.groups.harbor.repositories-pages.groups.iteration_ca-8504ae95.4cbd9a8d.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.groups.new-pages.import.gitlab_projects.new-pages.import.manifest.new-pages.projects.n-44c6c18e.223050bd.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.search.show-super_sidebar.1d84bc9b.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/super_sidebar.605b9aa9.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.projects-pages.projects.activity-pages.projects.alert_management.details-pages.project-bc0cba90.86311a85.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.groups.packages-pages.groups.registry.repositories-pages.groups.security.policies.edit-429ebfda.865cf8f7.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/17.e5c5f7a9.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/68.141f1b1e.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/101.51447f52.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/122.79808937.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.show-pages.projects.snippets.show-pages.projects.tre-c684fcf6.1c7b34a4.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.projects.blob.edit-pages.projects.blob.new-pages.projects.blob.show-pages.projects.sho-ec79e51c.2922e427.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.groups.show-pages.projects.blob.show-pages.projects.show-pages.projects.tree.show.0e19f90b.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.security.vulnerabilities.show-pages.projects.show-pa-5ff3b950.6a10e95f.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.show-pages.projects.tree.show.56921690.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/commons-pages.groups.show-pages.projects.home_panel-pages.projects.show.84723789.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <script src="/assets/webpack/pages.projects.show.da18a5d4.chunk.js" defer="defer" nonce="5xJcd7AZh2MLhFMzJufh5w=="></script> <meta content="object" property="og:type"> <meta content="GitLab" property="og:site_name"> <meta content="OpenMW / openmw 路 GitLab" property="og:title"> <meta content="OpenMW is an open-source open-world RPG game engine that supports playing Morrowind." property="og:description"> <meta content="https://gitlab.com/uploads/-/system/project/avatar/7107382/6727417.png" property="og:image"> <meta content="64" property="og:image:width"> <meta content="64" property="og:image:height"> <meta content="https://gitlab.com/OpenMW/openmw" property="og:url"> <meta content="summary" property="twitter:card"> <meta content="OpenMW / openmw 路 GitLab" property="twitter:title"> <meta content="OpenMW is an open-source open-world RPG game engine that supports playing Morrowind." property="twitter:description"> <meta content="https://gitlab.com/uploads/-/system/project/avatar/7107382/6727417.png" property="twitter:image"> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="C7AWWio35vZBu4EvFj5hxLUlT4rp2pFCcXh3NQhyE3RapcEA6O80CXxpe4Q-M3aPDZ6qR_QHnsITHO996egabQ" /> <meta name="csp-nonce" content="5xJcd7AZh2MLhFMzJufh5w==" /> <meta name="action-cable-url" content="/-/cable" /> <link href="/-/manifest.json" rel="manifest"> <link rel="icon" type="image/png" href="/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7c80d5b2b82aa5143ef.png" id="favicon" data-original-href="/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7c80d5b2b82aa5143ef.png" /> <link rel="apple-touch-icon" type="image/x-icon" href="/assets/apple-touch-icon-b049d4bc0dd9626f31db825d61880737befc7835982586d015bded10b4435460.png" /> <link href="/search/opensearch.xml" rel="search" title="Search GitLab" type="application/opensearchdescription+xml"> <link rel="alternate" type="application/atom+xml" title="openmw activity" href="/OpenMW/openmw.atom" /> <meta content="OpenMW is an open-source open-world RPG game engine that supports playing Morrowind." name="description"> <meta content="#ececef" name="theme-color"> </head> <body class="tab-width-8 gl-browser-ie gl-platform-windows" data-group="OpenMW" data-group-full-path="OpenMW" data-namespace-id="2991993" data-page="projects:show" data-page-type-id="openmw" data-project="openmw" data-project-full-path="OpenMW/openmw" data-project-id="7107382"> <div id="js-tooltips-container"></div> <script nonce="5xJcd7AZh2MLhFMzJufh5w=="> //<![CDATA[ gl = window.gl || {}; gl.client = {"isIe":true,"isWindows":true}; //]]> </script> <header class="header-logged-out" data-testid="navbar"> <a class="gl-sr-only gl-accessibility" href="#content-body">Skip to content</a> <div class="container-fluid"> <nav aria-label="Explore GitLab" class="header-logged-out-nav gl-flex gl-gap-3 gl-justify-between"> <div class="gl-flex gl-items-center gl-gap-1"> <span class="gl-sr-only">GitLab</span> <a title="Homepage" id="logo" class="header-logged-out-logo has-tooltip" aria-label="Homepage" data-track-label="main_navigation" data-track-action="click_gitlab_logo_link" data-track-property="navigation_top" href="/"><svg aria-hidden="true" role="img" class="tanuki-logo" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path class="tanuki-shape tanuki" d="m24.507 9.5-.034-.09L21.082.562a.896.896 0 0 0-1.694.091l-2.29 7.01H7.825L5.535.653a.898.898 0 0 0-1.694-.09L.451 9.411.416 9.5a6.297 6.297 0 0 0 2.09 7.278l.012.01.03.022 5.16 3.867 2.56 1.935 1.554 1.176a1.051 1.051 0 0 0 1.268 0l1.555-1.176 2.56-1.935 5.197-3.89.014-.01A6.297 6.297 0 0 0 24.507 9.5Z" fill="#E24329"/> <path class="tanuki-shape right-cheek" d="m24.507 9.5-.034-.09a11.44 11.44 0 0 0-4.56 2.051l-7.447 5.632 4.742 3.584 5.197-3.89.014-.01A6.297 6.297 0 0 0 24.507 9.5Z" fill="#FC6D26"/> <path class="tanuki-shape chin" d="m7.707 20.677 2.56 1.935 1.555 1.176a1.051 1.051 0 0 0 1.268 0l1.555-1.176 2.56-1.935-4.743-3.584-4.755 3.584Z" fill="#FCA326"/> <path class="tanuki-shape left-cheek" d="M5.01 11.461a11.43 11.43 0 0 0-4.56-2.05L.416 9.5a6.297 6.297 0 0 0 2.09 7.278l.012.01.03.022 5.16 3.867 4.745-3.584-7.444-5.632Z" fill="#FC6D26"/> </svg> </a></div> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-grow"> <li class="header-logged-out-nav-item header-logged-out-dropdown md:gl-hidden"> <button class="header-logged-out-toggle" data-toggle="dropdown" type="button"> <span class="gl-sr-only"> Menu </span> <svg class="s16" data-testid="hamburger-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#hamburger"></use></svg> </button> <div class="dropdown-menu"> <ul> <li> <a href="https://about.gitlab.com/why-gitlab">Why GitLab </a></li> <li> <a href="https://about.gitlab.com/pricing">Pricing </a></li> <li> <a href="https://about.gitlab.com/sales">Contact Sales </a></li> <li> <a href="/explore">Explore</a> </li> </ul> </div> </li> <li class="header-logged-out-nav-item gl-hidden md:gl-inline-block"> <a href="https://about.gitlab.com/why-gitlab">Why GitLab </a></li> <li class="header-logged-out-nav-item gl-hidden md:gl-inline-block"> <a href="https://about.gitlab.com/pricing">Pricing </a></li> <li class="header-logged-out-nav-item gl-hidden gl-inline-block"> <a href="https://about.gitlab.com/sales">Contact Sales </a></li> <li class="header-logged-out-nav-item gl-hidden md:gl-inline-block"> <a class="" href="/explore">Explore</a> </li> </ul> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-justify-end"> <li class="header-logged-out-nav-item"> <a href="/users/sign_in?redirect_to_referer=yes">Sign in</a> </li> <li class="header-logged-out-nav-item"> <a class="gl-button btn btn-md btn-confirm !gl-inline-flex" href="/users/sign_up"><span class="gl-button-text"> Get free trial </span> </a></li> </ul> </nav> </div> </header> <div class="layout-page page-with-super-sidebar"> <aside class="js-super-sidebar super-sidebar super-sidebar-loading" data-command-palette="{"project_files_url":"/OpenMW/openmw/-/files/master?format=json","project_blob_url":"/OpenMW/openmw/-/blob/master"}" data-force-desktop-expanded-sidebar="" data-is-saas="true" data-root-path="/" data-sidebar="{"whats_new_most_recent_release_items_count":6,"whats_new_version_digest":"48f0954709a6c67a67281dc64a482f8793143a5f90b37653d5fe82bcbb697b5c","is_logged_in":false,"context_switcher_links":[{"title":"Explore","link":"/explore","icon":"compass"}],"current_menu_items":[{"id":"project_overview","title":"openmw","avatar":"/uploads/-/system/project/avatar/7107382/6727417.png","entity_id":7107382,"link":"/OpenMW/openmw","link_classes":"shortcuts-project","is_active":true},{"id":"manage_menu","title":"Manage","icon":"users","avatar_shape":"rect","link":"/OpenMW/openmw/activity","is_active":false,"items":[{"id":"activity","title":"Activity","link":"/OpenMW/openmw/activity","link_classes":"shortcuts-project-activity","is_active":false},{"id":"members","title":"Members","link":"/OpenMW/openmw/-/project_members","is_active":false},{"id":"labels","title":"Labels","link":"/OpenMW/openmw/-/labels","is_active":false}],"separated":false},{"id":"plan_menu","title":"Plan","icon":"planning","avatar_shape":"rect","link":"/OpenMW/openmw/-/issues","is_active":false,"items":[{"id":"project_issue_list","title":"Issues","link":"/OpenMW/openmw/-/issues","pill_count_field":"openIssuesCount","link_classes":"shortcuts-issues has-sub-items","is_active":false},{"id":"boards","title":"Issue boards","link":"/OpenMW/openmw/-/boards","link_classes":"shortcuts-issue-boards","is_active":false},{"id":"milestones","title":"Milestones","link":"/OpenMW/openmw/-/milestones","is_active":false},{"id":"iterations","title":"Iterations","link":"/OpenMW/openmw/-/cadences","is_active":false}],"separated":false},{"id":"code_menu","title":"Code","icon":"code","avatar_shape":"rect","link":"/OpenMW/openmw/-/merge_requests","is_active":false,"items":[{"id":"project_merge_request_list","title":"Merge requests","link":"/OpenMW/openmw/-/merge_requests","pill_count_field":"openMergeRequestsCount","link_classes":"shortcuts-merge_requests","is_active":false},{"id":"files","title":"Repository","link":"/OpenMW/openmw/-/tree/master","link_classes":"shortcuts-tree","is_active":false},{"id":"branches","title":"Branches","link":"/OpenMW/openmw/-/branches","is_active":false},{"id":"commits","title":"Commits","link":"/OpenMW/openmw/-/commits/master?ref_type=heads","link_classes":"shortcuts-commits","is_active":false},{"id":"tags","title":"Tags","link":"/OpenMW/openmw/-/tags","is_active":false},{"id":"graphs","title":"Repository graph","link":"/OpenMW/openmw/-/network/master?ref_type=heads","link_classes":"shortcuts-network","is_active":false},{"id":"compare","title":"Compare revisions","link":"/OpenMW/openmw/-/compare?from=master\u0026to=master","is_active":false},{"id":"file_locks","title":"Locked files","link":"/OpenMW/openmw/path_locks","is_active":false}],"separated":false},{"id":"build_menu","title":"Build","icon":"rocket","avatar_shape":"rect","link":"/OpenMW/openmw/-/pipelines","is_active":false,"items":[{"id":"pipelines","title":"Pipelines","link":"/OpenMW/openmw/-/pipelines","link_classes":"shortcuts-pipelines","is_active":false},{"id":"jobs","title":"Jobs","link":"/OpenMW/openmw/-/jobs","link_classes":"shortcuts-builds","is_active":false},{"id":"pipeline_schedules","title":"Pipeline schedules","link":"/OpenMW/openmw/-/pipeline_schedules","link_classes":"shortcuts-builds","is_active":false},{"id":"test_cases","title":"Test cases","link":"/OpenMW/openmw/-/quality/test_cases","link_classes":"shortcuts-test-cases","is_active":false},{"id":"artifacts","title":"Artifacts","link":"/OpenMW/openmw/-/artifacts","link_classes":"shortcuts-builds","is_active":false}],"separated":false},{"id":"deploy_menu","title":"Deploy","icon":"deployments","avatar_shape":"rect","link":"/OpenMW/openmw/-/releases","is_active":false,"items":[{"id":"releases","title":"Releases","link":"/OpenMW/openmw/-/releases","link_classes":"shortcuts-deployments-releases","is_active":false}],"separated":false},{"id":"analyze_menu","title":"Analyze","icon":"chart","avatar_shape":"rect","link":"/OpenMW/openmw/-/value_stream_analytics","is_active":false,"items":[{"id":"cycle_analytics","title":"Value stream analytics","link":"/OpenMW/openmw/-/value_stream_analytics","link_classes":"shortcuts-project-cycle-analytics","is_active":false},{"id":"contributors","title":"Contributor analytics","link":"/OpenMW/openmw/-/graphs/master?ref_type=heads","is_active":false},{"id":"ci_cd_analytics","title":"CI/CD analytics","link":"/OpenMW/openmw/-/pipelines/charts","is_active":false},{"id":"repository_analytics","title":"Repository analytics","link":"/OpenMW/openmw/-/graphs/master/charts","link_classes":"shortcuts-repository-charts","is_active":false},{"id":"code_review","title":"Code review analytics","link":"/OpenMW/openmw/-/analytics/code_reviews","is_active":false},{"id":"issues","title":"Issue analytics","link":"/OpenMW/openmw/-/analytics/issues_analytics","is_active":false},{"id":"insights","title":"Insights","link":"/OpenMW/openmw/insights/","link_classes":"shortcuts-project-insights","is_active":false}],"separated":false}],"current_context_header":"Project","support_path":"https://about.gitlab.com/get-help/","docs_path":"/help/docs","display_whats_new":true,"show_version_check":null,"search":{"search_path":"/search","issues_path":"/dashboard/issues","mr_path":"/dashboard/merge_requests","autocomplete_path":"/search/autocomplete","settings_path":"/search/settings","search_context":{"group":{"id":2991993,"name":"OpenMW","full_name":"OpenMW"},"group_metadata":{"issues_path":"/groups/OpenMW/-/issues","mr_path":"/groups/OpenMW/-/merge_requests"},"project":{"id":7107382,"name":"openmw"},"project_metadata":{"mr_path":"/OpenMW/openmw/-/merge_requests","issues_path":"/OpenMW/openmw/-/issues"},"code_search":true,"ref":"master","scope":null,"for_snippets":null}},"panel_type":"project","shortcut_links":[{"title":"Snippets","href":"/explore/snippets","css_class":"dashboard-shortcuts-snippets"},{"title":"Groups","href":"/explore/groups","css_class":"dashboard-shortcuts-groups"},{"title":"Projects","href":"/explore/projects/starred","css_class":"dashboard-shortcuts-projects"}],"terms":"/-/users/terms"}"></aside> <div class="content-wrapper"> <div class="broadcast-wrapper"> </div> <div class="alert-wrapper alert-wrapper-top-space gl-flex gl-flex-col gl-gap-3 container-fluid container-limited"> <div class="gl-alert gl-alert-danger gl-alert-not-dismissible" role="alert"> <div class="gl-alert-icon-container"> <svg class="s16 gl-alert-icon gl-alert-icon-no-title" data-testid="error-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#error"></use></svg> </div> <div class="gl-alert-content" role="alert"> <div class="gl-alert-body"> GitLab may not work properly, because you are using an outdated web browser. <br> Please install a <a target="_blank" rel="noopener noreferrer" href="/help/install/requirements.md#supported-web-browsers">supported web browser</a> for a better experience. </div> </div> </div> </div> <div class="top-bar-fixed container-fluid" data-testid="top-bar"> <div class="top-bar-container gl-flex gl-items-center gl-gap-2"> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-start gl-gap-3"> <button class="gl-button btn btn-icon btn-md btn-default btn-default-tertiary js-super-sidebar-toggle-expand super-sidebar-toggle -gl-ml-3" aria-controls="super-sidebar" aria-expanded="false" aria-label="Primary navigation sidebar" type="button"><svg class="s16 gl-icon gl-button-icon " data-testid="sidebar-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#sidebar"></use></svg> </button> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"OpenMW","item":"https://gitlab.com/OpenMW"},{"@type":"ListItem","position":2,"name":"openmw","item":"https://gitlab.com/OpenMW/openmw"}]} </script> <div data-testid="breadcrumb-links" id="js-vue-page-breadcrumbs-wrapper"> <div data-breadcrumbs-json="[{"text":"OpenMW","href":"/OpenMW","avatarPath":"/uploads/-/system/group/avatar/2991993/6727417.png"},{"text":"openmw","href":"/OpenMW/openmw","avatarPath":"/uploads/-/system/project/avatar/7107382/6727417.png"}]" id="js-vue-page-breadcrumbs"></div> <div id="js-injected-page-breadcrumbs"></div> </div> </div> <div class="gl-flex-none gl-flex gl-items-center gl-justify-center gl-gap-4"> <div id="js-work-item-feedback"></div> <div id="js-advanced-search-modal"></div> </div> <div class="gl-basis-0 gl-flex gl-items-center gl-justify-end"> </div> </div> </div> <div class="container-fluid container-limited project-highlight-puc"> <main class="content" id="content-body" itemscope itemtype="http://schema.org/SoftwareSourceCode"> <div class="flash-container flash-container-page sticky" data-testid="flash-container"> <div id="js-global-alerts"></div> </div> <header class="project-home-panel js-show-on-project-root gl-mt-5"> <div class="gl-flex gl-justify-between gl-flex-wrap gl-flex-col md:gl-flex-row gl-gap-5"> <div class="home-panel-title-row gl-flex gl-items-center"> <img srcset="/uploads/-/system/project/avatar/7107382/6727417.png?width=48 1x, /uploads/-/system/project/avatar/7107382/6727417.png?width=96 2x" alt="openmw" class="gl-avatar gl-avatar-s48 gl-self-start gl-shrink-0 gl-mr-4 !gl-rounded-base" height="48" width="48" loading="lazy" itemprop="image" src="/uploads/-/system/project/avatar/7107382/6727417.png?width=48" /> <h1 class="home-panel-title gl-heading-1 gl-flex gl-items-center gl-flex-wrap gl-gap-3 gl-break-anywhere gl-mb-0" data-testid="project-name-content" itemprop="name"> openmw <button class="has-tooltip gl-border-0 gl-bg-transparent gl-p-0 gl-leading-0 gl-text-inherit visibility-icon gl-inline-flex" data-container="body" data-placement="top" title="Public - The project can be accessed without any authentication." type="button" aria-label="Public - The project can be accessed without any authentication."><svg class="s16 gl-fill-icon-subtle" data-testid="earth-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#earth"></use></svg></button> </h1> </div> <div data-can-read-project="true" data-id="7107382" data-is-group="false" data-is-project-archived="false" data-is-project-empty="false" data-is-project-marked-for-deletion="false" data-project-avatar="/uploads/-/system/project/avatar/7107382/6727417.png" data-project-id="7107382" data-project-name="openmw" data-project-visibility-level="public" data-sign-in-path="/users/sign_in?redirect_to_referer=yes" data-star-count="818" data-starred="false" data-starrers-path="/OpenMW/openmw/-/starrers" id="js-home-panel"></div> </div> </header> <div class="project-page-indicator js-show-on-project-root"></div> <div class="project-page-layout"> <div class="project-page-layout-sidebar js-show-on-project-root gl-mt-5"> <aside class="project-page-sidebar" data-testid="project-page-sidebar"> <div class="project-page-sidebar-block home-panel-home-desc gl-py-4 gl-border-b gl-border-b-subtle !gl-pt-2"> <h2 class="gl-text-base gl-font-bold gl-leading-reset gl-text-heading gl-m-0 gl-mb-1">Project information</h2> <div class="home-panel-description gl-break-words"> <div class="home-panel-description-markdown read-more-container" data-read-more-height="320" itemprop="description"> <div class="read-more-content read-more-content--has-scrim"> <p data-sourcepos="1:1-1:84" dir="auto">OpenMW is an open-source open-world RPG game engine that supports playing Morrowind.</p> </div> <div class="js-read-more-trigger gl-hidden gl-w-full gl-h-8 gl-absolute gl-bottom-0 gl-z-2 gl-bg-default"> <button aria-label="Expand project information" type="button" class="gl-button btn btn-md btn-link "><span class="gl-button-text"> <svg class="s14" data-testid="chevron-down-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#chevron-down"></use></svg> Read more </span> </button></div> </div> </div> <div class="gl-mb-5"> <div class="gl-w-full gl-inline-flex gl-flex-wrap gl-text-base gl-font-normal gl-items-center gl-gap-2" data-testid="project_topic_list"> <a class="gl-badge badge badge-pill badge-muted" href="/explore/projects/topics/game" itemprop="keywords"><span class="gl-badge-content">game</span></a> <a class="gl-badge badge badge-pill badge-muted" href="/explore/projects/topics/Morrowind" itemprop="keywords"><span class="gl-badge-content">Morrowind</span></a> <a class="gl-badge badge badge-pill badge-muted" href="/explore/projects/topics/nif" itemprop="keywords"><span class="gl-badge-content">nif</span></a> <span class="js-vue-popover" data-container="body" data-content="<span class="gl-inline-flex gl-flex-wrap gl-gap-2"> <a class="gl-badge badge badge-pill badge-muted" href="/explore/projects/topics/rpg" itemprop="keywords"><span class="gl-badge-content">rpg</span></a> <a class="gl-badge badge badge-pill badge-muted has-tooltip" data-container="body" href="/explore/projects/topics/The+Elder+Scrolls" itemprop="keywords" title="The Elder Scrolls"><span class="gl-badge-content">The Elder Sc...</span></a> </span> " data-html="true" data-title="More topics" data-toggle="popover" data-triggers="click"> <button id="more-topics-popover-7107382" class="gl-button btn btn-sm btn-default btn-default-tertiary text-nowrap !gl-text-subtle" type="button"><span class="gl-button-text"> + 2 more </span> </button></span> </div> </div> <div class="gl-mb-2 !gl-mb-4"> <div class="progress repository-languages-bar js-show-on-project-root"><div class="progress-bar has-tooltip" style="width: 93.61%; background-color:#f34b7d" data-html="true" title="<span class="repository-language-bar-tooltip-language">C++</span>&nbsp;<span class="repository-language-bar-tooltip-share">93.6%</span>"></div><div class="progress-bar has-tooltip" style="width: 3.24%; background-color:#000080" data-html="true" title="<span class="repository-language-bar-tooltip-language">Lua</span>&nbsp;<span class="repository-language-bar-tooltip-share">3.2%</span>"></div><div class="progress-bar has-tooltip" style="width: 1.08%; background-color:#e7efda" data-html="true" title="<span class="repository-language-bar-tooltip-language">CMake</span>&nbsp;<span class="repository-language-bar-tooltip-share">1.1%</span>"></div><div class="progress-bar has-tooltip" style="width: 0.76%; background-color:#555555" data-html="true" title="<span class="repository-language-bar-tooltip-language">C</span>&nbsp;<span class="repository-language-bar-tooltip-share">0.8%</span>"></div><div class="progress-bar has-tooltip" style="width: 0.53%; background-color:#086703" data-html="true" title="<span class="repository-language-bar-tooltip-language">GLSL</span>&nbsp;<span class="repository-language-bar-tooltip-share">0.5%</span>"></div></div> </div> <div class="project-badges gl-mb-2" data-testid="project-badges-content"> <a class="gl-mr-3" data-qa-link-url="https://repology.org/project/openmw/versions" data-testid="badge-image-link" href="https://repology.org/project/openmw/versions" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://user-content.gitlab-static.net/1f1edb3abaa4284f3a91f823cb3c49e8a413e4b6/68747470733a2f2f7265706f6c6f67792e6f72672f62616467652f74696e792d7265706f732f6f70656e6d772e737667"></a><a class="gl-mr-3" data-qa-link-url="https://gitlab.com/OpenMW/openmw/commits/master" data-testid="badge-image-link" href="https://gitlab.com/OpenMW/openmw/commits/master" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://gitlab.com/OpenMW/openmw/badges/master/pipeline.svg"></a><a class="gl-mr-3" data-qa-link-url="https://scan.coverity.com/projects/3740" data-testid="badge-image-link" href="https://scan.coverity.com/projects/3740" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://user-content.gitlab-static.net/ab40851dd5d69735de93b3384f4eb12e4e937e47/68747470733a2f2f7363616e2e636f7665726974792e636f6d2f70726f6a656374732f333734302f62616467652e737667"></a><a class="gl-mr-3" data-qa-link-url="https://ci.appveyor.com/project/psi29a/openmw" data-testid="badge-image-link" href="https://ci.appveyor.com/project/psi29a/openmw" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://user-content.gitlab-static.net/50a18654e863fc8bab51715ccbd4e39e75ca3d91/68747470733a2f2f63692e6170707665796f722e636f6d2f6170692f70726f6a656374732f7374617475732f6769746875622f6f70656e6d772f6f70656e6d773f7376673d74727565"></a><a class="gl-mr-3" data-qa-link-url="https://bestpractices.coreinfrastructure.org/projects/4810/" data-testid="badge-image-link" href="https://bestpractices.coreinfrastructure.org/projects/4810/" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://user-content.gitlab-static.net/2ebef6e241724a52c08999ef6a63ac16d52abca5/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f343831302f6261646765"></a><a class="gl-mr-3" data-qa-link-url="https://www.codetriage.com/openmw/openmw" data-testid="badge-image-link" href="https://www.codetriage.com/openmw/openmw" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://user-content.gitlab-static.net/912cecfa7730f7479e6a14b71085e2933a86e227/68747470733a2f2f7777772e636f64657472696167652e636f6d2f6f70656e6d772f6f70656e6d772f6261646765732f75736572732e737667"></a><a class="gl-mr-3" data-qa-link-url="https://gitlab.com/OpenMW/openmw/-/releases" data-testid="badge-image-link" href="https://gitlab.com/OpenMW/openmw/-/releases" rel="noopener noreferrer" target="_blank"><img alt="Project badge" aria-hidden class="project-badge" src="https://gitlab.com/OpenMW/openmw/-/badges/release.svg"></a></div> </div> <div class="project-page-sidebar-block gl-py-4 gl-border-b gl-border-b-subtle"> <nav class="project-stats"> <ul class="nav gl-gap-y-2 gl-gap-x-5"> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2" href="/OpenMW/openmw/-/commits/master"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="commit-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#commit"></use></svg><strong class="project-stat-value">35,381</strong> Commits</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2" href="/OpenMW/openmw/-/branches"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="branch-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#branch"></use></svg><strong class="project-stat-value">18</strong> Branches</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2" href="/OpenMW/openmw/-/tags"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="label-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#label"></use></svg><strong class="project-stat-value">69</strong> Tags</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2" href="/OpenMW/openmw/-/releases"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="rocket-launch-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#rocket-launch"></use></svg><strong class="project-stat-value">4</strong> Releases</a> </li> </ul> </nav> </div> <div class="project-page-sidebar-block gl-py-4 gl-border-b gl-border-b-subtle"> <div class="project-buttons gl-mb-2 js-show-on-project-root" data-testid="project-buttons"> <ul class="nav gl-gap-y-2 gl-gap-x-5"> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2 btn-default" href="/OpenMW/openmw/-/blob/master/README.md"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="doc-text-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#doc-text"></use></svg>README</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2 btn-default" itemprop="license" href="/OpenMW/openmw/-/blob/master/LICENSE"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="scale-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#scale"></use></svg><span class="project-stat-value">GNU General Public License v3.0 or later</span></a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2 btn-default" href="/OpenMW/openmw/-/blob/master/CHANGELOG.md"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="doc-text-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#doc-text"></use></svg>CHANGELOG</a> </li> <li class="nav-item"> <a class="nav-link stat-link !gl-px-0 !gl-pb-2 btn-default" href="/OpenMW/openmw/-/blob/master/CONTRIBUTING.md"><svg class="s16 gl-fill-icon-subtle gl-mr-3" data-testid="doc-text-icon"><use href="/assets/icons-aa2c8ddf99d22b77153ca2bb092a23889c12c597fc8b8de94b0f730eb53513f6.svg#doc-text"></use></svg>CONTRIBUTING</a> </li> </ul> </div> </div> <div class="project-page-sidebar-block gl-py-4"> <p class="gl-font-bold gl-text-strong gl-m-0 gl-mb-1">Created on</p> <span>June 16, 2018</span> </div> </aside> </div> <div class="project-page-layout-content"> <div class="project-show-files"> <div class="tree-holder clearfix js-per-page gl-mt-5" data-blame-per-page="1000" id="tree-holder"> <div data-breadcrumbs-can-collaborate="false" data-breadcrumbs-can-edit-tree="false" data-breadcrumbs-can-push-code="false" data-breadcrumbs-can-push-to-branch="false" data-breadcrumbs-new-blob-path="/OpenMW/openmw/-/new/master" data-breadcrumbs-new-branch-path="/OpenMW/openmw/-/branches/new" data-breadcrumbs-new-dir-path="/OpenMW/openmw/-/create_dir/master" data-breadcrumbs-new-tag-path="/OpenMW/openmw/-/tags/new" data-breadcrumbs-upload-path="/OpenMW/openmw/-/create/master" data-download-links="[{"text":"zip","path":"/OpenMW/openmw/-/archive/master/openmw-master.zip"},{"text":"tar.gz","path":"/OpenMW/openmw/-/archive/master/openmw-master.tar.gz"},{"text":"tar.bz2","path":"/OpenMW/openmw/-/archive/master/openmw-master.tar.bz2"},{"text":"tar","path":"/OpenMW/openmw/-/archive/master/openmw-master.tar"}]" data-escaped-ref="master" data-http-url="https://gitlab.com/OpenMW/openmw.git" data-kerberos-url="" data-new-workspace-path="/-/remote_development/workspaces/new" data-project-id="7107382" data-project-path="OpenMW/openmw" data-project-root-path="/OpenMW/openmw" data-ref="master" data-ref-type="heads" data-root-ref="master" data-ssh-url="git@gitlab.com:OpenMW/openmw.git" data-web-ide-button-default-branch="master" data-web-ide-button-options="{"project_path":"OpenMW/openmw","ref":"master","is_fork":false,"needs_to_fork":true,"gitpod_enabled":false,"is_blob":false,"show_edit_button":false,"show_web_ide_button":false,"show_gitpod_button":false,"show_pipeline_editor_button":false,"web_ide_url":"/-/ide/project/OpenMW/openmw/edit/master","edit_url":"","pipeline_editor_url":"/OpenMW/openmw/-/ci/editor?branch_name=master","gitpod_url":"https://gitpod.io/#https://gitlab.com/OpenMW/openmw/-/tree/master/","user_preferences_gitpod_path":"/-/profile/preferences#user_gitpod_enabled","user_profile_enable_gitpod_path":"/-/user_settings/profile?user%5Bgitpod_enabled%5D=true","new_workspace_path":"/-/remote_development/workspaces/new","project_id":7107382,"fork_path":"/OpenMW/openmw/-/forks/new","fork_modal_id":null}" data-xcode-url="" id="js-repository-blob-header-app"></div> <div class="info-well project-last-commit gl-flex-col gl-mt-5"> <div class="gl-flex gl-items-center gl-justify-center gl-m-auto gl-min-h-9 lg:gl-min-h-[4.5rem]" data-history-link="/OpenMW/openmw/-/commits/master" data-ref-type="heads" id="js-last-commit"> <div class="gl-spinner-container" role="status"><span aria-hidden class="gl-spinner gl-spinner-md gl-spinner-dark !gl-align-text-bottom"></span><span class="gl-sr-only !gl-absolute">Loading</span> </div> </div> <div class="gl-hidden sm:gl-flex" data-branch="master" data-branch-rules-path="/OpenMW/openmw/-/settings/repository#js-branch-rules" id="js-code-owners"></div> </div> <div data-escaped-ref="master" data-explain-code-available="false" data-full-name="OpenMW / openmw" data-path-locks-available="true" data-path-locks-toggle="/OpenMW/openmw/path_locks/toggle" data-project-path="OpenMW/openmw" data-project-short-path="openmw" data-ref="master" data-ref-type="heads" data-resource-id="gid://gitlab/Project/7107382" data-user-id="" id="js-tree-list"></div> </div> </div> </div> </div> </main> </div> </div> </div> <script nonce="5xJcd7AZh2MLhFMzJufh5w=="> //<![CDATA[ if ('loading' in HTMLImageElement.prototype) { document.querySelectorAll('img.lazy').forEach(img => { img.loading = 'lazy'; let imgUrl = img.dataset.src; // Only adding width + height for avatars for now if (imgUrl.indexOf('/avatar/') > -1 && imgUrl.indexOf('?') === -1) { const targetWidth = img.getAttribute('width') || img.width; imgUrl += `?width=${targetWidth}`; } img.src = imgUrl; img.removeAttribute('data-src'); img.classList.remove('lazy'); img.classList.add('js-lazy-loaded'); img.dataset.testid = 'js-lazy-loaded-content'; }); } //]]> </script> <script nonce="5xJcd7AZh2MLhFMzJufh5w=="> //<![CDATA[ gl = window.gl || {}; gl.experiments = {}; //]]> </script> </body> </html>