OSCR

Offline generative network reconfiguration guides insight-like accelerated learning by assimilation into schema in rats.

Code ↔ Paper

7 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 7 matches · 3 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
  1. [1] § Methods › Methods details › Bayesian decoding of neural activity ↔ KetamineProject/libs/Decoding/BayePosDecode_LabCode_Lite_CosineExp.m, the whole file · a weak match · score 0.74 · Bayesian decoding, awake rest, temporal bins, reconstructed, firing rate, window
  2. [2] § Methods › Methods details › Bayesian decoding of neural activity ↔ KetamineProject/AnalysisTutorial/function_ThetaSeq_ByVelocity.m, the whole file · a weak match · score 0.71 · Bayesian decoding, decoded position, immobility, posterior, window, peak
  3. [3] § Methods › Methods details › mPFC cell-assemblies ↔ DetourProject/function_PlaceMap_Mvregress.m, lines 157–223 · score 0.70 · ID shuffles, reduced models, full model, linear regression, cell
  4. [4] § Methods › Methods details › Cue-, place-, and outcome-responsive neurons ↔ DetourProject/function_PlaceMap_Mvregress.m, lines 157–223 · score 0.61 · reduced model, full model, linear regression, id, shuffled
  5. [5] § Methods › Methods details › LFP Analysis in ripple disruption experiments ↔ SchemaBasedLearning/Fig6/Fig6Disruption.m, lines 563–651 · score 0.61 · power spectrum, linear regression, subtracting, fit, log, disruption
  6. [6] § Methods › Methods details › Linearization and firing rates ↔ KetamineProject/libs/Placecells/CA_Getplacefield5cms.m, the whole file · a weak match · score 0.61 · linearized, occupancy, Firing rates, smoothed, kernel, SD
  7. [7] § Results › Inference and rapid network reconfiguration during sleep ↔ KetamineProject/AnalysisTutorial/python/LDS_FitEachREM.py, lines 1–52 · score 0.51 · REM sleep, sleep sessions, asked, epochs, trajectory, activity

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

MATLAB · 224 lines · 9.1 KB · no license · 2 matches

  1. function [pctvar,shfpctvar] = function_PlaceMap_Mvregress(ses,M1,M2,PlFields,ClF,PlFmesh)
  2. % function_PlaceMap_Mvregress
  3. % this function extract tuning curves on the first and the last 50 cm
  4. % segments on detoured tracks, and use a multi-variable regressor to study
  5. % how post-detour tuning curves can be predicted based on pre-detour,
  6. % detour, parallel track, and T1&T3. The result is quantified as the
  7. % percentage residual difference between the full model and the reduced
  8. % model where one regressor is removed. The result is also compared against
  9. % shuffle datasets where the sample ID is shuffled in the mvregress
  10. %
  11. % inputs: ses, M1, M2, PlFields, ClF, PlFmesh, see documents: "DataStructure"
  12. %
  13. % outputs: pctvar, is a 1*5 vector contain the percentage residual
  14. % difference in the mvregress to predict post-detour
  15. % tuning curve if we remove:
  16. % 1. pre-detour tuning curve; 2. detour tuning curve;
  17. % 3. parralel track tuning curve; 4. T1 tuning curve;
  18. % 5. T3 tuning curve
  19. % from the model
  20. % shfpctvar, is a n*5 matrix, with row being shuffles and
  21. % column being regressors
  22. %
  23. % Yuchen Zhou 2025 Apr, [email hidden], [email hidden]
  24. %% preprocess and setting parameters
  25. % exclude int neurons in this analysis
  26. [~,~,~,PlFields,~,~] = CA_ExcludeInt(M1,M2,ClF,PlFields);
  27. % order tracks by linear pos
  28. ses = Detour_Ordertracks(ses);
  29. % get segment length for each detour track
  30. rplens = Detour_GetDetourSegLen(ses,[2,4]);
  31. dettra = [2,4]; % detoured tracks
  32. klint = [1,3]; % kept linear tracks
  33. segdof = 50; % for each segment, we will interpolate to make sure the tuning curve
  34. % has the length of 50, so we will have the same vector length
  35. shft = 500; % number of sample ID shuffle in mvregress
  36. %% get tuning curves on kept segments on tracks
  37. allplf = cell(1,6);
  38. % in allplf, we will have tuning curves for
  39. % 1.Pre-detour, 2.Det, 3.Post-detour, 4.Parallel, 5.T1, 6.T3 tracks
  40. % we only track the first and the last 50cm segments on tracks, and
  41. % concatenate those tuning curves. We do this because there is no direct
  42. % correpsondence between the 150cm U shape detour segment and 50cm removed
  43. % or reversal segments.
  44. % in each element of allplf, it's a matrix with
  45. % D1 being observations (cell * detour tracks * direction)
  46. % D2 being spatial bins (dimension of the data)
  47. % find tuning curve on the first and the last 50 cm segments on detoured tracks
  48. % in pre-detour, detour, and post detour sessions
  49. for icat = 1:3
  50. % cat 1,2,3 are pre-detour,detour,post-detour sessions
  51. for idir = 1:2
  52. for it = dettra
  53. detses = Det_FindDetTSes(it,ses);
  54. is = detses + icat-2;
  55. % get track limit and range of linear segment, rescale
  56. % them to have segdof bins
  57. tralim = ses(is).tralim(it,:);
  58. cornertol = 0;
  59. seg1 = [tralim(1)+cornertol,tralim(1) + rplens{it}(1)];
  60. seg2 = [tralim(2) - rplens{it}(2),tralim(2)-cornertol];
  61. idx1 = idxinrange(PlFmesh,seg1);
  62. idx2 = idxinrange(PlFmesh,seg2);
  63. plfm1 = PlFmesh(idx1);
  64. plfm2 = PlFmesh(idx2);
  65. % interpolate to make sure they have the same length
  66. newplfm1 = linspace(plfm1(1),plfm1(end),segdof);
  67. newplfm2 = linspace(plfm2(1),plfm2(end),segdof);
  68. plf1 = squeeze(PlFields(:,is,idir,idx1));
  69. plf2 = squeeze(PlFields(:,is,idir,idx2));
  70. newplf1 = interp1(plfm1,plf1',newplfm1);
  71. newplf2 = interp1(plfm2,plf2',newplfm2);
  72. newplf1 = newplf1';
  73. newplf2 = newplf2';
  74. nowplf = cat(2,newplf1,newplf2);
  75. % concatenate all the obeservations, D1 are observations (cell* detour tracks * direction)
  76. % D2 are spatial bins (dimension of the data)
  77. allplf{icat} = cat(1,allplf{icat},nowplf);
  78. end
  79. end
  80. end
  81. % find tuning curve on the first and the last 50 cm segments on the parallel tracks
  82. % during detour session
  83. for idir = 1:2
  84. for it = dettra
  85. detses = Det_FindDetTSes(it,ses);
  86. ot = setdiff(dettra,it);
  87. is = detses;
  88. % get track limit and range of linear segment, rescale
  89. % them to have segdof bins
  90. tralim = ses(is).tralim(ot,:);
  91. seg1 = [tralim(1)+cornertol,tralim(1) + rplens{ot}(1)];
  92. seg2 = [tralim(2) - rplens{ot}(2),tralim(2)-cornertol];
  93. idx1 = idxinrange(PlFmesh,seg1);
  94. idx2 = idxinrange(PlFmesh,seg2);
  95. plfm1 = PlFmesh(idx1);
  96. plfm2 = PlFmesh(idx2);
  97. % interpolate to make sure they have the same length
  98. newplfm1 = linspace(plfm1(1),plfm1(end),segdof);
  99. newplfm2 = linspace(plfm2(1),plfm2(end),segdof);
  100. plf1 = squeeze(PlFields(:,is,idir,idx1));
  101. plf2 = squeeze(PlFields(:,is,idir,idx2));
  102. newplf1 = interp1(plfm1,plf1',newplfm1);
  103. newplf2 = interp1(plfm2,plf2',newplfm2);
  104. newplf1 = newplf1';
  105. newplf2 = newplf2';
  106. nowplf = cat(2,newplf1,newplf2);
  107. % concatenate all the obeservations, D1 are observations (cell* detour tracks * direction)
  108. % D2 are spatial bins (dimension of the data)
  109. allplf{4} = cat(1,allplf{4},nowplf);
  110. end
  111. end
  112. % find tuning curve on the first and the last 50 cm segments on the T1 and
  113. % T3 during detour session
  114. for idir = 1:2
  115. % we still need this detour track loop, as for each detoured segment, we
  116. % want to explain tuning curve from T1 & T3
  117. for it = dettra
  118. for jt = 1:length(klint)
  119. is = detses;
  120. % get track limit and range of linear segment, rescale
  121. % them to have segdof bins
  122. tralim = ses(is).tralim(klint(jt),:);
  123. seg1 = [tralim(1)+cornertol,tralim(1) + 50];
  124. seg2 = [tralim(2) - 50,tralim(2)-cornertol];
  125. idx1 = idxinrange(PlFmesh,seg1);
  126. idx2 = idxinrange(PlFmesh,seg2);
  127. plfm1 = PlFmesh(idx1);
  128. plfm2 = PlFmesh(idx2);
  129. % interpolate to make sure they have the same length
  130. newplfm1 = linspace(plfm1(1),plfm1(end),segdof);
  131. newplfm2 = linspace(plfm2(1),plfm2(end),segdof);
  132. plf1 = squeeze(PlFields(:,is,idir,idx1));
  133. plf2 = squeeze(PlFields(:,is,idir,idx2));
  134. newplf1 = interp1(plfm1,plf1',newplfm1);
  135. newplf2 = interp1(plfm2,plf2',newplfm2);
  136. newplf1 = newplf1';
  137. newplf2 = newplf2';
  138. nowplf = cat(2,newplf1,newplf2);
  139. % concatenate all the obeservations, D1 are observations (cell* detour tracks * direction)
  140. % D2 are spatial bins (dimension of the data)
  141. allplf{4+jt} = cat(1,allplf{4+jt},nowplf);
  142. end
  143. end
  144. end
  145. %% build Multivariate linear regression full model
  146. allobs = size(allplf{1},1);
  147. X = cell(1,allobs); % this are the regressors
  148. % in X we have the following terms:
  149. % 1. intercept, 2. pre-detour tuning curve, 3. detour tuning curve,
  150. % 4. parallel track tuning curve, 5. T1 tuning curve, 6. T3 tuning curve,
  151. % 7. averaged tuning turve
  152. % The averaged tuning turve illustrate the spatial preference rather than
  153. % single cell tuning properties, for example, higher rate at corners
  154. averate = nanmean(allplf{3},1);
  155. DOF = size(allplf{1},2);
  156. for iob = 1:allobs
  157. X{iob} = [ones(DOF,1),allplf{1}(iob,:)',allplf{2}(iob,:)',...
  158. allplf{4}(iob,:)',allplf{5}(iob,:)',allplf{6}(iob,:)',becolumn(averate)];
  159. % intercept,pre,detour,parallel T,T1,T3,averate
  160. end
  161. % we need to predict post-detour tuning curve
  162. Ynow = allplf{3};
  163. [~,~,resi,~,~] = mvregress(X,Ynow,'algorithm','cwls');
  164. % get the model residual
  165. fullvar = norm(resi(:));
  166. % build reduced model, get model residual, compare with sample ID shuffle
  167. effectele = [2,3,4,5,6];
  168. % we will remove each regressor once at a time, and see how much it
  169. % contribute to the model residual
  170. % we will remove pre,detour,parallel,T1,T3
  171. pctvar = nan(1,5);
  172. % this is the pct residual related to each regressor
  173. for iele = 1:length(effectele)
  174. Xtmp = cell(1,allobs);
  175. for iob = 1:allobs
  176. % remove that regressor
  177. nowele = setdiff(effectele,effectele(iele));
  178. Xtmp{iob} = X{iob}(:,[1,nowele,7]);
  179. end
  180. [~,~,resinow,~,~] = mvregress(Xtmp,Ynow,'algorithm','cwls');
  181. % get the model residual
  182. resivar = norm(resinow(:));
  183. % get improvement from this regressor
  184. pctvar(effectele(iele)-1) = (resivar-fullvar)./fullvar*100;
  185. end
  186. % we will do a sample id shuffle, where we shuffle the sample id in post
  187. % session
  188. shfpctvar = nan(shft,5);
  189. for ish = 1:shft
  190. shfplf = Ynow(randperm(size(Ynow,1)),:);
  191. [~,~,resinow,~,~]= mvregress(X,shfplf,'algorithm','cwls');
  192. fullshfvar = norm(resinow(:));
  193. for iele = 1:length(effectele)
  194. Xtmp = cell(1,allobs);
  195. for iob = 1:allobs
  196. % remove that regressor
  197. nowele = setdiff(effectele,effectele(iele));
  198. Xtmp{iob} = X{iob}(:,[1,nowele,7]);
  199. end
  200. % get the model residual
  201. [~,~,resinow,~,~] = mvregress(Xtmp,shfplf,'algorithm','cwls');
  202. resivar = norm(resinow(:));
  203. shfpctvar(ish,effectele(iele)-1) = (resivar-fullshfvar)./fullshfvar*100;
  204. end
  205. end
  206. end

function_PlaceMap_Mvregress.m at commit 60a3d34, no license · at the source

Overview

  1. Department of Psychiatry, Yale School of Medicine,New Haven, CT USA
  2. Department of Neuroscience and Wu Tsai Institute, Yale School of Medicine,New Haven, CT USA
Institutions: Yale University (United States)
Journal: Nature communications, volume 17, issue 1, article 9694
Dates: received 8 December 2025; accepted 21 August 2026; published online 3 September 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1038/s41467-026-77318-1 · PMID 42722686 · PMCID PMC13562695 · OpenAlex W7207523990
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: rat (organism), systems (subfield)
Methods: Spectral & time-frequency, Statistics, Smoothing, state filtering, decompositions, Preprocessing, Connectivity, Single-unit activity, calcium imaging, Physiology & signal measures, Machine learning
Keywords: Consolidation, Neural circuits
MeSH: Association Learning*, Hippocampus*, Learning*, Prefrontal Cortex*, Animals, Cues, Generative Artificial Intelligence, Male, Nerve Net, Neurons, Rats, Rats, Long-Evans, Sleep (* major topic)
Topic: Sleep and Wakefulness Research (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: NINDS (R01NS104917, R35NS132342); National Institute of Mental Health (R01MH121372)
Citations: not cited yet (Europe PMC); 102 references in the paper

Abstract

Complex cross-modal de-novo associative learning generally requires numerous encoding exposures, but acquisition of an underlying mental schema of associative abstract rules enables insight-like accelerated new learning. Reports indicate that post-encoding sleep/rest offline epochs play an active role in insight learning, but the supporting neuronal ensemble mechanisms remained elusive. We developed a complex cross-modal learning task where six cue-place paired-associations (PAs) learned by male rats over weeks created a mental schema that enabled rapid within-day acquisition of 3-6 novel PAs. Simultaneous electrophysiological recording of hippocampus (HPC)-medial prefrontal (mPFC) ensembles across exploration-rest-sleep states indicated that accelerated learning of new PAs combined inferential activation of HPC map-based cue-place abstract associations and offline generative network reconfiguration in coordination with mPFC generalized outcome coding. HPC network reconfiguration during post-encoding sleep/rest predicted insight-like accelerated learning of 3-6 new PAs that consolidated and transferred rapidly via ripple-coordinated cell-assembly co-activation to mPFC. HPC ripple disruption during post-encoding sleep/rest prevented schema-based accelerated learning. Our findings reveal that map-based associative inference via offline predictive HPC-mPFC generative network reconfiguration supports insight-like accelerated learning by assimilation into schema and systems consolidation.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 7 matches between paragraphs and lines of code.

GDYlab/GDYlabcode

License: none: the authors keep all their rights
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 60a3d348416c94c167a8cd94a6b1ded0030e0240, 17 July 2026
Languages: MATLAB (196), Python (2), C (1)
Size: 515 files, 199 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, 3 notebooks
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: Statistics and Machine Learning Toolbox (79 files), Signal Processing Toolbox (5 files), Matplotlib (2 files), SciPy (2 files), seaborn (2 files), Wavelet Toolbox (1 file), pandas (1 file), scikit-learn (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
200 files

Code availability

The custom codes specific to this study that are needed to interpret, verify, and extend the research in the article are uploaded and made available at: https://github.com/GDYlab/GDYlabcode.

Reproduced under the paper's license (CC BY), from the paper cited above.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 199 scripts, each with its path and the digest of its content;
  • 7 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data availability

All data needed to evaluate or extend the conclusions in the article are presented in the main article, Supplementary Figs., and tables. Source data are provided with this paper. All data generated in this study have been deposited into the file servers of the Yale University Medical School. The very large size of raw data prohibits their archiving on public servers. The data are available under restricted access behind a firewall, and access can be obtained from the corresponding author of the study. No clinical datasets or genetic data have been generated or used in this study. Source data are provided with this paper.

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 2 authors, 2 keywords, 13 MeSH terms, 2 funders, 99 references.

Cite

This paper

Bhattarai, B., & Dragoi, G. (2026). Offline generative network reconfiguration guides insight-like accelerated learning by assimilation into schema in rats. Nature communications, 17(1), 9694. https://doi.org/10.1038/s41467-026-77318-1

BibTeX

@article{bhattarai2026offline,
author = {Bhattarai, Baburam and Dragoi, George},
title = {{Offline generative network reconfiguration guides insight-like accelerated learning by assimilation into schema in rats}},
journal = {Nature communications},
year = {2026},
month = sep,
volume = {17},
number = {1},
pages = {9694},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/s41467-026-77318-1},
url = {https://doi.org/10.1038/s41467-026-77318-1},
pmid = {42722686},
pmcid = {PMC13562695}
}

RIS

TY - JOUR
AU - Bhattarai, Baburam
AU - Dragoi, George
TI - Offline generative network reconfiguration guides insight-like accelerated learning by assimilation into schema in rats
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/09/03
VL - 17
IS - 1
SP - 9694
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/s41467-026-77318-1
UR - https://doi.org/10.1038/s41467-026-77318-1
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41467-026-77318-1",
"type": "article-journal",
"title": "Offline generative network reconfiguration guides insight-like accelerated learning by assimilation into schema in rats",
"container-title": "Nature communications",
"author": [
{
"family": "Bhattarai",
"given": "Baburam"
},
{
"family": "Dragoi",
"given": "George"
}
],
"container-title-short": "Nat Commun",
"volume": "17",
"issue": "1",
"page": "9694",
"DOI": "10.1038/s41467-026-77318-1",
"PMID": "42722686",
"PMCID": "PMC13562695",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s41467-026-77318-1",
"language": "en",
"issued": {
"date-parts": [
[
2026,
9,
3
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.7554/elife.110795 [code]
REM sleep prefrontal high-frequency oscillation chains mediate distinct cortical - hippocampal reactivation patterns compared to NREM sleep.
Journal: eLife
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, rat, 11 references
[2] doi:10.1038/s41593-026-02357-2 [code]
Experience reorganizes content-specific memory traces in macaques.
Journal: Nature neuroscience
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, seaborn, 4 other tools, 8 references
[3] doi:10.1016/j.cub.2026.05.068 [code]
An abstract relational map emerges in the human medial prefrontal cortex with consolidation.
Journal: Current biology : CB
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, seaborn, 3 other tools, systems, 7 references
[4] doi:10.1038/s41593-026-02231-1 [code]
The prefrontal cortex controls memory organization in the hippocampus.
Journal: Nature neuroscience
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, systems, 8 references
[5] doi:10.1093/sleep/zsag168 [code]
Deltas' and spindles' cross-area synchronization and ripple subtypes.
Journal: Sleep
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, scikit-learn, 2 other tools, rat, 6 references
[6] doi:10.1038/s41593-026-02362-5 [code]
Replay of procedural memory is independent of the hippocampus.
Journal: Nature neuroscience
In common: Statistics and Machine Learning Toolbox, seaborn, scikit-learn, 3 other tools, 6 references
[7] doi:10.1038/s41467-026-74822-2 [code]
A likelihood-based method for identifying replay from spike sequences.
Journal: Nature communications
In common: Statistics and Machine Learning Toolbox, rat, systems, 7 references
[8] doi:10.1038/s41467-026-71428-6 [code]
Binding items to contexts through conjunctive neural representations with the method of loci.
Journal: Nature communications
In common: seaborn, scikit-learn, pandas, 2 other tools, systems, 5 references
[9] doi:10.1016/j.neuron.2026.05.004 [code]
A learning-evoked slow-oscillatory architecture paces population activity for offline reactivation across the human medial temporal lobe.
Journal: Neuron
In common: seaborn, SciPy, Matplotlib, systems, 6 references
[10] doi:10.7554/elife.108023 [code]
Challenges in replay detection by TDLM in post-encoding resting state.
Journal: eLife
In common: Statistics and Machine Learning Toolbox, seaborn, scikit-learn, 3 other tools, 4 references

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.